diff --git a/apps/templates/ip-updater-folder.yaml b/apps/templates/ip-updater-folder.yaml new file mode 100644 index 0000000..81c849a --- /dev/null +++ b/apps/templates/ip-updater-folder.yaml @@ -0,0 +1,22 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: ip-updater + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: https://github.com/rubenhensen/k8scd.git + targetRevision: HEAD + path: ip-updater + destination: + server: https://kubernetes.default.svc + namespace: ip-updater + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: + selfHeal: true + prune: true diff --git a/ip-updater/cronjob.yaml b/ip-updater/cronjob.yaml new file mode 100644 index 0000000..1a010de --- /dev/null +++ b/ip-updater/cronjob.yaml @@ -0,0 +1,39 @@ +apiVersion: batch/v1 +kind: CronJob +metadata: + name: ip-updater +spec: + schedule: "*/5 * * * *" + successfulJobsHistoryLimit: 1 + failedJobsHistoryLimit: 3 + jobTemplate: + spec: + template: + spec: + containers: + - name: ip-updater + image: alpine:3.19 + command: ["/bin/sh", "-c"] + args: + - | + apk add --no-cache openssh-client curl > /dev/null 2>&1 + cp /ssh-key/private_key /tmp/ssh_key + chmod 600 /tmp/ssh_key + IP=$(curl -s --max-time 10 https://api.ipify.org) + if [ -z "$IP" ]; then + echo "Failed to get external IP" + exit 1 + fi + echo "Current external IP: $IP" + ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \ + -i /tmp/ssh_key root@46.224.26.65 "$IP" + volumeMounts: + - name: ssh-key + mountPath: /ssh-key + readOnly: true + volumes: + - name: ssh-key + secret: + secretName: ip-updater-ssh-key + defaultMode: 0400 + restartPolicy: OnFailure diff --git a/ip-updater/external-secret.yaml b/ip-updater/external-secret.yaml new file mode 100644 index 0000000..3edee99 --- /dev/null +++ b/ip-updater/external-secret.yaml @@ -0,0 +1,17 @@ +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: ip-updater-ssh-key +spec: + secretStoreRef: + name: vault-backend + kind: ClusterSecretStore + refreshInterval: 15m + target: + name: ip-updater-ssh-key + creationPolicy: Owner + data: + - secretKey: private_key + remoteRef: + key: kv/ip-updater + property: ssh_private_key