Alfred Sabitzer

K8s Applications mit MicroK8S auf Raspberry PI


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

      #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

      docker_registry="docker.registry:5000"

      # Prüfung ob gesetzt, sonst liefert die Shell hier eine Fehlermeldung

      string="${1}"

      #echo "${string}"

      prefix=":"

      suffix=""

      xrepo=${string%"$prefix"*}

      #echo "${xrepo}"

      xtag=${string#"$xrepo$prefix"}

      #echo "${xtag}"

      xtag=${xtag%"$suffix"*}

      #echo "${xtag}"

      tags=$(curl -sSL "http://${docker_registry}/v2/${xrepo}/tags/list" | jq -r '.tags[]')

      for tag in $tags; do

       if [ "${tag} " = "${xtag} " ] ;

       then

       echo "Lösche "$xrepo:$tag

       curl -v -k -X DELETE "http://${docker_registry}/v2/${xrepo}/manifests/$(

       curl -k -s -I \

       -H "Accept: application/vnd.docker.distribution.manifest.v2+json" \

       "http://${docker_registry}/v2/${xrepo}/manifests/${xtag}" \

       | awk '$1 == "Docker-Content-Digest:" { print $2 }' \

       | tr -d $'\r' \

       )"

       fi

      done

      #

      Dieses Skript löscht einen angegeben tag, wenn er gefunden wird.

      Ein typischer Löschprozess sieht dann so aus:

      alfred@bureau:~$ '/home/alfred/svn/trunk/k8s/dev/registry_list.sh'

      chrony

       chrony:latest

       chrony:20211123-1273

       chrony:20211123-1275

      hello-world

       hello-world:20211003

      pgmaster

       pgmaster:20211125-1327

       pgmaster:20211125-1337

       pgmaster:20211125-1340

       pgmaster:20211125-1339

       pgmaster:latest

       pgmaster:20211125-1345

       pgmaster:20211125-1343

       pgmaster:20211125-1334

       pgmaster:20211125-1336

       pgmaster:20211125-1341

      webdefault

       webdefault:20211123-1292

       webdefault:20211123-1293

      webserver

       webserver:20211124-1329

       webserver:20211124-1321

       webserver:20211124-1315

       webserver:20211124-1331

       webserver:20211124-1305

       webserver:20211125-1333

       webserver:20211124-1324

       webserver:latest

       webserver:20211125-1345

       webserver:20211124-1306

       webserver:20211124-1319

       webserver:20211123-1305

       webserver:20211124-1328

       webserver:20211124-1312

       webserver:20211124-1307

       webserver:20211124-1327

       webserver:20211125-1344

       webserver:20211124-1330

       webserver:20211124-1314

       webserver:20211124-1320

       webserver:20211124-1317

       webserver:20211124-1332

      alfred@bureau:~$ '/home/alfred/svn/trunk/k8s/dev/registry_delete.sh' webdefault:20211123-1293

      Lösche webdefault:20211123-1293

      * Trying 192.168.0.213:5000...

      * Connected to docker.registry (192.168.0.213) port 5000 (#0)

      > DELETE /v2/webdefault/manifests/sha256:ede78ca033eba1314667d5c6ced6a279833908d162ffe9103d7d1af42d53b6c7 HTTP/1.1

      > Host: docker.registry:5000

      > User-Agent: curl/7.74.0

      > Accept: */*

      >

      * Mark bundle as not supporting multiuse

      < HTTP/1.1 202 Accepted

      < Docker-Distribution-Api-Version: registry/2.0

      < X-Content-Type-Options: nosniff

      < Date: Thu, 25 Nov 2021 20:55:23 GMT

      < Content-Length: 0

      <

      * Connection #0 to host docker.registry left intact

      alfred@bureau:~$ '/home/alfred/svn/trunk/k8s/dev/registry_delete.sh' webdefault:20211123-1293

      alfred@bureau:~$

      Mit diesen beiden Skripts kann man sich die Images anzeigen lassen, und alte Images löschen.

      Zertifikate und LetsEncrypt

      Inspiration:

       https://suda.pl/5-minute-home-server-with/

       https://faun.pub/wildcard-k8s-4998173b16c8

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

      https://forum.netcup.de/netcup-intern/technik/11841-let-s-encrypt-wildcard-zertifikate-via-certbot/

      Um den Cluster vernünftig betreiben zu können braucht es Zertificate.

      Darum habe ich den Certificate-Manager installiert.

      #!/bin/bash

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

      # $Date: 2021-10-21 21:40:29 +0200 (Do, 21. Okt 2021) $

      # $Revision: 659 $

      # $Author: alfred $

      # $HeadURL: https://monitoring.slainte.at/svn/slainte/trunk/k8s/k8s/K5_certmanager.sh $

      # $Id: K5_certmanager.sh 659 2021-10-21 19:40:29Z alfred $

      #

      # cert-manager

      #

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

      #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