قونصل کا استعمال کرتے ہوئے ایک Nomad کلسٹر قائم کرنا اور Gitlab کے ساتھ ضم کرنا

تعارف

حال ہی میں، Kubernetes کی مقبولیت تیزی سے بڑھ رہی ہے - زیادہ سے زیادہ منصوبے اسے لاگو کر رہے ہیں. میں Nomad جیسے آرکیسٹریٹر سے رابطہ کرنا چاہتا تھا: یہ ان پروجیکٹس کے لیے بہترین ہے جو پہلے سے ہی HashiCorp سے دوسرے حل استعمال کرتے ہیں، مثال کے طور پر، والٹ اور قونصل، اور پروجیکٹس خود انفراسٹرکچر کے لحاظ سے پیچیدہ نہیں ہیں۔ اس مواد میں Nomad کو انسٹال کرنے، دو نوڈس کو ایک کلسٹر میں ملانے کے ساتھ ساتھ Nomad کو Gitlab کے ساتھ مربوط کرنے کی ہدایات شامل ہوں گی۔

قونصل کا استعمال کرتے ہوئے ایک Nomad کلسٹر قائم کرنا اور Gitlab کے ساتھ ضم کرنا

ٹیسٹ سٹینڈ

ٹیسٹ بینچ کے بارے میں تھوڑا سا: تین ورچوئل سرورز 2 CPU، 4 RAM، 50 Gb SSD کی خصوصیات کے ساتھ استعمال کیے جاتے ہیں، جو ایک مشترکہ مقامی نیٹ ورک میں متحد ہیں۔ ان کے نام اور IP پتے:

  1. nomad-livelinux-01: 172.30.0.5
  2. nomad-livelinux-02: 172.30.0.10
  3. consul-livelinux-01: 172.30.0.15

خانہ بدوش، قونصل کی تنصیب۔ خانہ بدوش کلسٹر بنانا

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

اس سے پہلے کہ ہم مشق شروع کریں، ہم نظریاتی حصے پر بات کریں گے، کیونکہ اس مرحلے پر مستقبل کی ساخت کو سمجھنا ضروری ہے۔

ہمارے پاس دو خانہ بدوش نوڈس ہیں اور ہم انہیں ایک کلسٹر میں جوڑنا چاہتے ہیں، اور مستقبل میں ہمیں خودکار کلسٹر اسکیلنگ کی بھی ضرورت ہوگی - اس کے لیے ہمیں قونصل کی ضرورت ہوگی۔ اس ٹول کے ساتھ، نئے نوڈس کو کلسٹر کرنا اور شامل کرنا ایک بہت آسان کام بن جاتا ہے: تخلیق کردہ Nomad نوڈ قونصل ایجنٹ سے جڑتا ہے، اور پھر موجودہ Nomad کلسٹر سے جڑ جاتا ہے۔ لہذا، شروع میں ہم قونصل سرور کو انسٹال کریں گے، ویب پینل کے لیے بنیادی HTTP اجازت نامہ ترتیب دیں گے (یہ پہلے سے طے شدہ طور پر اجازت کے بغیر ہے اور اسے کسی بیرونی ایڈریس پر حاصل کیا جا سکتا ہے)، نیز قونصل کے ایجنٹ خود کو Nomad سرورز پر، جس کے بعد ہم صرف خانہ بدوش کی طرف بڑھیں گے۔

HashiCorp کے ٹولز کو انسٹال کرنا بہت آسان ہے: بنیادی طور پر، ہم صرف بائنری فائل کو بن ڈائرکٹری میں منتقل کرتے ہیں، ٹول کی کنفیگریشن فائل سیٹ اپ کرتے ہیں، اور اس کی سروس فائل بناتے ہیں۔

قونصل بائنری فائل کو ڈاؤن لوڈ کریں اور اسے صارف کی ہوم ڈائریکٹری میں کھولیں:

root@consul-livelinux-01:~# wget https://releases.hashicorp.com/consul/1.5.0/consul_1.5.0_linux_amd64.zip
root@consul-livelinux-01:~# unzip consul_1.5.0_linux_amd64.zip
root@consul-livelinux-01:~# mv consul /usr/local/bin/

اب ہمارے پاس مزید کنفیگریشن کے لیے ایک ریڈی میڈ قونصل بائنری ہے۔

