Consul استعمال ڪندي Nomad ڪلستر قائم ڪرڻ ۽ Gitlab سان ضم ٿيڻ

تعارف

تازو، Kubernetes جي مقبوليت تيزي سان وڌي رهيو آهي - وڌيڪ ۽ وڌيڪ منصوبا ان تي عمل ڪري رهيا آهن. مان هڪ آرڪيسٽرٽر تي رابطو ڪرڻ چاهيان ٿو Nomad: اهو انهن منصوبن لاءِ مڪمل آهي جيڪي اڳ ۾ ئي HashiCorp کان ٻيا حل استعمال ڪن ٿا، مثال طور، Vault ۽ Consul، ۽ منصوبا پاڻ بنيادي ڍانچي جي لحاظ کان پيچيده نه آهن. ھن مواد ۾ Nomad کي انسٽال ڪرڻ، ٻن نوڊس کي ڪلستر ۾ گڏ ڪرڻ، ۽ گڏوگڏ Nomad کي Gitlab سان ضم ڪرڻ لاءِ ھدايتون شامل هونديون.

Consul استعمال ڪندي Nomad ڪلستر قائم ڪرڻ ۽ Gitlab سان ضم ٿيڻ

ٽيسٽ اسٽينڊ

ٽيسٽ بينچ بابت ٿورڙو: ٽي ورچوئل سرور استعمال ڪيا ويا آهن خاصيتن سان 2 CPU، 4 رام، 50 Gb SSD، گڏيل مقامي نيٽ ورڪ ۾. انهن جا نالا ۽ IP پتي:

  1. nomad-livelinux-01: 172.30.0.5
  2. nomad-livelinux-02: 172.30.0.10
  3. قونصل-livelinux-01: 172.30.0.15

Nomad جي تنصيب ، قونصل. Nomad ڪلستر ٺاهڻ

اچو ته بنيادي تنصيب سان شروع ڪريون. جيتوڻيڪ سيٽ اپ سادو هو، مان مضمون جي سالميت جي خاطر ان کي بيان ڪندس: اهو لازمي طور تي ڊرافٽ ۽ نوٽس مان ٺاهيو ويو هو جڏهن ضرورت هجي جلدي رسائي لاءِ.

ان کان اڳ جو اسان مشق شروع ڪريون، اسان نظرياتي حصو تي بحث ڪنداسين، ڇاڪاڻ ته هن مرحلي تي مستقبل جي جوڙجڪ کي سمجهڻ ضروري آهي.

اسان وٽ ٻه ڪومڊ نوڊس آهن ۽ اسان انهن کي هڪ ڪلستر ۾ گڏ ڪرڻ چاهيون ٿا، ۽ مستقبل ۾ اسان کي خودڪار ڪلسٽر اسڪيلنگ جي به ضرورت پوندي - ان لاءِ اسان کي ڪنسل جي ضرورت پوندي. هن ٽول سان، نون نوڊس کي ڪلستر ڪرڻ ۽ شامل ڪرڻ هڪ تمام سادو ڪم ٿي ويندو آهي: ٺاهيل Nomad node Consul agent سان ڳنڍيندو آهي، ۽ پوءِ موجوده Nomad ڪلستر سان ڳنڍيندو آهي. تنهن ڪري، شروع ۾ اسان قونصل سرور کي انسٽال ڪنداسين، ويب پينل لاءِ بنيادي http اختيار کي ترتيب ڏينداسين (اهو ڊفالٽ جي اجازت کان سواءِ آهي ۽ خارجي ايڊريس تي رسائي سگهجي ٿو)، انهي سان گڏ قونصل ايجنٽ پاڻ کي Nomad سرورز تي، جنهن کان پوءِ اسان صرف Nomad ڏانهن اڳتي وڌنداسين.

HashiCorp جا اوزار انسٽال ڪرڻ تمام سادو آهي: بنيادي طور تي، اسان صرف بائنري فائل کي بن ڊاريڪٽري ۾ منتقل ڪريون ٿا، ٽول جي ڪنفيگريشن فائل کي سيٽ ڪريو، ۽ ان جي سروس فائل ٺاھيو.

Consul بائنري فائل ڊائون لوڊ ڪريو ۽ ان کي استعمال ڪندڙ جي گھر ڊاريڪٽري ۾ کوليو:

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/

ھاڻي اسان وٽ وڌيڪ ترتيب ڏيڻ لاءِ تيار ٿيل قونصل بائنري آھي.

