Helmda sirlarni avtomatik yaratish

Helmda sirlarni avtomatik yaratish

komanda Mail.ru dan Kubernetes aaS qisqacha eslatmani tarjima qildi yangilashda Helm sirlarini avtomatik ravishda qanday yaratish haqida. Quyida maqola muallifi - SaaS yechimlarini ishlab chiquvchi Intoware kompaniyasining texnik direktori matni keltirilgan.

Konteynerlar salqin. Avvaliga men anti-konteyner edim (men buni tan olishdan uyalaman), lekin hozir men ushbu texnologiyadan foydalanishni to'liq qo'llab-quvvatlayman. Agar siz buni o'qiyotgan bo'lsangiz, umid qilamanki, siz Docker dengizlarida muvaffaqiyatli sayohat qildingiz, Kubernetesning afzalliklarini tushundingiz va Helm bilan hayotingizni ancha osonlashtirdingiz.

Biroq, ba'zi narsalar kerak bo'lgandan ko'ra qiyinroq.

Yangilashda qanday qilib avtomatik ravishda sirlarni yaratish mumkin?

Kubernetes siri - bu kodingizda foydalanmoqchi bo'lgan kalit/qiymat juftlarini o'z ichiga olgan manba. Bu ma'lumotlar bazasi ulanish satrlari, elektron pochta parollari va boshqalar bo'lishi mumkin. Sirlardan foydalanib, siz kodlar va sozlamalar o'rtasida aniq ajratishni yaratasiz, bu kod bazasini o'zgartirmasdan turli joylashtirishlarni sozlashni osonlashtiradi.

Umumiy holat - ikkita modul umumiy kalit yordamida bog'lanishi kerak. Klasterdan tashqarida hech kim bu kalitni bilmasligi kerak, chunki u klaster ichida birma-bir muloqot qilish uchun mo'ljallangan.

Sirlar qilish

Odatda, Helm-da sir yaratish uchun sizga kerak bo'ladi:

  • qiymatlar faylidagi sirni tavsiflang;
  • joylashtirish vaqtida uni qayta belgilang;
  • joylashtirish/pod ichida unga murojaat qiling;
  • ... foyda!

Odatda shunday ko'rinadi:

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

values.yml dan qiymatlardan foydalangan holda oddiy Kubernetes siri

Aytaylik, siz qiymatlar faylida siringizni ko'rsatishni xohlamaysiz.

Joylashtirish uchun umumiy kalit kerak bo'lganda ko'plab variantlar mavjud, ular o'rnatish vaqtida yaratilishi kerak.

Yuqoridagi moduldan modulga aloqa misolida, tarqatishdan tashqarida sirni baham ko'rish istalmagan. Shuning uchun Helm-da sirni to'g'ridan-to'g'ri ko'rsatmasdan avtomatik ravishda yaratish mexanizmlari mavjudligi juda ma'qul.

Ilgaklar

Ilgaklar o'rnatish jarayonida ma'lum joylarda kodni ishlatishga imkon beradi. Birinchi o'rnatishdan keyin bajarilishi kerak bo'lgan konfiguratsiya ishi bo'lishi mumkin yoki har qanday yangilanishni amalga oshirishdan oldin tozalashni amalga oshirish kerak bo'lishi mumkin.

O'rnatish paytida yaratilgan kalitni qo'shish muammomizni hal qilish uchun o'rnatishdan oldingi ilgaklar idealdir. Ammo bir narsa bor: yangilanishda siz avtomatik ravishda sirni bir marta yarata olmaysiz. Kancalar har bir yangilanishda ishlaydi.

Agar siz o'z siringizni yaratgan bo'lsangiz va birinchi o'rnatishingiz hali amalga oshmagan bo'lsa, keyin o'qishni to'xtating, oldindan o'rnatish kancasi siz uchun juda yaxshi ishlaydi.

Ammo agar sir yangilanishning bir qismi bo'lsa (ehtimol, o'rnatish vaqtida mavjud bo'lmagan yangi xususiyat), unda siz faqat bir marta ishlaydigan oldindan o'rnatish kancasini yarata olmasligingiz juda achinarli.

Xususiyatlari:

Helm funktsiyalari o'rnatish skriptlariga turli xil skript elementlarini qo'shish imkonini beradi.

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

Ushbu misol apiKey sirining qiymati o'rnatish vaqtida yaratilgan yangi UUID bo'lishini ko'rsatadi.

Helm o'z ichiga chinakam keng imkoniyatlar kutubxonasini o'z ichiga oladi, u ajoyib GO shablon xususiyatlaridan va Sprig-ning maxsus joylashtirishlarni yaratish uchun xususiyatlar kutubxonasidan foydalanadi.

Qidiruv funksiyasi

Helm 3.1 da qo'shilgan Qidiruv funksiyasi, bu sizga mavjud joylashtirishni talab qilish imkonini beradi va:

  • resurslarning mavjudligini tekshirish;
  • keyinchalik foydalanish uchun mavjud resurs qiymatini qaytaring.

Ushbu ikkala imkoniyatlardan foydalanib, biz bir martalik, dinamik ravishda yaratilgan sirni yaratishimiz mumkin!

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

Har safar serverga yangi yangilanish qo'llanilganda, Helm yangi maxfiy qiymat yaratadi (agar hali hech qanday sir bo'lmasa) yoki mavjud qiymatdan qayta foydalanadi.

Omad tilaymiz!

Mavzu bo'yicha yana nimani o'qish kerak:

  1. Kubernetes-da avtomatik o'lchashning uchta darajasi va ulardan qanday samarali foydalanish.
  2. Kubernetes qaroqchilik ruhida amalga oshirish shabloniga ega.
  3. Telegramdagi Kubernetes atrofidagi kanalimiz.

Manba: www.habr.com

DDoS himoyasi, VPS VDS serverlari bo'lgan saytlar uchun ishonchli hosting sotib oling πŸ”₯ DDoS himoyasi, VPS VDS serverlari bilan ishonchli veb-sayt xostingini sotib oling | ProHoster