قونصل کے ساتھ کام کرنے کے لیے، ہمیں keygen کمانڈ کا استعمال کرتے ہوئے ایک منفرد کلید بنانے کی ضرورت ہے:

root@consul-livelinux-01:~# consul keygen

آئیے مندرجہ ذیل ڈھانچے کے ساتھ ایک ڈائرکٹری /etc/consul.d/ بناتے ہوئے قونصل کنفیگریشن ترتیب دینے کی طرف بڑھتے ہیں:

/etc/consul.d/
├── bootstrap
│   └── config.json

بوٹسٹریپ ڈائرکٹری میں ایک کنفیگریشن فائل config.json ہوگی - اس میں ہم قونصل سیٹنگز سیٹ کریں گے۔ اس کے مندرجات:

{
"bootstrap": true,
"server": true,
"datacenter": "dc1",
"data_dir": "/var/consul",
"encrypt": "your-key",
"log_level": "INFO",
"enable_syslog": true,
"start_join": ["172.30.0.15"]
}

آئیے اہم ہدایات اور ان کے معانی کو الگ الگ دیکھتے ہیں:

  • بوٹسٹریپ: سچ۔ ہم نئے نوڈس کے منسلک ہونے کی صورت میں ان کے خودکار اضافہ کو فعال کرتے ہیں۔ میں نوٹ کرتا ہوں کہ ہم یہاں متوقع نوڈس کی صحیح تعداد کی نشاندہی نہیں کرتے ہیں۔
  • سرور: سچ۔ سرور موڈ کو فعال کریں۔ اس ورچوئل مشین پر قونصل فی الحال واحد سرور اور ماسٹر کے طور پر کام کرے گا، Nomad's VM کلائنٹ ہوں گے۔
  • ڈیٹا بیس:dc1۔ کلسٹر بنانے کے لیے ڈیٹا سینٹر کا نام بتائیں۔ یہ کلائنٹس اور سرورز دونوں پر یکساں ہونا چاہیے۔
  • خفیہ: آپ کی چابی۔ کلید، جو منفرد بھی ہونی چاہیے اور تمام کلائنٹس اور سرورز پر مماثل ہونی چاہیے۔ consul keygen کمانڈ کا استعمال کرتے ہوئے تیار کیا گیا۔
  • start_join. اس فہرست میں ہم IP پتوں کی ایک فہرست بتاتے ہیں جن سے کنکشن بنایا جائے گا۔ اس وقت ہم صرف اپنا پتہ چھوڑتے ہیں۔

اس مقام پر ہم کمانڈ لائن کا استعمال کرتے ہوئے قونصل چلا سکتے ہیں:

root@consul-livelinux-01:~# /usr/local/bin/consul agent -config-dir /etc/consul.d/bootstrap -ui

ابھی ڈیبگ کرنے کا یہ ایک اچھا طریقہ ہے، تاہم، آپ واضح وجوہات کی بنا پر اس طریقہ کو مسلسل استعمال نہیں کر پائیں گے۔ آئیے سسٹم ڈی کے ذریعے قونصل کا انتظام کرنے کے لیے ایک سروس فائل بنائیں:

root@consul-livelinux-01:~# nano /etc/systemd/system/consul.service

consul.service فائل کے مشمولات:

[Unit]
Description=Consul Startup process
After=network.target
 
[Service]
Type=simple
ExecStart=/bin/bash -c '/usr/local/bin/consul agent -config-dir /etc/consul.d/bootstrap -ui' 
TimeoutStartSec=0
 
[Install]
WantedBy=default.target

سسٹم سی ٹی ایل کے ذریعے قونصل لانچ کریں:

root@consul-livelinux-01:~# systemctl start consul

آئیے چیک کریں: ہماری سروس چل رہی ہونی چاہیے، اور قونصل ممبران کے حکم پر عمل کرتے ہوئے ہمیں اپنا سرور دیکھنا چاہیے:

root@consul-livelinux:/etc/consul.d# consul members
consul-livelinux    172.30.0.15:8301  alive   server  1.5.0  2         dc1  <all>

اگلا مرحلہ: Nginx انسٹال کرنا اور پراکسینگ اور HTTP کی اجازت ترتیب دینا۔ ہم پیکیج مینیجر کے ذریعے nginx انسٹال کرتے ہیں اور /etc/nginx/sites-enabled ڈائریکٹری میں ہم مندرجہ ذیل مواد کے ساتھ ایک کنفیگریشن فائل consul.conf بناتے ہیں:

