Local Cluster¶
If you don't have access to a remote Kubernetes cluster, you can prototype locally using minikube.
Dependencies¶
A minimal setup compatible with the built-in Helm chart can be created as follows:
minikube start --container-runtime=containerd --addons=gvisor
kubectl apply -f - <<EOF
apiVersion: node.k8s.io/v1
kind: RuntimeClass
metadata:
name: runc
handler: runc
EOF
kubectl apply -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-csi
provisioner: k8s.io/minikube-hostpath
reclaimPolicy: Delete
volumeBindingMode: Immediate
EOF
cilium install
cilium status --wait
The runc
RuntimeClass
is required in order to specify a runtimeClassName
of runc
in your values.yaml
files (even if runc is the cluster's default).
You can see the available container runtime class names with:
kubectl get runtimeclass
The nfs-csi
StorageClass
is required in order to use the volumes
functionality
offered by the built-in Helm chart. It actually uses the minikube-hostpath
provisioner.
Warning
This is an example setup which is appropriate for development work, but should not be used long term or in a production setting. For long-term use you should use a larger, more resilient cluster with separate node groups for critical services.
If you wish to use images built locally or from a private registry, the quickest approach may be to manually load them into minikube. There are other methods in the minikube documentation.
minikube image load <image-name>:<tag>