Барои ҳалли мушкилоти мо дар бораи илова кардани калид, ки ҳангоми насб тавлид мешавад, қалмоқҳои пеш аз насб беҳтаринанд. Аммо як чиз вуҷуд дорад: шумо наметавонед ба таври худкор як маротиба ҳангоми навсозӣ сирро тавлид кунед. Хокҳо дар ҳар як навсозӣ кор хоҳанд кард.
Агар шумо сирри худро тавлид карда бошед ва насби аввалини шумо ҳанӯз рух надода бошад, пас хонданро бас кунед, қалмоқчаи пеш аз насб барои шумо хуб кор мекунад.
Аммо агар сир як қисми навсозӣ бошад (шояд хусусияти наве, ки ҳангоми насб вуҷуд надошт), пас ин шармовар аст, ки шумо қалмоқе пеш аз насб эҷод карда наметавонед, ки танҳо як маротиба кор мекунад.
Helm як китобхонаи воқеан васеъро дар бар мегирад, ки аз хусусиятҳои қолаби аҷиби GO ва китобхонаи хусусияти Sprig барои эҷоди ҷойгиркунии фармоишӣ истифода мебарад.
Бо истифода аз ҳардуи ин қобилиятҳо, мо метавонем сирри якдафъаинаи динамикӣ тавлидшуда эҷод кунем!
# 1. Запросить существование секрета и вернуть в переменной $secret
{{- $secret := (lookup "v1" "Secret" .Release.Namespace "some-awesome-secret" -}}
apiVersion: v1
kind: Secret
metadata:
name: some-awesome-secret
type: Opaque
# 2. Если секрет существует, взять его значение как apiKey (секрет использует кодирование Base64, так что используйте ключ "data")
{{ if $secret -}}
data:
apiKey: {{ $secret.data.apiKey }}
# 3. Если секрет не существует — создать его (в этот раз используйте "stringData", так как будет обычное значение)!
{{ else -}}
stringData:
apiKey: {{ uuidv4 | quote }}
{{ end }}