Otomatis generasi rahasia ing Helm

Otomatis generasi rahasia ing Helm

tim Kubernetes aaS saka Mail.ru nerjemahake cathetan singkat babagan carane nggawe rahasia Helm kanthi otomatis nalika nganyari. Ing ngisor iki minangka teks saka penulis artikel - direktur teknis Intoware, perusahaan sing ngembangake solusi SaaS.

Wadah kelangan. Wiwitane aku anti-wadhah (aku isin ngakoni), nanging saiki aku ndhukung nggunakake teknologi iki. Yen sampeyan maca iki, muga-muga sampeyan bisa nyabrang segara Docker, ngerteni keuntungan saka Kubernetes, lan nggawe urip luwih gampang karo Helm.

Nanging, sawetara perkara sing jelas luwih angel tinimbang sing dibutuhake.

Kepiye carane nggawe rahasia kanthi otomatis nalika nganyari?

Rahasia Kubernetes minangka sumber daya sing ngemot pasangan kunci/nilai sing pengin digunakake ing kode sampeyan. Iki bisa dadi string sambungan database, sandhi email, lan liya-liyane. Kanthi nggunakake rahasia, sampeyan nggawe pamisahan sing jelas ing antarane kode lan setelan, supaya gampang ngatur panyebaran sing beda tanpa ngganti basis kode.

Kahanan sing umum yaiku nalika rong modul kudu komunikasi nggunakake tombol umum. Ora ana wong ing njaba kluster kudu ngerti kunci iki, amarga iki dimaksudake kanggo komunikasi siji-kanggo-siji ing kluster.

Nggawe rahasia

Biasane, kanggo nggawe rahasia ing Helm sampeyan kudu:

  • njlèntrèhaké rahasia ing file nilai;
  • redefine nalika penyebaran;
  • deleng ing njero penyebaran / pod;
  • ... bathi!

Biasane katon kaya iki:

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

Rahasia Kubernetes prasaja nggunakake nilai saka values.yml

Nanging ayo ngomong sampeyan ora pengin nemtokake rahasia sampeyan ing file nilai.

Ana akeh opsi nalika panyebaran mbutuhake kunci sing dienggo bareng, sing kudu digawe nalika instalasi.

Ing conto komunikasi modul-kanggo-modul ndhuwur, iku ora seng di pengeni kanggo nuduhake rahasia njaba penyebaran prajurit. Mulane, iku Highly seng di pengeni sing Helm duwe mekanisme kanggo otomatis generate rahasia tanpa kudu nemtokake langsung.

Pancingan

Pancing ngidini sampeyan mbukak kode ing lokasi tartamtu sajrone proses instalasi. Bisa uga ana tugas konfigurasi sing kudu ditindakake sawise instalasi pisanan, utawa bisa uga ngresiki kudu ditindakake sadurunge nindakake nganyari apa wae.

Kanggo ngatasi masalah kita nambah tombol kui sak instalasi, pancingan pra-instalasi becik. Nanging ana sing nyekel: sampeyan ora bisa nggawe rahasia kanthi otomatis nalika nganyari. Pancing bakal bisa digunakake ing saben nganyari.

Yen sampeyan wis nggawe rahasia lan instal pisanan sampeyan durung kelakon, banjur mandheg maca, pancing sing wis diinstal bakal apik kanggo sampeyan.

Nanging yen rahasia iku bagéan saka nganyari (mbok menawa fitur anyar sing ora ana sak instalasi), banjur iku isin sing ora bisa nggawe pancing pra-instal sing mung dianggo sapisan.

Fungsi

Fungsi helm ngidini sampeyan nambah macem-macem unsur skrip menyang skrip penyebaran sampeyan.

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

Conto iki nuduhake yen nilai rahasia apiKey bakal dadi UUID anyar sing digawe nalika instalasi.

Helm kalebu perpustakaan fitur saestu ekstensif sing leverages fitur GO Cithakan sange lan perpustakaan fitur Sprig kang kanggo nggawe deployments adat.

Fungsi golek

Ditambahake ing Helm 3.1 Fungsi golek, sing ngidini sampeyan njaluk panyebaran sing wis ana lan:

  • mriksa anané sumber daya;
  • ngasilake regane sumber daya sing ana kanggo nggunakake mengko.

Nggunakake loro kabisan iki, kita bisa nggawe siji-wektu, mbosenke kui rahasia!

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

Nalika nganyari anyar ditrapake ing server, Helm bakal ngasilake nilai rahasia anyar (yen durung ana rahasia) utawa nggunakake maneh nilai sing wis ana.

Good luck!

Apa maneh kanggo maca babagan topik kasebut:

  1. Telung tingkat autoscaling ing Kubernetes lan cara nggunakake kanthi efektif.
  2. Kubernetes ing semangat pembajakan karo cithakan kanggo implementasine.
  3. Saluran kita Sekitar Kubernetes ing Telegram.

Source: www.habr.com

Add a comment