Skip to main content

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