#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