Consul سان ڪم ڪرڻ لاءِ، اسان کي ڪيجن ڪمانڊ استعمال ڪندي هڪ منفرد ڪيچ ٺاهڻ جي ضرورت آهي:

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 کلائنٽ هوندو.
  • دستخط: ڊي سي 1. ڪلستر ٺاهڻ لاءِ ڊيٽا سينٽر جو نالو بيان ڪريو. اهو ٻنهي ڪلائنٽ ۽ سرور تي هڪجهڙائي هجڻ گهرجي.
  • encrypt: توهان جي چاٻي. اهم، جيڪو پڻ منفرد هجڻ گهرجي ۽ سڀني ڪلائنٽ ۽ سرورز تي ميچ. ٺاهيل قونصل ڪيجن ڪمانڊ استعمال ڪندي.
  • 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>

اڳيون اسٽيج: نينگڪس کي انسٽال ڪرڻ ۽ پراکسينگ ۽ 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

پيڪنگ ڪرڻ کان پوءِ، اسان کي 65 MB وزني Nomad بائنري فائل ملندي - ان کي /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"

سرور.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";
        }
        
}

هاڻي اسان ويب پينل تائين رسائي ڪري سگھون ٿا ٻاهرين نيٽ ورڪ ذريعي. ڳنڍيو ۽ وڃو سرور جي صفحي تي:

Consul استعمال ڪندي Nomad ڪلستر قائم ڪرڻ ۽ Gitlab سان ضم ٿيڻ
تصوير 1. Nomad ڪلستر ۾ سرور جي فهرست

ٻئي سرورز ڪاميابيءَ سان پينل ۾ ڏيکاريا ويا آھن، اسين ساڳي شيءِ ڏسندا سين ٻاھرين نوڊ اسٽيٽس ڪمانڊ جي ٻاھر ۾:

Consul استعمال ڪندي Nomad ڪلستر قائم ڪرڻ ۽ Gitlab سان ضم ٿيڻ
تصوير 2. nomad node status command جو ٻاھر

قونصل بابت ڇا؟ اچو ته هڪ نظر وٺو. قونصل ڪنٽرول پينل ڏانھن وڃو، نوڊس صفحي ڏانھن:
Consul استعمال ڪندي Nomad ڪلستر قائم ڪرڻ ۽ Gitlab سان ضم ٿيڻ
تصوير 3. ڪنسل ڪلستر ۾ نوڊس جي فهرست

ھاڻي اسان وٽ ھڪڙو تيار ٿيل Nomad آھي جيڪو قونصل سان گڏ ڪم ڪري رھيو آھي. آخري مرحلي ۾، اسان مزو واري حصي تي پهچي وينداسين: گٽلاب کان Nomad تائين Docker ڪنٽينرز جي ترسيل کي ترتيب ڏيڻ، ۽ ان جي ٻين مخصوص خصوصيتن بابت پڻ ڳالهائڻ.

Gitlab رنر ٺاهڻ

Docker تصويرن کي 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}

نتيجي طور، اسان وٽ Gitlab رجسٽري ۾ Nomad رنر جي هڪ تصوير موجود هوندي، هاڻي اسان سڌو سنئون پروجيڪٽ جي مخزن ڏانهن وڃو، هڪ پائپ لائن ٺاهي ۽ Nomad جي 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 سان ضم ڪرڻ. Nomad مقامي طور تي والٽ کي سپورٽ ڪري ٿو. پر پهرين، اچو ته انسٽال ڪريون ضروري پاليسيون 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 سان همدردي آهي - اهو ننڍن منصوبن لاء وڌيڪ مناسب آهي جتي ڪبرنيٽس اضافي پيچيدگي سبب ڪري سگهي ٿي ۽ ان جي مڪمل صلاحيت کي محسوس نه ڪندو. پلس، Nomad نئين سکندڙن لاءِ ڀرپور آهي- ان کي انسٽال ڪرڻ ۽ ترتيب ڏيڻ آسان آهي. جڏهن ته، جڏهن ڪجهه منصوبن تي جاچ ڪري رهيو آهيان، مون کي ان جي شروعاتي ورزن سان هڪ مسئلو پيش اچي ٿو - ڪيترائي بنيادي ڪم نه هوندا آهن يا اهي صحيح ڪم نه ڪندا آهن. بهرحال، مان سمجهان ٿو ته Nomad ترقي جاري رکندو ۽ مستقبل ۾ اهو ڪم حاصل ڪندو جنهن جي هر ڪنهن کي ضرورت آهي.

ليکڪ: Ilya Andreev، ايڊٽ ڪيو ويو Alexey Zhadan ۽ Live Linux ٽيم


جو ذريعو: www.habr.com

تبصرو شامل ڪريو