ہیلم میں رازوں کی خود بخود تخلیق

ہیلم میں رازوں کی خود بخود تخلیق

ٹیم Mail.ru سے Kubernetes aaS ایک مختصر نوٹ کا ترجمہ کیا۔ اپ ڈیٹ کرتے وقت ہیلم راز کو خود بخود کیسے پیدا کیا جائے۔ ذیل میں مضمون کے مصنف کا ایک متن ہے - Intoware کے تکنیکی ڈائریکٹر، ایک کمپنی جو SaaS حل تیار کرتی ہے۔

کنٹینر ٹھنڈے ہیں۔ پہلے میں اینٹی کنٹینر تھا (میں اسے تسلیم کرنے میں شرمندہ ہوں)، لیکن اب میں اس ٹیکنالوجی کے استعمال کی مکمل حمایت کرتا ہوں۔ اگر آپ اسے پڑھ رہے ہیں، تو امید ہے کہ آپ نے Docker کے سمندروں میں کامیابی کے ساتھ تشریف لے گئے ہوں گے، Kubernetes کے فوائد کو محسوس کیا ہو گا، اور Helm کے ساتھ اپنی زندگی کو بہت آسان بنا دیا ہے۔

تاہم، کچھ چیزیں واضح طور پر ان کی ضرورت سے کہیں زیادہ مشکل ہوتی ہیں۔

اپ ڈیٹ کرتے وقت خود بخود راز کیسے پیدا کیے جائیں؟

Kubernetes سیکریٹ ایک ایسا وسیلہ ہے جس میں کلیدی/قدر کے جوڑے ہوتے ہیں جنہیں آپ اپنے کوڈ میں استعمال کرنا چاہتے ہیں۔ یہ ڈیٹا بیس کنکشن سٹرنگز، ای میل پاس ورڈز وغیرہ ہو سکتے ہیں۔ رازوں کا استعمال کرکے، آپ کوڈ اور سیٹنگز کے درمیان واضح علیحدگی پیدا کرتے ہیں، جس سے آپ کوڈ بیس کو تبدیل کیے بغیر مختلف تعیناتیوں کو آسانی سے اپنی مرضی کے مطابق بنا سکتے ہیں۔

ایک عام صورت حال وہ ہوتی ہے جب دو ماڈیولز کو ایک مشترکہ کلید کا استعمال کرتے ہوئے بات چیت کرنی چاہیے۔ کلسٹر کے باہر کسی کو بھی اس کلید کا علم نہیں ہونا چاہیے، کیونکہ اس کا مقصد کلسٹر کے اندر ایک دوسرے کے ساتھ رابطے کے لیے ہے۔

راز بنانا

عام طور پر، ہیلم میں ایک راز بنانے کے لیے آپ کو:

  • اقدار کی فائل میں راز کی وضاحت کریں؛
  • تعیناتی کے دوران اس کی دوبارہ وضاحت کریں؛
  • اسے تعیناتی/پوڈ کے اندر دیکھیں۔
  • ... منافع!

یہ عام طور پر کچھ اس طرح لگتا ہے:

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

values.yml سے اقدار کا استعمال کرتے ہوئے ایک سادہ Kubernetes راز

لیکن ہم کہتے ہیں کہ آپ ویلیوز فائل میں اپنا راز نہیں بتانا چاہتے۔

جب تعیناتی کے لیے مشترکہ کلید کی ضرورت ہوتی ہے تو بہت سے اختیارات ہوتے ہیں، جو انسٹالیشن کے دوران تیار کی جانی چاہیے۔

اوپر دی گئی ماڈیول ٹو ماڈیول کمیونیکیشن کی مثال میں، تعیناتی کے باہر راز کا اشتراک کرنا مناسب نہیں ہے۔ لہٰذا، یہ انتہائی ضروری ہے کہ ہیلم کے پاس ایسا طریقہ کار ہو کہ وہ خود بخود راز کو براہ راست بتائے بغیر پیدا کرے۔

کانٹے

ہکس آپ کو تنصیب کے عمل کے دوران مخصوص مقامات پر کوڈ چلانے کی اجازت دیتے ہیں۔ ایک کنفیگریشن جاب ہو سکتا ہے جسے پہلی انسٹالیشن کے بعد چلانے کی ضرورت ہو، یا شاید کسی بھی اپ ڈیٹ کو انجام دینے سے پہلے صفائی کی ضرورت ہو۔

تنصیب کے دوران پیدا ہونے والی کلید کو شامل کرنے کے ہمارے مسئلے کو حل کرنے کے لیے، پہلے سے انسٹالیشن ہکس مثالی ہیں۔ لیکن ایک کیچ ہے: آپ ایک بار اپ ڈیٹ پر خود بخود راز پیدا نہیں کرسکتے ہیں۔ ہکس ہر اپ ڈیٹ پر کام کریں گے۔

اگر آپ نے اپنا راز تیار کر لیا ہے اور آپ کی پہلی انسٹال ابھی تک نہیں ہوئی ہے تو پڑھنا بند کر دیں، پری انسٹال ہک آپ کے لیے بہت اچھا کام کرے گا۔

لیکن اگر راز کسی اپ ڈیٹ کا حصہ ہے (شاید ایک نئی خصوصیت جو انسٹالیشن کے دوران موجود نہیں تھی)، تو یہ شرم کی بات ہے کہ آپ پہلے سے انسٹالیشن ہک نہیں بنا سکتے جو صرف ایک بار کام کرتا ہے۔

افعال

ہیلم فنکشنز آپ کو مختلف اسکرپٹنگ عناصر کو اپنی تعیناتی اسکرپٹس میں شامل کرنے کی اجازت دیتے ہیں۔

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

اس مثال سے پتہ چلتا ہے کہ apiKey سیکرٹ کی قدر انسٹالیشن کے دوران پیدا ہونے والا نیا UUID ہوگا۔

ہیلم میں واقعی ایک وسیع فیچر لائبریری شامل ہے جو اپنی مرضی کے مطابق تعیناتیوں کو تخلیق کرنے کے لیے حیرت انگیز GO ٹیمپلیٹ فیچرز اور اسپرگ کی فیچر لائبریری سے فائدہ اٹھاتی ہے۔

تلاش کی تقریب

ہیلم 3.1 میں شامل کیا گیا۔ تلاش کی تقریب، جو آپ کو موجودہ تعیناتی کی درخواست کرنے کی اجازت دیتا ہے اور:

  • وسائل کی موجودگی کو چیک کریں؛
  • بعد میں استعمال کے لیے موجودہ وسائل کی قدر واپس کریں۔

ان دونوں صلاحیتوں کو استعمال کرتے ہوئے، ہم ایک وقتی، متحرک طور پر تیار کردہ راز بنا سکتے ہیں!

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

جب بھی سرور پر کوئی نئی اپ ڈیٹ لاگو ہوتی ہے، ہیلم یا تو ایک نئی خفیہ قدر پیدا کرے گا (اگر ابھی تک کوئی راز نہیں ہے) یا موجودہ قدر کو دوبارہ استعمال کرے گا۔

گڈ لک!

موضوع پر اور کیا پڑھنا ہے۔:

  1. Kubernetes میں آٹو اسکیلنگ کے تین درجے اور ان کو مؤثر طریقے سے استعمال کرنے کا طریقہ.
  2. قزاقی کی روح میں Kubernetes نفاذ کے لیے ایک ٹیمپلیٹ کے ساتھ.
  3. ٹیلیگرام میں ہمارا چینل Around Kubernetes.

ماخذ: www.habr.com

نیا تبصرہ شامل کریں