auto add cert

This commit is contained in:
Bast 2026-10-31 19:05:52 -05:00
parent 493983bac9
commit 8ce5ba4214
3 changed files with 42 additions and 3 deletions

View file

@ -98,3 +98,18 @@ services:
- ./registries.yaml:/etc/rancher/k3s/registries.yaml:ro
command: server --disable traefik --egress-selector-mode=disabled
restart: always
# 5. AUTOMATISCHER KUBECONFIG-SYNCER (DIE BEST-PRACTICE-RETTUNG)
sync-kubeconfig:
image: alpine:latest
container_name: sync-kubeconfig
networks:
- test-net
volumes:
- ./kind_kubeconfig:/output:ro
- ./sync_kubeconfig.sh:/sync.sh:ro
entrypoint: ["/bin/sh", "-c"]
command: ["apk add --no-cache curl && /sync.sh"]
depends_on:
- k3s-cluster
- forgejo

View file

@ -1,7 +1,7 @@
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzT1RNME9EZ3hPVEV3SGhjTk1qWXhNRE14TWpNd09UVXhXaGNOTXpZeE1ESTRNak13T1RVeApXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzT1RNME9EZ3hPVEV3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFTNVFMeE1MdFFQdXUwb2pWTGtUY3Y5NzRxTnJwWHJQWjg2eVhaSks4WU8KT05mNHdqRUNRdzh0YXowVXZMYVdaNDBHcXBuSnppQW9xMUdyUXV5Z21JK2JvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVStrVWJ2dlkrQ3JYQm5NdkxWa3RaCnQvYlNyZ013Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnUmxjS3VqTitoZWo4MVdwZmJkSnB5eEJydldvRVhUTXYKZVdjdElnMFlEUUVDSVFEVjNzV29YWm82WXo0NC94UHZMamlkNWhnRFNFem5XRkJ4bStoTkp5V1lnZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkakNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUzT1RNME9UQXlPVFV3SGhjTk1qWXhNRE14TWpNME5EVTFXaGNOTXpZeE1ESTRNak0wTkRVMQpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUzT1RNME9UQXlPVFV3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFTbmxTYkxBeFRzWXZOTktka21ldHBhaG54aGV3ajJPT25ZelZCbjJuRzkKMXB4SlNoS01HbDF2UklmR084M1dvTG1JdExBNEYyaGVHcUsyQVl3c2hpTUhvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVTBIbENUYXNkbGFEbmVLNUthM000CitOdXQ1YXN3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdSQUlnUER1MTN1N2Y2TjA0WXpnR3dBM0gxcWZ4enpRS2d2YVoKMFdSNnMxNDBnUmtDSUMxUm5sNWRvbmVMWlFPZTVabG5RVjE0MHMyc3dtSzk4ZXo0TjJqQWJmM1cKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
server: https://127.0.0.1:6443
name: default
contexts:
@ -15,5 +15,5 @@ preferences: {}
users:
- name: default
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrVENDQVRlZ0F3SUJBZ0lJS1NoQlVuVHlsaUF3Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOemt6TkRnNE1Ua3hNQjRYRFRJMk1UQXpNVEl6TURrMU1Wb1hEVEkzTVRBegpNVEl6TURrMU1Wb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJPejk3SW0ybWFONGhIdDMKQTZpckVwSjZDeFRyUDN1cSs1TllCMCtCWkJXSXNXMkFybUMyajlYSmhsUzV4cVZsVGVmUmZHWW4vVGQ0bkQrSwpDTFNNSVZDalNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCUk52eHFPMjVqNmdyUzNUbXl1d3ZnNzFkZEthREFLQmdncWhrak9QUVFEQWdOSUFEQkYKQWlCQzRjek1qNTUxcVd4M2ZqbUkvT3huRzhUM3BzR3RET2hpdFh0ZGVMNkNsUUloQUlCSE5UWFpYV0xFWjEzNQpXc0lWM0V1RmZobUtZSWc1RGQ5d0JTcFNXdFNjCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdFkyeHAKWlc1MExXTmhRREUzT1RNME9EZ3hPVEV3SGhjTk1qWXhNRE14TWpNd09UVXhXaGNOTXpZeE1ESTRNak13T1RVeApXakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwWlc1MExXTmhRREUzT1RNME9EZ3hPVEV3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFSbmUxUWFnamh5Qm9PeHBGbzRNM3RvaGowbStPU2VLc0pDUDMzQjFKWGIKY3JGb1pwTnRneGRNM3BKWVY1OEJJejdpNHRYalB0SE81SzFXY3NDUkpLU1dvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVVRiOGFqdHVZK29LMHQwNXNyc0w0Ck85WFhTbWd3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnZVFVTDhBTVl1QlZQdFN0WG1LL0dZVFFZVG13SGwyM1oKbEtFSmxDZzBCWjRDSVFEK1l0L1Z0N1RUUkVRQnI2UjlESFNOR0o3MExOQUM3OXpjVTZJalRPRjJvUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
client-key-data: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUZhaHNEb0plNjd5NUVBdWMyVXpKNHB2UjVyM2VaSUNKVzh0YjhKVUVXeFJvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFN1Azc2liYVpvM2lFZTNjRHFLc1Nrbm9MRk9zL2U2cjdrMWdIVDRGa0ZZaXhiWUN1WUxhUAoxY21HVkxuR3BXVk41OUY4WmlmOU4zaWNQNG9JdEl3aFVBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrVENDQVRlZ0F3SUJBZ0lJUktjdTNaVStITk13Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOemt6TkRrd01qazFNQjRYRFRJMk1UQXpNVEl6TkRRMU5Wb1hEVEkzTVRBegpNVEl6TkRRMU5Wb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJFdU9FVEJwV2pGNmwreEwKblcyMnlHcmZZSXdJb0ZwZVN6Tm42M1E1YzNJemRFSUJLV1J1NXp5SG4ydG1oMUJURWNoUVFidkM5ZnRqWWVGNgpxaUpxL0l1alNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCUmV2bHI4ZHFEZFh3ZklPb0gzQUc2Tm9tcTBwREFLQmdncWhrak9QUVFEQWdOSUFEQkYKQWlFQW15V0xlS0hFYmx1NE1TWVpVUWhjTVpibVQwcTk0L2RRUk5LYmRYQUM5VE1DSUNJenlYSS9uZkpadndNWAptay83V0pUdVFMQ0xSaFNtWjRNWUl6emsvcHp1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJlRENDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdFkyeHAKWlc1MExXTmhRREUzT1RNME9UQXlPVFV3SGhjTk1qWXhNRE14TWpNME5EVTFXaGNOTXpZeE1ESTRNak0wTkRVMQpXakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwWlc1MExXTmhRREUzT1RNME9UQXlPVFV3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFUL0w2aU5rbjI4c2lhcm9CVHFQbFR0d1pTZGlrTWlrdDZOV1djUWJGT0oKUEYwUTBjU01IT2JjTjhKZGRtRDNJUmVycldBaHhxa1NId1NyV0pXRmJvMWNvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVVhyNWEvSGFnM1Y4SHlEcUI5d0J1CmphSnF0S1F3Q2dZSUtvWkl6ajBFQXdJRFNRQXdSZ0loQUptWTA3MS8wM0Nqd2JMK1ZtRVRTcFJtcTFvcHJGTHAKSWRMN1A2cm9iYk16QWlFQW95TG1hZjZOTUswU1dDWGFIZUYwa0cwY0g0RndjQk1leE9rUGhKNWh6T3M9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
client-key-data: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUJRbnhwZzE5bVN3Q3VoOTZCb0JNTjhTRzRuQ3ZISXlWRnNnZjd3OE1lYldvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFUzQ0Uk1HbGFNWHFYN0V1ZGJiYklhdDlnakFpZ1dsNUxNMmZyZERsemNqTjBRZ0VwWkc3bgpQSWVmYTJhSFVGTVJ5RkJCdThMMSsyTmg0WHFxSW1yOGl3PT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=

24
sync_kubeconfig.sh Executable file
View file

@ -0,0 +1,24 @@
#!/bin/sh
echo "Warte auf die frische Kubeconfig von K3s..."
while [ ! -f /output/config ]; do sleep 1; done
sleep 2 # Sicherstellen, dass K3s fertig geschrieben hat
echo "Aktualisiere das Forgejo-Secret KUBECONFIG_DATA via API..."
# Liest die Datei ein, maskiert Backslashes und doppelte Anführungszeichen,
# und fügt am Ende jeder Zeile ein echtes \n für den JSON-String ein.
ESCAPED_KUBE=$(awk '{
gsub(/\\/, "\\\\");
gsub(/"/, "\\\"");
printf "%s\\n", $0
}' /output/config)
# Schiesst das absolut valide JSON-Paket an die Forgejo-API
curl -s -X PUT "http://forgejo:3000/api/v1/repos/bast/my-app-sandbox/actions/secrets/KUBECONFIG_DATA" \
-H "accept: application/json" \
-H "Authorization: token eb834b313f4ffe99bc507abc08c46eb74913707a" \
-H "Content-Type: application/json" \
-d "{\"data\": \"$ESCAPED_KUBE\"}"
echo ""
echo "Secret erfolgreich synchronisiert!"