කොන්සල් භාවිතයෙන් 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 node කොන්සල් නියෝජිතයා වෙත සම්බන්ධ වන අතර, පසුව පවතින Nomad පොකුරට සම්බන්ධ වේ. එබැවින්, ආරම්භයේදී අපි කොන්සල් සේවාදායකය ස්ථාපනය කර, වෙබ් පැනලය සඳහා මූලික http අවසරය වින්‍යාස කරන්නෙමු (එය පෙරනිමියෙන් අවසරයකින් තොරව වන අතර බාහිර ලිපිනයකින් ප්‍රවේශ විය හැක), මෙන්ම Nomad සේවාදායකයන්හි සිටින කොන්සල් නියෝජිතයින්ද, ඉන් පසුව අපි නෝමාඩ් වෙත පමණක් ගමන් කරමු.

HashiCorp හි මෙවලම් ස්ථාපනය කිරීම ඉතා සරල ය: මූලික වශයෙන්, අපි ද්විමය ගොනුව bin බහලුම වෙත ගෙන ගොස්, මෙවලමෙහි වින්‍යාස ගොනුව සකසා එහි සේවා ගොනුව සාදන්නෙමු.

කොන්සල් ද්විමය ගොනුව බාගත කර එය පරිශීලකයාගේ මුල් නාමාවලියට ඉවත් කරන්න:

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"]
}

ප්‍රධාන විධාන සහ ඒවායේ අර්ථයන් වෙන වෙනම බලමු:

  • bootstrap: සැබෑ. අපි නව නෝඩ් සම්බන්ධ කර ඇත්නම් ඒවා ස්වයංක්‍රීයව එකතු කරන්නෙමු. අපි මෙහි අපේක්ෂිත නෝඩ් ගණන නිශ්චිතව සඳහන් නොකරන බව මම සටහන් කරමි.
  • සේවාදායකය: සැබෑ. සේවාදායක මාදිලිය සක්රිය කරන්න. මෙම අතථ්‍ය යන්ත්‍රයේ කොන්සල්වරයා මේ මොහොතේ එකම සේවාදායකය සහ ප්‍රධානියා ලෙස ක්‍රියා කරනු ඇත, Nomad's VM සේවාදායකයින් වනු ඇත.
  • දත්ත මධ්යස්ථානය: dc1. පොකුර සෑදීමට දත්ත මධ්යස්ථානයේ නම සඳහන් කරන්න. එය සේවාදායකයන් සහ සේවාදායකයන් යන දෙකෙහිම සමාන විය යුතුය.
  • ගුප්තකේතනය කර ඇත: ඔබේ යතුර. යතුර, එයද අනන්‍ය විය යුතු අතර සියලුම සේවාලාභීන් සහ සේවාදායකයන් මත ගැලපේ. consul keygen විධානය භාවිතයෙන් උත්පාදනය කර ඇත.
  • ආරම්භ_එකතු වන්න. මෙම ලැයිස්තුවේ අපි සම්බන්ධතාවය ඇති කරන IP ලිපින ලැයිස්තුවක් දක්වයි. දැනට අපි ඉතිරි කරන්නේ අපේම ලිපිනය පමණයි.

මෙම අවස්ථාවේදී, අපට විධාන රේඛාව භාවිතයෙන් කොන්සල් ක්රියාත්මක කළ හැකිය:

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

මෙය දැන් දෝෂහරණය කිරීමට හොඳ ක්‍රමයකි, කෙසේ වෙතත්, පැහැදිලි හේතු නිසා ඔබට මෙම ක්‍රමය අඛණ්ඩව භාවිතා කිරීමට නොහැකි වනු ඇත. systemd හරහා කොන්සල් කළමනාකරණය කිරීමට සේවා ගොනුවක් සාදන්න:

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

systemctl හරහා කොන්සල් දියත් කරන්න:

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 ස්ථාපනය කිරීම සහ proxying සහ 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 දෙකම තියෙන්නේ gray web එකේ විතරයි ඉතින් මෙතන එහෙම ප්‍රශ්නයක් නෑ.

ඉතිරි සේවාදායකයන් දෙකෙහි අපි පහත උපදෙස් අනුව කොන්සල් නියෝජිතයන් ස්ථාපනය කරමු. අපි ද්විමය ගොනුව සමඟ පියවර නැවත කරන්නෙමු:

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

කෙසේ වෙතත්, අපි nomad දියත් කිරීමට ඉක්මන් නොවෙමු - අපි තවමත් එහි වින්‍යාස ගොනුව නිර්මාණය කර නැත:

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 විධානයේ අගය වෙනස් කිරීමට අවශ්‍ය වනු ඇත.

මෙම අදියරේ අවසාන දෙය නම් ප්‍රොක්සි කිරීම සහ http අවසරය සැකසීම සඳහා Nginx වින්‍යාස කිරීමයි. 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 node තත්ව විධානයේ ප්‍රතිදානයේ එකම දේ දකිමු:

කොන්සල් භාවිතයෙන් Nomad පොකුරක් පිහිටුවීම සහ Gitlab සමඟ ඒකාබද්ධ කිරීම
රූපය 2. nomad node තත්ව විධානයේ ප්‍රතිදානය

කොන්සල් ගැන කුමක් කිව හැකිද? අපි බලමු. කොන්සල් පාලක පැනලය වෙත, නෝඩ් පිටුවට යන්න:
කොන්සල් භාවිතයෙන් Nomad පොකුරක් පිහිටුවීම සහ Gitlab සමඟ ඒකාබද්ධ කිරීම
රූපය 3. කොන්සල් පොකුරේ ඇති නෝඩ් ලැයිස්තුව

දැන් අපි කොන්සල් සමඟ ඒකාබද්ධව වැඩ කරන සූදානම් කළ නෝමාඩ් කෙනෙක් ඉන්නවා. අවසාන අදියරේදී, අපි විනෝදජනක කොටස වෙත පිවිසෙමු: Gitlab සිට Nomad දක්වා Docker බහාලුම් බෙදා හැරීම සහ එහි වෙනත් සුවිශේෂී ලක්ෂණ ගැන කතා කිරීම.

Gitlab ධාවකය නිර්මාණය කිරීම

Nomad වෙත ඩොකර් පින්තූර යෙදවීම සඳහා, අපි ඇතුළත Nomad ද්විමය ගොනුව සහිත වෙනම ධාවකයක් භාවිතා කරන්නෙමු (මෙහි, මාර්ගය වන විට, අපට Hashicorp යෙදුම්වල තවත් විශේෂාංගයක් සටහන් කළ හැකිය - තනි තනිව ඒවා තනි ද්විමය ගොනුවකි). එය ධාවන නාමාවලියට උඩුගත කරන්න. පහත අන්තර්ගතය සමඟ අපි ඒ සඳහා සරල Dockerfile එකක් නිර්මාණය කරමු:


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 Registry හි 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

මෙහිදී යෙදවීම අතින් සිදු වේ, නමුත් ව්‍යාපෘති නාමාවලියෙහි අන්තර්ගතය වෙනස් කිරීමට ඔබට එය වින්‍යාසගත කළ හැක. නල මාර්ගය අදියර දෙකකින් සමන්විත වේ: රූප එකලස් කිරීම සහ එය නෝමැඩ් වෙත යෙදවීම. පළමු අදියරේදී, අපි ඩොකර් රූපයක් එකලස් කර එය අපගේ රෙජිස්ට්‍රියට තල්ලු කරමු, දෙවනුව අපි නොමාඩ් හි අපගේ රැකියාව දියත් කරමු.

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" {}
                }
            }
        }
    }
}

මට පුද්ගලික රෙජිස්ට්‍රියක් ඇති බවත්, ඩොකර් රූපයක් සාර්ථකව ඇද ගැනීමට මා එයට ලොග් විය යුතු බවත් කරුණාවෙන් සලකන්න. මෙම නඩුවේ හොඳම විසඳුම වන්නේ වෝල්ට් වෙත පිවිසුම් සහ මුරපදය ඇතුළත් කර එය Nomad සමඟ ඒකාබද්ධ කිරීමයි. Nomad ස්වදේශිකව වෝල්ට් සඳහා සහය දක්වයි. නමුත් පළමුව, Nomad සඳහා අවශ්‍ය ප්‍රතිපත්ති Vault තුළම ස්ථාපනය කරමු; ඒවා බාගත කළ හැකිය:

# 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 සමඟ ඒකාබද්ධ කිරීම එක් කරන්නෙමු:

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

මම ටෝකනය මගින් අවසරය භාවිතා කර එය සෘජුවම මෙහි ලියාපදිංචි කරමි, නාමික නියෝජිතයා ආරම්භ කිරීමේදී ටෝකනය විචල්‍යයක් ලෙස සඳහන් කිරීමේ විකල්පය ද ඇත:

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

දැන් අපට වෝල්ට් සමඟ යතුරු භාවිතා කළ හැකිය. ක්‍රියාකාරීත්වයේ මූලධර්මය සරලයි: අපි නෝමැඩ් රැකියාවේ ගොනුවක් සාදන්නෙමු එය විචල්‍යවල අගයන් ගබඩා කරයි, උදාහරණයක් ලෙස:

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 දිගටම වර්ධනය වන අතර අනාගතයේදී එය සෑම කෙනෙකුටම අවශ්ය කාර්යයන් අත්පත් කර ගනු ඇතැයි මම විශ්වාස කරමි.

කර්තෘ: Ilya Andreev, Alexey Zhadan සහ Live Linux කණ්ඩායම විසින් සංස්කරණය කරන ලදී


මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න