Bootstrap
Bootstrap chart for cluster initialization. Deploys all required infrastructure components in a single Helm release.
Requirements
- 1-3 nodes
- External DNS for ingress access
- Internet access
Components
The bootstrap umbrella chart (charts/bootstrap/) includes:
| Component | Description |
|---|---|
| Cilium | CNI for networking |
| ingress-nginx | Ingress controller |
| cert-manager | TLS certificate management |
| sealed-secrets | Encrypted secrets for GitOps |
| ArgoCD | GitOps continuous delivery |
| OpenEBS | Container storage (hostpath) |
Additional resources created:
- ClusterIssuer (Let's Encrypt)
- StorageClass (local-storage)
Kubernetes
Install k0s as the Kubernetes distribution:
curl -sSf https://get.k0s.sh | sudo sh
sudo k0s install controller --enable-worker --no-taints --config ./k0s.yaml
sudo k0s start
Verify and get kubeconfig:
sudo k0s status
k0s kubeconfig admin create > ~/.kube/config
Bootstrap Installation
cd charts/bootstrap
# Download dependencies
helm dependency update
# Review what will be installed
helm template bootstrap . --namespace bootstrap | less
# Install
helm upgrade -i bootstrap . --namespace bootstrap --create-namespace
Sealed Secrets
Sealed Secrets enables GitOps management of secrets using asymmetric encryption.
Usage
# Create a secret (do not commit)
kubectl create secret generic my-secret \
--from-literal=password=supersecret \
--dry-run=client -o yaml > plaintext.yaml
# Seal it
kubeseal < plaintext.yaml > sealed-secret.yaml
# Delete plaintext
rm plaintext.yaml
# Apply sealed secret
kubectl apply -f sealed-secret.yaml
ArgoCD
Available at https://argo.turbo.weystrom.dev
Get initial admin password:
kubectl -n bootstrap get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
Configuration
Edit charts/bootstrap/values.yaml to customize components. Each subchart is configured under its own key:
cilium:
enabled: true
ingress-nginx:
enabled: true
controller:
service:
externalIPs:
- 1.2.3.4
cert-manager:
enabled: true
# ... etc
To disable a component, set enabled: false.