upstream consul-auth {
    server localhost:8500;
}

server {

    server_name consul.doman.name;
    
    location / {
      proxy_pass http://consul-auth;
      proxy_set_header Host $host;
      auth_basic_user_file /etc/nginx/.htpasswd;
      auth_basic "Password-protected Area";
    }
}

htpasswd فائل بنانا اور اس کے لیے صارف نام اور پاس ورڈ بنانا نہ بھولیں۔ یہ آئٹم درکار ہے تاکہ ویب پینل ہر اس شخص کے لیے دستیاب نہ ہو جو ہمارے ڈومین کو جانتا ہے۔ تاہم، Gitlab قائم کرتے وقت، ہمیں اسے ترک کرنا پڑے گا - بصورت دیگر ہم اپنی درخواست کو Nomad پر تعینات نہیں کر سکیں گے۔ میرے پروجیکٹ میں، Gitlab اور Nomad دونوں صرف گرے ویب پر ہیں، اس لیے یہاں ایسا کوئی مسئلہ نہیں ہے۔

باقی دو سرورز پر ہم مندرجہ ذیل ہدایات کے مطابق قونصل ایجنٹس انسٹال کرتے ہیں۔ ہم بائنری فائل کے ساتھ اقدامات کو دہراتے ہیں:

root@nomad-livelinux-01:~# wget https://releases.hashicorp.com/consul/1.5.0/consul_1.5.0_linux_amd64.zip
root@nomad-livelinux-01:~# unzip consul_1.5.0_linux_amd64.zip
root@nomad-livelinux-01:~# mv consul /usr/local/bin/

پچھلے سرور سے مشابہت کے ساتھ، ہم مندرجہ ذیل ڈھانچے کے ساتھ کنفیگریشن فائلوں /etc/consul.d کے لیے ایک ڈائرکٹری بناتے ہیں:

/etc/consul.d/
├── client
│   └── config.json

config.json فائل کے مشمولات:

