infrapuzzle/k8s/README.md

2.6 KiB

k8s

This folder holds all the services required for my private infrastructure. Following contraints apply:

  • Order of implementation is top down.
  • Every namespace has a subfolder within this subdirectory.
  • helm3

namespaces

namespaces="flux cert-manager nginx-ingress infrapuzzle kuard auth nextcloud datalab"
for i in $( echo $NAMESPACES ) ; do
  k create ns $i
done

helm-operator

As I use helm extensively, using the helm-operator was a logical step. See documentation for installation.

$ helm repo add fluxcd https://charts.fluxcd.io
$ helm repo update
$ kubectl apply -f https://raw.githubusercontent.com/fluxcd/helm-operator/master/deploy/crds.yaml
$ helm upgrade -i helm-operator fluxcd/helm-operator \
    --namespace flux \
    --set helm.versions=v3

ingress-controller

Apply with helm-operator:

$ kubectl apply -f nginx-ingress/ingress.yaml

cert-manager

Apply with helm-operator:

$ kubectl apply -f https://raw.githubusercontent.com/jetstack/cert-manager/master/deploy/manifests/00-crds.yaml
$ kubectl apply -f cert-manager/cert-manager.yaml
$ kubectl apply -f cert-manager/staging-issuer.yaml
$ kubectl apply -f cert-manager/production-issuer.yaml

To test all this you may use the kuaard demo project:

$ kubectl apply -f kuard
# checkout: https://kuard.haumdaucher.de
$ kubectl delete -f kuard

auth

Including:

  • openLDAP
  • phpldapadmin
  • ldap self service
  • dex

nextcloud

Install with helm


Migate

Backup

Add private docker registry

Current state: Registry of hub.moritzgraf.de:5000 is used.

Create credentials secret according to docu:

namespaces="datalab"
for i in $( echo $namespaces ) ; do
  kubectl create secret docker-registry hub-moritzgraf-de \
    -n $i \
    --docker-server=hub.moritzgraf.de:5000 \
    --docker-username=moritz \
    --docker-password='xxx' \
    --docker-email=moritz@moritzgraf.de \
    --dry-run -o yaml > ./${i}/docker-pull.yaml.secret
done
# apply
for i in $( echo $namespaces ) ; do
  kubectl apply -f ${i}/docker-pull.yaml.secret
done

Add mopbot & corona & corona-api

kubectl apply -f datalab/mopbot.yaml