Auto-generation of secrets in Helm

Auto-generation of secrets in Helm

pab neeg Kubernetes aaS los ntawm Mail.ru txhais ib daim ntawv luv luv hais txog yuav ua li cas thiaj li tsim Helm secrets thaum hloov kho. Cov hauv qab no yog cov ntawv sau los ntawm tus sau tsab xov xwm - tus thawj coj ntawm Intoware, lub tuam txhab uas tsim cov kev daws teeb meem SaaS.

Cov thawv ntim tau txias. Thaum xub thawj kuv tau tawm tsam lub thawv (Kuv txaj muag lees paub nws), tab sis tam sim no kuv txhawb nqa kev siv cov tshuab no. Yog tias koj nyeem qhov no, koj tau cia siab tias yuav ua tiav cov dej hiav txwv ntawm Docker, paub txog cov txiaj ntsig ntawm Kubernetes, thiab ua rau koj lub neej yooj yim dua nrog Helm.

Txawm li cas los xij, qee yam yog qhov nyuaj tshaj qhov lawv xav tau.

Yuav ua li cas thiaj li tsim tau cov lus zais thaum hloov kho?

Kubernetes zais cia yog cov peev txheej uas muaj qhov tseem ceeb / tus nqi khub uas koj xav siv hauv koj cov cai. Cov no tuaj yeem yog cov hlua sib txuas database, email passwords, thiab lwm yam. Los ntawm kev siv cov lus zais, koj tsim kom muaj kev sib cais meej ntawm cov cai thiab cov chaw, tso cai rau koj yooj yim kho cov kev xa tawm sib txawv yam tsis hloov pauv codebase.

Ib qho xwm txheej tshwm sim yog thaum ob lub modules yuav tsum sib txuas lus siv ib qho tseem ceeb. Tsis muaj leej twg nyob sab nraud ntawm pawg yuav tsum paub tus yuam sij no, vim nws yog npaj rau kev sib txuas lus ib leeg hauv pawg.

Ua secrets

Feem ntau, txhawm rau tsim qhov zais cia hauv Helm koj yuav tsum:

  • piav qhia qhov zais cia hauv cov ntaub ntawv muaj nuj nqis;
  • redefine nws thaum lub sij hawm xa mus;
  • xa mus rau nws hauv kev xa tawm / pod;
  • ... profit!

Nws feem ntau zoo li no:

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

Ib qho yooj yim Kubernetes zais cia siv cov txiaj ntsig los ntawm values.yml

Tab sis cia peb hais tias koj tsis xav qhia koj qhov zais cia hauv cov ntaub ntawv muaj nuj nqis.

Muaj ntau txoj kev xaiv thaum xa tawm yuav tsum muaj qhov sib koom ua ke, uas yuav tsum tau tsim thaum lub sijhawm teeb tsa.

Hauv cov qauv-rau-module kev sib txuas lus piv txwv saum toj no, nws tsis tsim nyog los qhia qhov zais cia sab nraud ntawm kev xa tawm. Yog li ntawd, nws yog qhov xav tau heev uas Helm muaj cov txheej txheem los ua kom muaj qhov zais cia yam tsis tas yuav qhia ncaj qha.

Hooks

Hooks tso cai rau koj khiav cov cai ntawm qhov chaw tshwj xeeb thaum lub sijhawm teeb tsa. Tej zaum yuav muaj txoj haujlwm teeb tsa uas yuav tsum tau khiav tom qab thawj qhov kev teeb tsa, lossis tej zaum yuav tsum tau ua kom huv si ua ntej ua qhov hloov tshiab.

Yuav kom daws tau peb cov teeb meem ntawm kev ntxiv ib qho tseem ceeb generated thaum lub sij hawm installation, pre-installation hooks yog zoo tagnrho. Tab sis muaj qhov ntes: koj tsis tuaj yeem tsim qhov zais cia ib zaug ntawm qhov hloov tshiab. Hooks yuav ua haujlwm ntawm txhua qhov hloov tshiab.

Yog tias koj tau tsim koj qhov zais cia thiab koj qhov kev teeb tsa thawj zaug tseem tsis tau tshwm sim, tom qab ntawd nres nyeem ntawv, qhov kev teeb tsa ua ntej yuav ua haujlwm zoo rau koj.

Tab sis yog tias qhov zais cia yog ib feem ntawm qhov hloov tshiab (tej zaum qhov tshiab uas tsis nyob ntawd thaum lub sijhawm teeb tsa), ces nws yog qhov txaj muag uas koj tsis tuaj yeem tsim ib qho kev sib txuas ua ntej uas tsuas ua haujlwm ib zaug xwb.

Zog

Helm functions tso cai rau koj ntxiv ntau yam ntawv sau rau koj cov ntawv xa tawm.

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

Qhov piv txwv no qhia tau tias tus nqi ntawm apiKey zais cia yuav yog UUID tshiab tsim thaum lub sijhawm teeb tsa.

Helm suav nrog lub tsev qiv ntawv muaj txiaj ntsig zoo tiag tiag uas ua rau muaj txiaj ntsig zoo ntawm GO template nta thiab Sprig lub tsev qiv ntawv tshwj xeeb los tsim kev xa tawm.

Nrhiav haujlwm

Ntxiv hauv Helm 3.1 Nrhiav haujlwm, uas tso cai rau koj thov kev xa tawm uas twb muaj lawm thiab:

  • tshawb xyuas qhov muaj nyob ntawm cov peev txheej;
  • xa rov qab tus nqi ntawm cov peev txheej uas twb muaj lawm rau kev siv tom qab.

Siv ob qho tib si ntawm cov peev txheej no, peb tuaj yeem tsim ib zaug, dynamically generated zais cia!

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

Thaum twg qhov kev hloov tshiab tshiab raug siv rau cov neeg rau zaub mov, Helm yuav tsim tus nqi zais cia tshiab (yog tias tsis muaj qhov zais cia) lossis rov siv tus nqi uas twb muaj lawm.

Hmoov zoo!

Dab tsi ntxiv los nyeem ntawm lub ncauj lus:

  1. Peb theem ntawm autoscaling hauv Kubernetes thiab yuav siv lawv li cas.
  2. Kubernetes nyob rau hauv lub siab ntawm piracy nrog ib tug qauv rau kev siv.
  3. Peb channel ncig Kubernetes hauv Telegram.

Tau qhov twg los: www.hab.com

Ntxiv ib saib