Auto-generation sa mga sekreto sa Helm

Auto-generation sa mga sekreto sa Helm

team Kubernetes aaS gikan sa Mail.ru gihubad ang usa ka mubo nga sulat mahitungod sa kon sa unsang paagi sa awtomatikong pagmugna Helm sekreto sa diha nga update. Ang mosunod usa ka teksto gikan sa tagsulat sa artikulo - teknikal nga direktor sa Intoware, usa ka kompanya nga nagpalambo sa mga solusyon sa SaaS.

Bugnaw ang mga sudlanan. Sa una anti-container ako (naulaw ko nga moangkon niini), apan karon hingpit nakong gisuportahan ang paggamit niini nga teknolohiya. Kung gibasa nimo kini, hinaut nga malampuson nimo ang pag-navigate sa kadagatan sa Docker, nahibal-an ang mga benepisyo sa Kubernetes, ug gipasayon ​​ang imong kinabuhi sa Helm.

Bisan pa, ang pipila ka mga butang klaro nga mas lisud kaysa kinahanglan nila.

Giunsa nga awtomatiko nga makamugna mga sekreto kung mag-update?

Ang sekreto sa Kubernetes kay resource nga naay key/value pairs nga gusto nimong gamiton sa imong code. Mahimo kini nga mga string sa koneksyon sa database, mga password sa email, ug uban pa. Pinaagi sa paggamit sa mga tinago, naghimo ka usa ka tin-aw nga pagbulag tali sa code ug mga setting, nga nagtugot kanimo nga dali nga ipasadya ang lainlaing mga pag-deploy nga wala’y pagbag-o sa codebase.

Usa ka komon nga sitwasyon mao nga ang duha ka modules kinahanglan nga makig-estorya gamit ang usa ka komon nga yawe. Walay bisan kinsa sa gawas sa cluster ang kinahanglan nga makahibalo niini nga yawe, tungod kay kini gituyo alang sa usa-sa-usa nga komunikasyon sulod sa cluster.

Paghimo og mga sekreto

Kasagaran, aron makahimo usa ka sekreto sa Helm kinahanglan nimo:

  • ihulagway ang sekreto sa values ​​file;
  • i-redefine kini atol sa deployment;
  • i-refer kini sulod sa deployment/pod;
  • ... ginansya!

Kasagaran kini tan-awon sama niini:

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

Usa ka yano nga sekreto sa Kubernetes gamit ang mga kantidad gikan sa values.yml

Apan ingnon ta nga dili nimo gusto nga ipiho ang imong sekreto sa file nga mga kantidad.

Adunay daghang mga kapilian kung ang pag-deploy nanginahanglan usa ka gipaambit nga yawe, nga kinahanglan himuon sa panahon sa pag-instalar.

Sa panig-ingnan sa komunikasyon sa module-to-module sa ibabaw, dili gusto nga ipaambit ang sekreto sa gawas sa pag-deploy. Busa, gitinguha kaayo nga ang Helm adunay mga mekanismo aron awtomatiko nga makamugna og usa ka sekreto nga dili kinahanglan nga isulti kini direkta.

Mga kaw-it

Gitugotan ka sa mga kaw-it sa pagpadagan sa code sa piho nga mga lokasyon sa panahon sa proseso sa pag-install. Mahimong adunay usa ka trabaho sa pag-configure nga kinahanglan nga pagdagan pagkahuman sa una nga pag-install, o tingali usa ka paglimpyo kinahanglan buhaton sa dili pa maghimo bisan unsang pag-update.

Aron masulbad ang among problema sa pagdugang sa usa ka yawe nga nahimo sa panahon sa pag-instalar, ang mga kaw-it nga pre-install mao ang sulundon. Apan adunay usa ka catch: dili ka awtomatiko nga makahimo sa sekreto sa usa ka update. Ang mga kaw-it molihok sa matag update.

Kung nahimo nimo ang imong sekreto ug ang imong una nga pag-install wala pa mahitabo unya hunong sa pagbasa, ang pre-install nga kaw-it maayo alang kanimo.

Apan kung ang sekreto bahin sa usa ka pag-update (tingali usa ka bag-ong bahin nga wala didto sa panahon sa pag-install), kini usa ka kaulaw nga dili ka makahimo usa ka pre-install nga kaw-it nga molihok kausa ra.

Mga katuyoan

Gitugotan ka sa mga function sa timon nga makadugang sa lainlaing mga elemento sa script sa imong mga script sa pag-deploy.

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

Kini nga pananglitan nagpakita nga ang bili sa apiKey sekreto mao ang bag-ong UUID nga namugna atol sa pag-instalar.

Ang Helm naglakip sa usa ka tinuod nga halapad nga librarya sa feature nga naggamit sa talagsaon nga GO template features ug Sprig's feature library aron makahimo og custom deployment.

Function sa pagpangita

Gidugang sa Helm 3.1 Function sa pagpangita, nga nagtugot kanimo sa paghangyo sa usa ka kasamtangan nga deployment ug:

  • susiha ang pagkaanaa sa mga kahinguhaan;
  • ibalik ang bili sa usa ka kasamtangan nga kapanguhaan alang sa ulahi nga paggamit.

Gamit ang duha niini nga mga kapabilidad, makahimo kita og usa ka higayon, dinamikong namugna nga sekreto!

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

Sa matag higayon nga ang usa ka bag-ong update magamit sa server, ang Helm mahimo’g makamugna usa ka bag-ong sekreto nga kantidad (kung wala pa sekreto) o gamiton pag-usab ang kasamtangan nga kantidad.

Good luck!

Unsa pa ang basahon sa hilisgutan:

  1. Tulo ka lebel sa autoscaling sa Kubernetes ug kung giunsa kini gamiton nga epektibo.
  2. Kubernetes sa diwa sa piracy nga adunay template alang sa pagpatuman.
  3. Ang among channel Around Kubernetes sa Telegram.

Source: www.habr.com

Idugang sa usa ka comment