Uzalishaji wa siri kiotomatiki katika Helm

Uzalishaji wa siri kiotomatiki katika Helm

Timu Kubernetes aaS kutoka Mail.ru imetafsiri maelezo mafupi kuhusu jinsi ya kutengeneza siri za Helm kiotomatiki wakati wa kusasisha. Yafuatayo ni maandishi kutoka kwa mwandishi wa makala - mkurugenzi wa kiufundi wa Intoware, kampuni inayotengeneza suluhu za SaaS.

Vyombo ni baridi. Mwanzoni nilikuwa anti-chombo (nina aibu kuikubali), lakini sasa ninaunga mkono kikamilifu matumizi ya teknolojia hii. Ikiwa unasoma haya, unatumai kuwa umefanikiwa kuvinjari bahari za Docker, ukagundua faida za Kubernetes, na umerahisisha maisha yako kwa kutumia Helm.

Hata hivyo, baadhi ya mambo ni wazi kuwa magumu zaidi kuliko yanavyohitaji kuwa.

Jinsi ya kutengeneza siri kiotomatiki wakati wa kusasisha?

Siri ya Kubernetes ni rasilimali ambayo ina jozi za funguo/thamani ambazo ungependa kutumia katika msimbo wako. Hizi zinaweza kuwa kamba za uunganisho wa hifadhidata, nywila za barua pepe, na kadhalika. Kwa kutumia siri, unaunda utengano wazi kati ya nambari na mipangilio, hukuruhusu kubinafsisha utumiaji tofauti bila kubadilisha msingi wa msimbo.

Hali ya kawaida ni wakati moduli mbili lazima ziwasiliane kwa kutumia ufunguo wa kawaida. Hakuna mtu aliye nje ya nguzo anayepaswa kujua ufunguo huu, kwa kuwa umekusudiwa kwa mawasiliano ya moja kwa moja ndani ya nguzo.

Kufanya siri

Kwa kawaida, ili kuunda siri katika Helm unahitaji:

  • eleza siri katika faili ya maadili;
  • itafafanua upya wakati wa kupelekwa;
  • rejea ndani ya kupelekwa/ganda;
  • ... faida!

Kawaida inaonekana kitu kama hiki:

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

Siri rahisi ya Kubernetes kutumia maadili kutoka values.yml

Lakini wacha tuseme hutaki kutaja siri yako kwenye faili ya maadili.

Kuna chaguo nyingi wakati uwekaji unahitaji ufunguo ulioshirikiwa, ambao lazima uzalishwe wakati wa ufungaji.

Katika mfano wa mawasiliano wa moduli hadi moduli hapo juu, haipendekewi kushiriki siri nje ya uwekaji. Kwa hivyo, inahitajika sana kwamba Helm iwe na mifumo ya kutoa siri kiotomatiki bila kulazimika kuibainisha moja kwa moja.

Kulabu

Kulabu hukuruhusu kuendesha nambari kwenye maeneo maalum wakati wa mchakato wa usakinishaji. Kunaweza kuwa na kazi ya usanidi ambayo inahitaji kuendeshwa baada ya usakinishaji wa kwanza, au labda usafishaji unahitaji kufanywa kabla ya kufanya sasisho lolote.

Ili kutatua tatizo letu la kuongeza ufunguo unaozalishwa wakati wa ufungaji, ndoano za ufungaji wa awali zinafaa. Lakini kuna jambo fulani: huwezi kutoa siri kiotomatiki mara moja kwenye sasisho. Hooks itafanya kazi kwa kila sasisho.

Ikiwa umeunda siri yako na usakinishaji wako wa kwanza bado haujafanyika basi acha kusoma, ndoano ya kusakinisha mapema itakufanyia kazi nzuri.

Lakini ikiwa siri ni sehemu ya sasisho (labda kipengele kipya ambacho hakikuwepo wakati wa ufungaji), basi ni aibu kwamba huwezi kuunda ndoano ya awali ya ufungaji ambayo inafanya kazi mara moja tu.

Kazi

Vitendaji vya usukani hukuruhusu kuongeza vipengee mbalimbali vya uandishi kwenye hati zako za utumiaji.

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

Mfano huu unaonyesha kuwa thamani ya siri ya apiKey itakuwa UUID mpya itakayotolewa wakati wa usakinishaji.

Helm inajumuisha maktaba ya kina ya vipengele ambayo hutumia vipengele vya ajabu vya kiolezo cha GO na maktaba ya kipengele cha Sprig ili kuunda matumizi maalum.

Kazi ya kuangalia

Imeongezwa kwenye Helm 3.1 Kazi ya kuangalia, ambayo hukuruhusu kuomba upelekaji uliopo na:

  • angalia uwepo wa rasilimali;
  • rudisha thamani ya rasilimali iliyopo kwa matumizi ya baadaye.

Kwa kutumia uwezo huu wote wawili, tunaweza kuunda siri ya wakati mmoja, inayozalishwa kwa nguvu!

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

Wakati wowote sasisho jipya linatumika kwa seva, Helm itatoa thamani mpya ya siri (ikiwa hakuna siri bado) au itatumia tena thamani iliyopo.

Mafanikio!

Nini kingine cha kusoma kwenye mada:

  1. Viwango vitatu vya kuongeza kasi kiotomatiki katika Kubernetes na jinsi ya kuzitumia kwa ufanisi.
  2. Kubernetes katika ari ya uharamia na kiolezo cha utekelezaji.
  3. Kituo chetu Karibu Kubernetes katika Telegram.

Chanzo: mapenzi.com

Kuongeza maoni