Эҷоди автоматии асрор дар Helm

Эҷоди автоматии асрор дар Helm

гурӯҳ Kubernetes aaS аз Mail.ru нутки кутох тарчума кард дар бораи чӣ гуна ба таври худкор тавлиди асрори Helm ҳангоми навсозӣ. Дар зер матни муаллифи мақола - директори техникии Intoware, як ширкатест, ки ҳалли SaaS-ро таҳия мекунад.

Контейнерҳо хунук мебошанд. Дар аввал ман зидди контейнер будам (аз эътироф кардан шарм медорам), аммо ҳоло ман истифодаи ин технологияро комилан дастгирӣ мекунам. Агар шумо инро хонда истода бошед, шумо умедворед, ки дар баҳрҳои Докер бомуваффақият сайр кардаед, бартариҳои Кубернетесро дарк кардаед ва ҳаёти шуморо бо Ҳелм хеле осонтар кардед.

Бо вуҷуди ин, баъзе чизҳо бешубҳа душвортар аз он аст, ки онҳо бояд бошад.

Ҳангоми навсозӣ чӣ тавр ба таври худкор асрор тавлид кардан мумкин аст?

Сирри Kubernetes захираест, ки дорои ҷуфтҳои калид/арзишест, ки шумо мехоҳед дар коди худ истифода баред. Инҳо метавонанд сатрҳои пайвастшавӣ ба пойгоҳи додаҳо, паролҳои почтаи электронӣ ва ғайра бошанд. Бо истифода аз асрор, шумо байни код ва танзимот ҷудоии возеҳ эҷод мекунед, ки ба шумо имкон медиҳад ҷойгиркунии гуногунро бидуни тағир додани пойгоҳи код ба осонӣ танзим кунед.

Ҳолати умумӣ ин аст, ки ду модул бояд бо истифода аз калиди умумӣ муошират кунанд. Ҳеҷ кас берун аз кластер набояд ин калидро донад, зеро он барои муоширати як ба як дар дохили кластер пешбинӣ шудааст.

Сохтани асрор

Одатан, барои эҷод кардани сир дар Helm шумо бояд:

  • сирри файли арзишҳоро тавсиф кунед;
  • онро ҳангоми ҷойгиркунӣ аз нав муайян кунед;
  • ба он дар дохили ҷойгиркунӣ / pod муроҷиат кунед;
  • ... фоида!

Он одатан чунин ба назар мерасад:

apiVersion: v1
kind: Secret
metadata:
  name: my-super-awesome-api-key
type: Opaque
stringData:
  apiKey: {{ .Values.MyApiKeySecret | quote }}

Сирри оддии Kubernetes бо истифода аз арзишҳои аз values.yml

Аммо биёед бигӯед, ки шумо намехоҳед сирри худро дар файли арзишҳо нишон диҳед.

Вариантҳои зиёде мавҷуданд, ки ҳангоми ҷойгиркунӣ калиди муштаракро талаб мекунад, ки бояд ҳангоми насб тавлид карда шавад.

Дар мисоли муоширати модул ба модули боло, мубодилаи сирри берун аз ҷойгиркунӣ матлуб нест. Аз ин рӯ, хеле матлуб аст, ки Helm дорои механизмҳои ба таври худкор эҷод кардани сирри бидуни мушаххас кардани он аст.

Ҳукҳо

Қалмоқҳо ба шумо имкон медиҳанд, ки дар ҷараёни насб кодро дар ҷойҳои мушаххас иҷро кунед. Шояд кори конфигуратсия вуҷуд дошта бошад, ки онро пас аз насби аввал иҷро кардан лозим аст ё шояд пеш аз иҷрои ягон навсозӣ тозакунӣ анҷом дода шавад.

Барои ҳалли мушкилоти мо дар бораи илова кардани калид, ки ҳангоми насб тавлид мешавад, қалмоқҳои пеш аз насб беҳтаринанд. Аммо як чиз вуҷуд дорад: шумо наметавонед ба таври худкор як маротиба ҳангоми навсозӣ сирро тавлид кунед. Хокҳо дар ҳар як навсозӣ кор хоҳанд кард.

Агар шумо сирри худро тавлид карда бошед ва насби аввалини шумо ҳанӯз рух надода бошад, пас хонданро бас кунед, қалмоқчаи пеш аз насб барои шумо хуб кор мекунад.

Аммо агар сир як қисми навсозӣ бошад (шояд хусусияти наве, ки ҳангоми насб вуҷуд надошт), пас ин шармовар аст, ки шумо қалмоқе пеш аз насб эҷод карда наметавонед, ки танҳо як маротиба кор мекунад.

Функсияҳо

Функсияҳои Helm ба шумо имкон медиҳанд, ки ба скриптҳои густариши худ унсурҳои гуногуни скрипт илова кунед.

apiVersion: v1
kind: Secret
metadata:
  name: my-super-awesome-api-key
type: Opaque
stringData:
  apiKey: {{ uuidv4 | quote }} #Generate a new UUID and quote it

Ин мисол нишон медиҳад, ки арзиши сирри apiKey UUID-и нави ҳангоми насб тавлидшуда хоҳад буд.

Helm як китобхонаи воқеан васеъро дар бар мегирад, ки аз хусусиятҳои қолаби аҷиби GO ва китобхонаи хусусияти Sprig барои эҷоди ҷойгиркунии фармоишӣ истифода мебарад.

Функсияи ҷустуҷӯ

Дар Helm 3.1 илова карда шудааст Функсияи ҷустуҷӯ, ки ба шумо имкон медиҳад, ки ҷойгиркунии мавҷударо дархост кунед ва:

  • мавҷудияти захираҳоро тафтиш кунед;
  • арзиши захираи мавҷударо барои истифодаи минбаъда баргардонед.

Бо истифода аз ҳардуи ин қобилиятҳо, мо метавонем сирри якдафъаинаи динамикӣ тавлидшуда эҷод кунем!

# 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 }}

Ҳар вақте, ки навсозии нав ба сервер татбиқ карда мешавад, Helm ё арзиши нави махфиро тавлид мекунад (агар то ҳол махфӣ вуҷуд надошта бошад) ё арзиши мавҷударо дубора истифода мебарад.

Барори кор

Дар ин мавзӯъ боз чӣ хондан лозим аст:

  1. Се сатҳи автоматизатсия дар Кубернетес ва тарзи истифодаи самараноки онҳо.
  2. Кубернетес дар рӯҳияи роҳзанӣ бо қолаби амалӣ.
  3. Канали мо дар атрофи Kubernetes дар Telegram.

Манбаъ: will.com

Илова Эзоҳ