Вы можете использовать любое изображение с установленным 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 файлы.
надеюсь, это поможет:)