Development with Kubernetes
Daily Workflow
After Kubernetes is installed (Kubernetes for Development - Install)…
k3d list
k3d start k3s-default
kubectl get pods -w
When the pods are all running, then you can source .env.fish
e.g:
set folder (basename $PWD)
source venv-"$folder"/bin/activate.fish
set -x KUBECONFIG (k3d get-kubeconfig)
set -x DATABASE_HOST (kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
set -x DATABASE_NAME dev_app_"$folder"_"$USER"
set -x DATABASE_PASS "postgres"
set -x DATABASE_PORT (kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services kb-dev-db-postgresql)
set -x DATABASE_USER "postgres"
# for a project
# set -x DJANGO_SETTINGS_MODULE "settings.dev_$USER"
# for an app
# set -x DJANGO_SETTINGS_MODULE example_"$folder".dev_"$USER"
set -x REDIS_HOST (kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
set -x REDIS_PORT (kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services kb-redis-master)
source .private
echo "KUBECONFIG:" $KUBECONFIG
echo "DATABASE_NAME:" $DATABASE_NAME
echo "DATABASE_HOST:" $DATABASE_HOST
echo "DATABASE_PORT:" $DATABASE_PORT
echo "DATABASE_USER:" $DATABASE_USER
echo "REDIS_HOST:" $REDIS_HOST
echo "REDIS_PORT:" $REDIS_PORT
echo "DJANGO_SETTINGS_MODULE": $DJANGO_SETTINGS_MODULE
k3d
# find the names of the clusters on your workstation
k3d list
# start a cluster
k3d start k3s-default
Set the KUBECONFIG
environment variable:
# bash
export KUBECONFIG=$(k3d get-kubeconfig)
# fish
set -x KUBECONFIG (k3d get-kubeconfig)
Run kubectl
commands e.g:
kubectl cluster-info
Other Commands
# delete
k3d delete k3s-default
kubectl
ConfigMap:
kubectl get configmaps -o yaml
EndPoints:
kubectl get endpoints
Ingres:
kubectl get ing
Pod:
kubectl get pod
kubectl get pods --all-namespaces
kubectl describe pod
# a specific pod (get the name from the 'get pod' command)
kubectl describe pod postgres-78b64dc858-d8ktt
# logs for a pod (get the name from the 'get pod' command)
kubectl logs postgres-78b64dc858-d8ktt -f