infrapuzzle/k8s
Moritz Graf 3bd9b3e8e7 Adding secrets for registry 2020-04-10 00:45:20 +02:00
..
auth Adding # status: notices 2020-04-05 19:40:18 +02:00
cert-manager Adding # status: notices 2020-04-05 19:40:18 +02:00
datalab Complete migration of corona & corona-ap 2020-04-09 23:25:50 +02:00
development Adding secrets for registry 2020-04-10 00:45:20 +02:00
kuard Adding current working version 2020-04-05 14:38:30 +02:00
nextcloud Adding # status: notices 2020-04-05 19:40:18 +02:00
nginx-ingress Adding # status: notices 2020-04-05 19:40:18 +02:00
troubleshoot Adding # status: notices 2020-04-05 19:40:18 +02:00
web Adding secrets for registry 2020-04-10 00:45:20 +02:00
README.md Adding secrets for registry 2020-04-10 00:45:20 +02:00

README.md

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

Operations

Cleanup Error pods.

kubectl get pods | grep Error | cut -d' ' -f 1 | xargs kubectl delete pod

Deployment

namespaces

namespaces="flux cert-manager nginx-ingress infrapuzzle kuard auth nextcloud datalab web development"
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 secret base64 encoded
USER="moritz"
PASSWORD="password"
docker run --entrypoint htpasswd --rm registry:2 -Bbn admin admin123 | base64
# use the output and put it in development/registry.secret.yaml
kubectl apply -f development/registry.yaml

after

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/

Web

kubectl apply -f web/