add temporary credential recovery job
This commit is contained in:
@@ -0,0 +1,31 @@
|
|||||||
|
# TEMPORARY disaster-recovery application. This creates a short-lived
|
||||||
|
# administrative ServiceAccount so a lost kubeconfig can be replaced through
|
||||||
|
# the still-working Argo CD control plane. Remove this file and apps/recovery/
|
||||||
|
# immediately after access is restored; the finalizer then deletes everything.
|
||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: credential-recovery
|
||||||
|
namespace: argocd
|
||||||
|
finalizers:
|
||||||
|
# Cascading deletion is essential here: it removes the temporary
|
||||||
|
# cluster-admin binding rather than leaving privileged access behind.
|
||||||
|
- resources-finalizer.argocd.argoproj.io
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
|
||||||
|
source:
|
||||||
|
repoURL: https://tea.ahmza.com/ahmza.com/k8s-starter-pack.git
|
||||||
|
targetRevision: main
|
||||||
|
path: apps/recovery
|
||||||
|
|
||||||
|
destination:
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
namespace: credential-recovery
|
||||||
|
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
# TEMPORARY: this binding exists only long enough to replace the lost
|
||||||
|
# administrator kubeconfig. The recovery Application's cascading finalizer
|
||||||
|
# removes it when apps/recovery.yaml is deleted from Git.
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: credential-recovery-admin
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: cluster-admin
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: credential-recovery
|
||||||
|
namespace: credential-recovery
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
---
|
||||||
|
# TEMPORARY: emit a one-hour ServiceAccount kubeconfig into this Job's logs.
|
||||||
|
# Argo CD's authenticated log API lets the administrator capture it directly
|
||||||
|
# into a mode-0600 local file without committing the credential to Git.
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: emit-recovery-kubeconfig
|
||||||
|
namespace: credential-recovery
|
||||||
|
spec:
|
||||||
|
backoffLimit: 0
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: credential-recovery
|
||||||
|
spec:
|
||||||
|
restartPolicy: Never
|
||||||
|
serviceAccountName: credential-recovery
|
||||||
|
containers:
|
||||||
|
- name: emit-kubeconfig
|
||||||
|
image: busybox:1.37.0
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -eu
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
serviceaccount_dir=/var/run/secrets/kubernetes.io/serviceaccount
|
||||||
|
ca_data="$(base64 "$serviceaccount_dir/ca.crt" | tr -d '\n')"
|
||||||
|
token="$(cat "$serviceaccount_dir/token")"
|
||||||
|
cat <<EOF
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Config
|
||||||
|
clusters:
|
||||||
|
- name: gitops-starter
|
||||||
|
cluster:
|
||||||
|
server: https://10.10.10.210:6443
|
||||||
|
certificate-authority-data: ${ca_data}
|
||||||
|
contexts:
|
||||||
|
- name: recovery-admin@gitops-starter
|
||||||
|
context:
|
||||||
|
cluster: gitops-starter
|
||||||
|
user: recovery-admin
|
||||||
|
current-context: recovery-admin@gitops-starter
|
||||||
|
users:
|
||||||
|
- name: recovery-admin
|
||||||
|
user:
|
||||||
|
token: ${token}
|
||||||
|
EOF
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 5m
|
||||||
|
memory: 8Mi
|
||||||
|
limits:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 32Mi
|
||||||
|
securityContext:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 65534
|
||||||
|
seccompProfile:
|
||||||
|
type: RuntimeDefault
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: credential-recovery
|
||||||
|
namespace: credential-recovery
|
||||||
Reference in New Issue
Block a user