Вы можете использовать любое изображение с установленным kubectl, чтобы удалить его с помощью хука предварительного удаления, например, @ ignacio-millán. Для этого вам также понадобится роль для запуска этого задания с привилегиями, чтобы оно могло удалять секреты.
Или вы можете просто использовать REST API K8s и скрутить его так:
apiVersion: batch/v1
kind: Job
metadata:
labels:
annotations:
"helm.sh/hook": pre-delete # << run before delete (we still need the role)
...
spec:
template:
spec:
serviceAccountName: your-privileged-serviceaccount
automountServiceAccountToken: true
# this will mount var/run/secrets/kubernetes.io/serviceaccount/token
containers:
- name: pre-delete
image: "appropriate/curl" # alpine + curl (3 MB)
env:
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
command:
- "/bin/sh"
- "-ec"
- |
curl -s -X DELETE -k https://kubernetes.default.svc/api/v1/namespaces/${NAMESPACE}/secrets/your-secret-name-nere \
-H "Authorization: Bearer $( cat /var/run/secrets/kubernetes.io/serviceaccount/token )" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d "{ \"kind\": \"Secret\", \"apiVersion\": \"v1\", \"metadata\": { \"name\": \"your-secret-name-nere\", \"namespace\": \"${NAMESPACE}\" } }" > /dev/null
{{- end }}
Нам нужно «RoleBind» ServiceAccount с ролью (или clusterRole). Используйте helm.sh/hook-weight для заказа всего этого. у роли должно быть что-то вроде этого:
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role # Roles works only in namespace vs ClusterRole works in all the cluster (warning!)
metadata:
namespace: {{ .Release.Namespace }}
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-weight": "20"
"helm.sh/hook-delete-policy": before-hook-creation
labels:
....
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list", "create", "update"]
Обратите внимание, что мы пересылаем вывод curl в null с помощью> / dev / null, мы не хотим, чтобы это было в журналах. ;) прокомментируйте это и "helm.sh/hook-delete-policy" для отладки.
Здесь ведется работа, и здесь применяется что-то вроде этого:
https://github.com/Flag5/consul-helm/tree/tls-encryption/templates см. файлы tls - *. yaml.
Надеюсь, это поможет :)
person
NicoKowe
schedule
02.08.2019