{
    "datacenter": "dc1",
    "data_dir": "/opt/consul",
    "log_level": "DEBUG",
    "node_name": "nomad-livelinux-01",
    "server": false,
    "encrypt": "your-private-key",
    "domain": "livelinux",
    "addresses": {
      "dns": "127.0.0.1",
      "https": "0.0.0.0",
      "grpc": "127.0.0.1",
      "http": "127.0.0.1"
    },
    "bind_addr": "172.30.0.5", # локальный адрес вм
    "start_join": ["172.30.0.15"], # удаленный адрес консул сервера
    "ports": {
      "dns": 53
     }

تبدیلیوں کو محفوظ کریں اور سروس فائل، اس کے مواد کو ترتیب دینے کے لیے آگے بڑھیں:

/etc/systemd/system/consul.service:

[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target

[Service]
User=root
Group=root
ExecStart=/usr/local/bin/consul agent -config-dir=/etc/consul.d/client
ExecReload=/usr/local/bin/consul reload
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

ہم سرور پر قونصل لانچ کرتے ہیں۔ اب، لانچ کے بعد، ہمیں nsul ممبروں میں کنفیگرڈ سروس دیکھنا چاہیے۔ اس کا مطلب یہ ہوگا کہ اس نے کلسٹر سے بطور کلائنٹ کامیابی سے جڑا ہے۔ دوسرے سرور پر اسی کو دہرائیں اور اس کے بعد ہم Nomad کو انسٹال اور کنفیگر کرنا شروع کر سکتے ہیں۔

Nomad کی ​​مزید تفصیلی تنصیب اس کی سرکاری دستاویزات میں بیان کی گئی ہے۔ تنصیب کے دو روایتی طریقے ہیں: بائنری فائل ڈاؤن لوڈ کرنا اور ماخذ سے مرتب کرنا۔ میں پہلا طریقہ منتخب کروں گا۔

نوٹ: پروجیکٹ بہت تیزی سے ترقی کر رہا ہے، نئی اپ ڈیٹس اکثر جاری کی جاتی ہیں۔ شاید اس مضمون کے مکمل ہونے تک ایک نیا ورژن جاری کیا جائے گا۔ لہذا، پڑھنے سے پہلے، میں اس وقت Nomad کے موجودہ ورژن کو چیک کرنے اور اسے ڈاؤن لوڈ کرنے کا مشورہ دیتا ہوں۔

root@nomad-livelinux-01:~# wget https://releases.hashicorp.com/nomad/0.9.1/nomad_0.9.1_linux_amd64.zip
root@nomad-livelinux-01:~# unzip nomad_0.9.1_linux_amd64.zip
root@nomad-livelinux-01:~# mv nomad /usr/local/bin/
root@nomad-livelinux-01:~# nomad -autocomplete-install
root@nomad-livelinux-01:~# complete -C /usr/local/bin/nomad nomad
root@nomad-livelinux-01:~# mkdir /etc/nomad.d

پیک کھولنے کے بعد، ہمیں ایک Nomad بائنری فائل موصول ہوگی جس کا وزن 65 MB ہے - اسے /usr/local/bin میں منتقل کیا جانا چاہیے۔

آئیے Nomad کے لیے ڈیٹا ڈائرکٹری بنائیں اور اس کی سروس فائل میں ترمیم کریں (اس کا امکان شروع میں موجود نہیں ہوگا):

root@nomad-livelinux-01:~# mkdir --parents /opt/nomad
root@nomad-livelinux-01:~# nano /etc/systemd/system/nomad.service

وہاں درج ذیل لائنیں چسپاں کریں:

[Unit]
Description=Nomad
Documentation=https://nomadproject.io/docs/
Wants=network-online.target
After=network-online.target

[Service]
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=infinity
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
StartLimitBurst=3
StartLimitIntervalSec=10
TasksMax=infinity

[Install]
WantedBy=multi-user.target

تاہم، ہمیں خانہ بدوش شروع کرنے کی کوئی جلدی نہیں ہے - ہم نے ابھی تک اس کی کنفیگریشن فائل نہیں بنائی ہے:

root@nomad-livelinux-01:~# mkdir --parents /etc/nomad.d
root@nomad-livelinux-01:~# chmod 700 /etc/nomad.d
root@nomad-livelinux-01:~# nano /etc/nomad.d/nomad.hcl
root@nomad-livelinux-01:~# nano /etc/nomad.d/server.hcl

ڈائرکٹری کا حتمی ڈھانچہ اس طرح ہوگا:

/etc/nomad.d/
├── nomad.hcl
└── server.hcl

nomad.hcl فائل میں درج ذیل کنفیگریشن ہونی چاہیے:

datacenter = "dc1"
data_dir = "/opt/nomad"

server.hcl فائل کے مشمولات:

server {
  enabled = true
  bootstrap_expect = 1
}

consul {
  address             = "127.0.0.1:8500"
  server_service_name = "nomad"
  client_service_name = "nomad-client"
  auto_advertise      = true
  server_auto_join    = true
  client_auto_join    = true
}

bind_addr = "127.0.0.1" 

advertise {
  http = "172.30.0.5"
}

client {
  enabled = true
}

دوسرے سرور پر کنفیگریشن فائل کو تبدیل کرنا نہ بھولیں - وہاں آپ کو HTTP ہدایت کی قدر کو تبدیل کرنے کی ضرورت ہوگی۔

اس مرحلے پر آخری چیز Nginx کو پراکسی کرنے اور HTTP کی اجازت کے لیے ترتیب دینا ہے۔ nomad.conf فائل کے مشمولات:

upstream nomad-auth {
        server 172.30.0.5:4646;
}

server {

        server_name nomad.domain.name;
        
        location / {
	        proxy_pass http://nomad-auth;
	        proxy_set_header Host $host;
	        auth_basic_user_file /etc/nginx/.htpasswd;
		   auth_basic "Password-protected Area";
        }
        
}

اب ہم ایک بیرونی نیٹ ورک کے ذریعے ویب پینل تک رسائی حاصل کر سکتے ہیں۔ جڑیں اور سرورز کے صفحے پر جائیں:

قونصل کا استعمال کرتے ہوئے ایک Nomad کلسٹر قائم کرنا اور Gitlab کے ساتھ ضم کرنا
شبیہ 1۔ Nomad کلسٹر میں سرورز کی فہرست

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

قونصل کا استعمال کرتے ہوئے ایک Nomad کلسٹر قائم کرنا اور Gitlab کے ساتھ ضم کرنا
شبیہ 2۔ خانہ بدوش نوڈ اسٹیٹس کمانڈ کا آؤٹ پٹ

قونصل کے بارے میں کیا خیال ہے؟ آئیے ایک نظر ڈالتے ہیں۔ قونصل کنٹرول پینل پر جائیں، نوڈس کے صفحے پر:
قونصل کا استعمال کرتے ہوئے ایک Nomad کلسٹر قائم کرنا اور Gitlab کے ساتھ ضم کرنا
شبیہ 3۔ قونصل کلسٹر میں نوڈس کی فہرست

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

گٹلیب رنر بنانا

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


FROM alpine:3.9
RUN apk add --update --no-cache libc6-compat gettext
COPY nomad /usr/local/bin/nomad

اسی پروجیکٹ میں ہم .gitlab-ci.yml بناتے ہیں:

variables:
  DOCKER_IMAGE: nomad/nomad-deploy
  DOCKER_REGISTRY: registry.domain.name
 

stages:
  - build

build:
  stage: build
  image: ${DOCKER_REGISTRY}/nomad/alpine:3
  script:
    - tag=${DOCKER_REGISTRY}/${DOCKER_IMAGE}:latest
    - docker build --pull -t ${tag} -f Dockerfile .
    - docker push ${tag}

نتیجے کے طور پر، ہمارے پاس گٹلیب رجسٹری میں نومیڈ رنر کی ایک تصویر دستیاب ہوگی، اب ہم براہ راست پروجیکٹ کے ذخیرے میں جاسکتے ہیں، ایک پائپ لائن بنا سکتے ہیں اور Nomad کی ​​خانہ بدوش جاب کو ترتیب دے سکتے ہیں۔

پروجیکٹ سیٹ اپ

آئیے Nomad کے لیے نوکری کی فائل سے شروع کرتے ہیں۔ اس مضمون میں میرا پروجیکٹ کافی قدیم ہوگا: یہ ایک کام پر مشتمل ہوگا۔ gitlab-ci کے مندرجات درج ذیل ہوں گے:

variables:
  NOMAD_ADDR: http://nomad.address.service:4646
  DOCKER_REGISTRY: registry.domain.name
  DOCKER_IMAGE: example/project

stages:
  - build
  - deploy

build:
  stage: build
  image: ${DOCKER_REGISTRY}/nomad-runner/alpine:3
  script:
    - tag=${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${CI_COMMIT_SHORT_SHA}
    - docker build --pull -t ${tag} -f Dockerfile .
    - docker push ${tag}


deploy:
  stage: deploy
  image: registry.example.com/nomad/nomad-runner:latest
  script:
    - envsubst '${CI_COMMIT_SHORT_SHA}' < project.nomad > job.nomad
    - cat job.nomad
    - nomad validate job.nomad
    - nomad plan job.nomad || if [ $? -eq 255 ]; then exit 255; else echo "success"; fi
    - nomad run job.nomad
  environment:
    name: production
  allow_failure: false
  when: manual

یہاں تعیناتی دستی طور پر ہوتی ہے، لیکن آپ اسے پروجیکٹ ڈائرکٹری کے مواد کو تبدیل کرنے کے لیے ترتیب دے سکتے ہیں۔ پائپ لائن دو مراحل پر مشتمل ہے: امیج اسمبلی اور خانہ بدوشوں میں اس کی تعیناتی۔ پہلے مرحلے پر، ہم ایک ڈاکر امیج کو جمع کرتے ہیں اور اسے اپنی رجسٹری میں ڈالتے ہیں، اور دوسرے مرحلے پر ہم اپنا کام Nomad میں شروع کرتے ہیں۔

job "monitoring-status" {
    datacenters = ["dc1"]
    migrate {
        max_parallel = 3
        health_check = "checks"
        min_healthy_time = "15s"
        healthy_deadline = "5m"
    }

    group "zhadan.ltd" {
        count = 1
        update {
            max_parallel      = 1
            min_healthy_time  = "30s"
            healthy_deadline  = "5m"
            progress_deadline = "10m"
            auto_revert       = true
        }
        task "service-monitoring" {
            driver = "docker"

            config {
                image = "registry.domain.name/example/project:${CI_COMMIT_SHORT_SHA}"
                force_pull = true
                auth {
                    username = "gitlab_user"
                    password = "gitlab_password"
                }
                port_map {
                    http = 8000
                }
            }
            resources {
                network {
                    port "http" {}
                }
            }
        }
    }
}

براہ کرم نوٹ کریں کہ میرے پاس ایک پرائیویٹ رجسٹری ہے اور ڈوکر امیج کو کامیابی سے کھینچنے کے لیے مجھے اس میں لاگ ان کرنے کی ضرورت ہے۔ اس معاملے میں بہترین حل یہ ہے کہ Vault میں لاگ ان اور پاس ورڈ درج کریں اور پھر اسے Nomad کے ساتھ ضم کر دیں۔ خانہ بدوش مقامی طور پر والٹ کی حمایت کرتا ہے۔ لیکن پہلے، آئیے Vault میں Nomad کے لیے ضروری پالیسیاں انسٹال کرتے ہیں؛ انہیں ڈاؤن لوڈ کیا جا سکتا ہے:

# Download the policy and token role
$ curl https://nomadproject.io/data/vault/nomad-server-policy.hcl -O -s -L
$ curl https://nomadproject.io/data/vault/nomad-cluster-role.json -O -s -L

# Write the policy to Vault
$ vault policy write nomad-server nomad-server-policy.hcl

# Create the token role with Vault
$ vault write /auth/token/roles/nomad-cluster @nomad-cluster-role.json

اب، ضروری پالیسیاں بنانے کے بعد، ہم job.nomad فائل میں ٹاسک بلاک میں والٹ کے ساتھ انضمام شامل کریں گے:

vault {
  enabled = true
  address = "https://vault.domain.name:8200"
  token = "token"
}

میں ٹوکن کے ذریعہ اجازت کا استعمال کرتا ہوں اور اسے براہ راست یہاں رجسٹر کرتا ہوں، خانہ بدوش ایجنٹ شروع کرتے وقت ٹوکن کو متغیر کے طور پر بتانے کا آپشن بھی موجود ہے:

$ VAULT_TOKEN=<token> nomad agent -config /path/to/config

اب ہم والٹ کے ساتھ چابیاں استعمال کر سکتے ہیں۔ آپریشن کا اصول آسان ہے: ہم Nomad جاب میں ایک فائل بناتے ہیں جو متغیرات کی قدروں کو محفوظ کرے گی، مثال کے طور پر:

template {
                data = <<EOH
{{with secret "secrets/pipeline-keys"}}
REGISTRY_LOGIN="{{ .Data.REGISTRY_LOGIN }}"
REGISTRY_PASSWORD="{{ .Data.REGISTRY_LOGIN }}{{ end }}"

EOH
    destination = "secrets/service-name.env"
    env = true
}

اس آسان طریقہ سے، آپ کنٹینرز کی ترسیل کو Nomad کلسٹر میں ترتیب دے سکتے ہیں اور مستقبل میں اس کے ساتھ کام کر سکتے ہیں۔ میں یہ کہوں گا کہ کسی حد تک مجھے Nomad کے ساتھ ہمدردی ہے - یہ چھوٹے پروجیکٹس کے لیے زیادہ موزوں ہے جہاں Kubernetes اضافی پیچیدگی کا سبب بن سکتے ہیں اور اپنی پوری صلاحیت کو محسوس نہیں کریں گے۔ اس کے علاوہ، Nomad ابتدائی افراد کے لیے بہترین ہے — اسے انسٹال کرنا اور کنفیگر کرنا آسان ہے۔ تاہم، کچھ پروجیکٹس پر جانچ کرتے وقت، مجھے اس کے ابتدائی ورژنز میں ایک مسئلہ درپیش ہوتا ہے - بہت سے بنیادی فنکشنز وہاں نہیں ہوتے یا وہ صحیح طریقے سے کام نہیں کرتے۔ تاہم، مجھے یقین ہے کہ Nomad ترقی کرتا رہے گا اور مستقبل میں یہ وہ افعال حاصل کرے گا جن کی ہر کسی کو ضرورت ہے۔

مصنف: الیا اینڈریو، الیکسی زادان اور لائیو لینکس ٹیم کے ذریعے ترمیم کی۔


ماخذ: www.habr.com

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