Alfred Sabitzer

K8s Applications mit MicroK8S auf Raspberry PI


Скачать книгу

      Bzw.

      #!/bin/bash

      ############################################################################################

      # $Date: 2021-11-23 18:03:25 +0100 (Di, 23. Nov 2021) $

      # $Revision: 1272 $

      # $Author: alfred $

      # $HeadURL: https://monitoring.slainte.at/svn/slainte/trunk/k8s/k8s_app/namespace/default_env.sh $

      # $Id: default_env.sh 1272 2021-11-23 17:03:25Z alfred $

      #

      # Bauen und deployen

      #

      ############################################################################################

      #shopt -o -s errexit #—Terminates the shell script if a command returns an error code.

      shopt -o -s xtrace #—Displays each command before it’s executed.

      shopt -o -s nounset #-No Variables without definition

      export secretName="default-k8s-slainte-at-tls"

      export host="default.k8s.slainte.at"

      export namespace_comment="Namespace zum Testen"

      # export cluster_issuer="letsencrypt-staging"

      # Auch hier die Prod, wegen HTTP Strict Transport Security (HSTS)

      export cluster_issuer="letsencrypt-prod"

      export docker_registry="docker.registry:5000"

      #

      Das sieht dann im Ingress wie folgt aus:

      ---

      # Yaml für ${image}:${tag}

      apiVersion: networking.k8s.io/v1

      kind: Ingress

      metadata:

       name: ${image}-routes

       namespace: ${namespace}

       annotations:

       kubernetes.io/ingress.class: public

       cert-manager.io/cluster-issuer: "${cluster_issuer}"

      # https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/

       nginx.ingress.kubernetes.io/rewrite-target: /$2

       nginx.ingress.kubernetes.io/ssl-redirect: "true"

       nginx.ingress.kubernetes.io/ssl-passthrough: "true"

       nginx.ingress.kubernetes.io/force-ssl-redirect: "true"

       nginx.ingress.kubernetes.io/ssl-temporary-redirect: "false"

       nginx.ingress.kubernetes.io/secure-backends: "true"

       nginx.ingress.kubernetes.io/ssl-proxy-headers: "X-Forwarded-Proto: https"

       nginx.ingress.kubernetes.io/proxy-body-size: 0m

       nginx.ingress.kubernetes.io/proxy-buffering: "off"

      # https://github.com/nginxinc/kubernetes-ingress/tree/v1.12.0/examples/ssl-services

       nginx.ingress.kubernetes.io/ssl-services: "${image}-svc"

       nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

      spec:

       tls:

       - hosts:

       - ${host}

       secretName: ${secretName}

       rules:

       - host: ${host}

       http:

       paths: # https://github.com/google/re2/wiki/Syntax, https://www.regular-expressions.info/refcapture.html

       - path: /${image}(/|$)(.*)

       pathType: Prefix

       backend:

       service:

       name: ${image}-svc

       port:

       number: 443

       defaultBackend:

       service:

       name: default-svc

       port:

       number: 80

      ---

      Man könnte aber auch mit Wildcard-Zertifikaten arbeiten. Ist aber in unserem Falle ein wenig übertrieben. Nachdem es ja eh für jeden Namespace und jeden host einen Ingress braucht, kann man dafür auch ein eigenes Zertifikat anlegen lassen.

      Entwicklungsumgebung

      Inspiration:

       https://pimylifeup.com/ubuntu-install-docker/

       https://brjapon.medium.com/setting-up-ubuntu-20-04-arm-64-under-raspberry-pi-4-970654d12696

       https://microk8s.io/docs/registry-built-in

      https://microk8s.io/docs/registry-private

       https://github.com/docker-library/hello-world

      https://www.freecodecamp.org/news/how-to-remove-images-in-docker/

       https://gobyexample.com/hello-world

       https://linuxconfig.org/how-to-install-go-on-ubuntu-20-04-focal-fossa-linux

       https://forums.docker.com/t/docker-private-registry-how-to-list-all-images/21136/2

       https://github.com/fraunhoferfokus/deckschrubber

      https://collabnix.github.io/kubetools/

      Um das Source-Repository nutzen zu können brauchen wir eine Entwicklungsumgebung. Dafür benutzen wir unseren Entwicklungs-Raspbery PI.

      OEBPS/images/image0010.jpg Abbildung 8: Gesamtsystem

      Dieser Entwicklungs-Raspberry ist ein Raspberry 4 mit 8GB RAM und einer 120 GB SDRAM Karte. Zusätzlich gibt es noch eine 1TB-USB-Platte für all die Backups.

      Auf diesem Rechner ist Docker installiert.

      alfred@monitoring:~$ docker version

      Client:

       Version: 20.10.7

       API version: 1.41

       Go version: go1.13.8

       Git commit: 20.10.7-0ubuntu1~20.04.1

       Built: Wed Aug 4 22:53:01 2021

       OS/Arch: linux/arm64

       Context: default

       Experimental: true

      Server:

       Engine:

       Version: 20.10.7

       API version: 1.41 (minimum version 1.12)