Stack Customization Reference
This document provides comprehensive guidance on customizing KubeZero stacks to meet your specific requirements.
Stack Configuration
Base Stack Structure
All KubeZero stacks follow a consistent structure:
apiVersion: kubezero.io/v1
kind: Stack
metadata:
name: custom-stack
spec:
description: "Custom stack for my environment"
modules:
- name: argo-cd
version: "2.8.0"
enabled: true
- name: cert-manager
version: "1.13.0"
enabled: true
Module Configuration
Enabling/Disabling Modules
spec:
modules:
- name: ingress-nginx
enabled: true
config:
replicas: 3
resources:
requests:
cpu: 100m
memory: 128Mi
Custom Module Parameters
spec:
modules:
- name: cert-manager
config:
issuers:
- name: letsencrypt-prod
server: https://acme-v02.api.letsencrypt.org/directory
email: [email protected]
Environment-Specific Customization
Development Environment
apiVersion: kubezero.io/v1
kind: Stack
metadata:
name: dev-stack
spec:
environment: development
modules:
- name: argo-cd
config:
server:
insecure: true
dex:
enabled: false
Production Environment
apiVersion: kubezero.io/v1
kind: Stack
metadata:
name: prod-stack
spec:
environment: production
modules:
- name: argo-cd
config:
server:
replicas: 3
redis:
ha:
enabled: true
Advanced Customization
Custom Resource Definitions
Add your own CRDs to a stack:
spec:
customResources:
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: myresources.example.com
spec:
group: example.com
versions:
- name: v1
served: true
storage: true
Helm Value Overrides
Override Helm chart values:
spec:
modules:
- name: ingress-nginx
helm:
values:
controller:
service:
type: LoadBalancer
metrics:
enabled: true
Kustomize Patches
Apply Kustomize patches:
spec:
modules:
- name: cert-manager
kustomize:
patches:
- target:
kind: Deployment
name: cert-manager
patch: |
- op: replace
path: /spec/replicas
value: 3
Stack Inheritance
Base Stack Definition
apiVersion: kubezero.io/v1
kind: Stack
metadata:
name: base-stack
spec:
modules:
- name: argo-cd
- name: cert-manager
- name: external-dns
Derived Stack
apiVersion: kubezero.io/v1
kind: Stack
metadata:
name: extended-stack
spec:
extends: base-stack
modules:
- name: monitoring
enabled: true
- name: logging
enabled: true
Validation and Testing
Stack Validation
spec:
validation:
enabled: true
rules:
- name: resource-limits
description: "Ensure all containers have resource limits"
query: "spec.containers[*].resources.limits"
Dry Run Mode
Test stack configurations without applying:
kubectl apply --dry-run=server -f my-stack.yaml