தூதரகத்தைப் பயன்படுத்தி ஒரு நாடோடி கிளஸ்டரை அமைத்தல் மற்றும் கிட்லாப் உடன் ஒருங்கிணைத்தல்

அறிமுகம்

சமீபத்தில், குபெர்னெட்ஸின் புகழ் வேகமாக வளர்ந்து வருகிறது - மேலும் பல திட்டங்கள் அதை செயல்படுத்துகின்றன. நோமட் போன்ற ஒரு ஆர்கெஸ்ட்ரேட்டரை நான் தொட விரும்பினேன்: இது ஏற்கனவே HashiCorp இன் பிற தீர்வுகளைப் பயன்படுத்தும் திட்டங்களுக்கு ஏற்றது, எடுத்துக்காட்டாக, வால்ட் மற்றும் கான்சல், மேலும் உள்கட்டமைப்பின் அடிப்படையில் திட்டங்கள் சிக்கலானவை அல்ல. இந்த மெட்டீரியல் நோமடை நிறுவுதல், இரண்டு முனைகளை ஒரு கிளஸ்டராக இணைத்தல் மற்றும் நோமடை கிட்லாப் உடன் ஒருங்கிணைப்பதற்கான வழிமுறைகளைக் கொண்டிருக்கும்.

தூதரகத்தைப் பயன்படுத்தி ஒரு நாடோடி கிளஸ்டரை அமைத்தல் மற்றும் கிட்லாப் உடன் ஒருங்கிணைத்தல்

சோதனை பெஞ்ச்

சோதனை பெஞ்சைப் பற்றி கொஞ்சம்: மூன்று மெய்நிகர் சேவையகங்கள் 2 CPU, 4 RAM, 50 Gb SSD ஆகியவற்றின் சிறப்பியல்புகளுடன் பயன்படுத்தப்படுகின்றன, அவை பொதுவான உள்ளூர் நெட்வொர்க்கில் இணைக்கப்பட்டுள்ளன. அவர்களின் பெயர்கள் மற்றும் ஐபி முகவரிகள்:

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

நாடோடி, தூதரகத்தின் நிறுவல். நாடோடி கிளஸ்டரை உருவாக்குதல்

அடிப்படை நிறுவலுடன் ஆரம்பிக்கலாம். அமைப்பு எளிமையாக இருந்தபோதிலும், கட்டுரையின் ஒருமைப்பாட்டிற்காக நான் அதை விவரிக்கிறேன்: இது தேவையான போது விரைவான அணுகலுக்காக வரைவுகள் மற்றும் குறிப்புகளிலிருந்து உருவாக்கப்பட்டது.

நாம் பயிற்சியைத் தொடங்குவதற்கு முன், கோட்பாட்டுப் பகுதியைப் பற்றி விவாதிப்போம், ஏனெனில் இந்த கட்டத்தில் எதிர்கால கட்டமைப்பைப் புரிந்துகொள்வது முக்கியம்.

எங்களிடம் இரண்டு நாடோடி முனைகள் உள்ளன, அவற்றை ஒரு கிளஸ்டராக இணைக்க விரும்புகிறோம், எதிர்காலத்தில் எங்களுக்கு தானியங்கி கிளஸ்டர் அளவிடுதல் தேவைப்படும் - இதற்கு எங்களுக்கு கான்சல் தேவை. இந்த கருவி மூலம், புதிய முனைகளை கிளஸ்டரிங் செய்வது மற்றும் சேர்ப்பது மிகவும் எளிமையான பணியாகிறது: உருவாக்கப்பட்ட நோமட் நோட் கான்சல் ஏஜெண்டுடன் இணைகிறது, பின்னர் இருக்கும் நோமட் கிளஸ்டருடன் இணைக்கிறது. எனவே, ஆரம்பத்தில் நாங்கள் தூதரக சேவையகத்தை நிறுவி, வலை பேனலுக்கான அடிப்படை http அங்கீகாரத்தை உள்ளமைப்போம் (இது இயல்பாகவே அங்கீகாரம் இல்லாமல் உள்ளது மற்றும் வெளிப்புற முகவரியில் அணுகலாம்), அதே போல் நோமட் சேவையகங்களில் உள்ள கான்சல் முகவர்களும், அதன் பிறகு நாங்கள் நாடோடிக்கு மட்டுமே செல்வோம்.

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/

இப்போது எங்களிடம் மேலும் உள்ளமைவுக்கான ஆயத்த கான்சல் பைனரி உள்ளது.

தூதரகத்துடன் பணிபுரிய, கீஜென் கட்டளையைப் பயன்படுத்தி ஒரு தனித்துவமான விசையை உருவாக்க வேண்டும்:

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

முக்கிய உத்தரவுகளையும் அவற்றின் அர்த்தங்களையும் தனித்தனியாகப் பார்ப்போம்:

  • பூட்ஸ்ட்ராப்: உண்மை. புதிய முனைகள் இணைக்கப்பட்டிருந்தால் அவற்றை தானாகச் சேர்ப்போம். எதிர்பார்க்கப்படும் முனைகளின் சரியான எண்ணிக்கையை நாங்கள் இங்கு குறிப்பிடவில்லை என்பதை நான் கவனிக்கிறேன்.
  • சர்வர்: உண்மை. சர்வர் பயன்முறையை இயக்கவும். இந்த மெய்நிகர் கணினியில் உள்ள கன்சல் தற்போது ஒரே சர்வராகவும் மாஸ்டராகவும் செயல்படுவார், நோமாடின் விஎம் வாடிக்கையாளர்களாக இருக்கும்.
  • தகவல் மையம்: dc1. கிளஸ்டரை உருவாக்க தரவு மையத்தின் பெயரைக் குறிப்பிடவும். இது கிளையண்டுகள் மற்றும் சர்வர்கள் இரண்டிலும் ஒரே மாதிரியாக இருக்க வேண்டும்.
  • என்க்ரிப்ட்: உங்கள் சாவி. விசை, இது தனிப்பட்டதாக இருக்க வேண்டும் மற்றும் அனைத்து கிளையன்ட்கள் மற்றும் சர்வர்களிலும் பொருந்த வேண்டும். கன்சல் கீஜென் கட்டளையைப் பயன்படுத்தி உருவாக்கப்பட்டது.
  • தொடங்க_சேர். இந்த பட்டியலில் இணைப்பு செய்யப்படும் ஐபி முகவரிகளின் பட்டியலை நாங்கள் குறிப்பிடுகிறோம். இந்த நேரத்தில் நாங்கள் எங்கள் சொந்த முகவரியை மட்டும் விட்டுவிடுகிறோம்.

இந்த கட்டத்தில் நாம் கட்டளை வரியைப் பயன்படுத்தி தூதரகத்தை இயக்கலாம்:

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 ஐ நிறுவுதல் மற்றும் ப்ராக்ஸிங் மற்றும் 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 க்கு பயன்படுத்த முடியாது. எனது திட்டத்தில், கிட்லாப் மற்றும் நாடோடி இரண்டும் சாம்பல் வலையில் மட்டுமே இருப்பதால், இங்கு அப்படி எந்த பிரச்சனையும் இல்லை.

மீதமுள்ள இரண்டு சேவையகங்களில் பின்வரும் வழிமுறைகளின்படி தூதரக முகவர்களை நிறுவுகிறோம். பைனரி கோப்புடன் படிகளை மீண்டும் செய்கிறோம்:

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 உறுப்பினர்களில் உள்ளமைக்கப்பட்ட சேவையைப் பார்க்க வேண்டும். இது ஒரு கிளையண்டாக கிளஸ்டருடன் வெற்றிகரமாக இணைக்கப்பட்டுள்ளது என்று அர்த்தம். இரண்டாவது சேவையகத்திலும் அதையே மீண்டும் செய்யவும், அதன் பிறகு நாம் நோமடை நிறுவி உள்ளமைக்க ஆரம்பிக்கலாம்.

நோமட்டின் விரிவான நிறுவல் அதன் அதிகாரப்பூர்வ ஆவணத்தில் விவரிக்கப்பட்டுள்ளது. இரண்டு பாரம்பரிய நிறுவல் முறைகள் உள்ளன: பைனரி கோப்பை பதிவிறக்கம் செய்து மூலத்திலிருந்து தொகுத்தல். நான் முதல் முறையை தேர்வு செய்கிறேன்.

கருத்து: திட்டம் மிக விரைவாக உருவாகிறது, புதிய புதுப்பிப்புகள் அடிக்கடி வெளியிடப்படுகின்றன. இந்த கட்டுரை முடிவடைவதற்குள் புதிய பதிப்பு வெளியிடப்படும். எனவே, படிப்பதற்கு முன், நோமட்டின் தற்போதைய பதிப்பைச் சரிபார்த்து அதைப் பதிவிறக்கம் செய்ய பரிந்துரைக்கிறேன்.

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 க்கு நகர்த்தப்பட வேண்டும்.

நோமடிற்கான தரவு கோப்பகத்தை உருவாக்கி அதன் சேவைக் கோப்பைத் திருத்துவோம் (இது பெரும்பாலும் ஆரம்பத்தில் இருக்காது):

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 கட்டளையின் மதிப்பை மாற்ற வேண்டும்.

இந்த கட்டத்தில் கடைசியாக, ப்ராக்ஸிங் மற்றும் 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";
        }
        
}

இப்போது நாம் ஒரு வெளிப்புற நெட்வொர்க் வழியாக வலை பேனலை அணுகலாம். இணைத்து சர்வர்கள் பக்கத்திற்குச் செல்லவும்:

தூதரகத்தைப் பயன்படுத்தி ஒரு நாடோடி கிளஸ்டரை அமைத்தல் மற்றும் கிட்லாப் உடன் ஒருங்கிணைத்தல்
படம் 1. நாடோடி கிளஸ்டரில் உள்ள சேவையகங்களின் பட்டியல்

இரண்டு சேவையகங்களும் பேனலில் வெற்றிகரமாக காட்டப்படுகின்றன, நோமட் நோட் நிலை கட்டளையின் வெளியீட்டில் இதையே பார்ப்போம்:

தூதரகத்தைப் பயன்படுத்தி ஒரு நாடோடி கிளஸ்டரை அமைத்தல் மற்றும் கிட்லாப் உடன் ஒருங்கிணைத்தல்
படம் 2. நாடோட் நோட் நிலை கட்டளையின் வெளியீடு

கன்சல் பற்றி என்ன? பார்க்கலாம். கன்சல் கண்ட்ரோல் பேனலுக்கு, முனைகள் பக்கத்திற்குச் செல்லவும்:
தூதரகத்தைப் பயன்படுத்தி ஒரு நாடோடி கிளஸ்டரை அமைத்தல் மற்றும் கிட்லாப் உடன் ஒருங்கிணைத்தல்
படம் 3. கான்சல் கிளஸ்டரில் உள்ள முனைகளின் பட்டியல்

இப்போது எங்களிடம் ஒரு ஆயத்த நாடோடி தூதரகத்துடன் இணைந்து பணியாற்றுகிறார். இறுதி கட்டத்தில், நாம் வேடிக்கையான பகுதிக்கு வருவோம்: கிட்லாப் முதல் நோமாட் வரை டோக்கர் கொள்கலன்களை டெலிவரி செய்தல் மற்றும் அதன் வேறு சில தனித்துவமான அம்சங்களைப் பற்றியும் பேசுவோம்.

கிட்லாப் ரன்னரை உருவாக்குதல்

Nomad க்கு டோக்கர் படங்களை வரிசைப்படுத்த, உள்ளே Nomad பைனரி கோப்புடன் ஒரு தனி ரன்னரைப் பயன்படுத்துவோம் (இங்கே, ஹாஷிகார்ப் பயன்பாடுகளின் மற்றொரு அம்சத்தை நாம் கவனிக்கலாம் - தனித்தனியாக அவை ஒற்றை பைனரி கோப்பு). அதை ரன்னர் கோப்பகத்தில் பதிவேற்றவும். பின்வரும் உள்ளடக்கத்துடன் ஒரு எளிய 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-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 க்கு தேவையான கொள்கைகளை 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 {
  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
}

இந்த எளிய அணுகுமுறையுடன், நீங்கள் நாடோடி கிளஸ்டருக்கு கொள்கலன்களை வழங்குவதை உள்ளமைக்கலாம் மற்றும் எதிர்காலத்தில் அதனுடன் வேலை செய்யலாம். ஓரளவிற்கு நான் நோமாட் மீது அனுதாபம் காட்டுகிறேன் என்று கூறுவேன் - குபெர்னெட்ஸ் கூடுதல் சிக்கலை ஏற்படுத்தக்கூடிய சிறிய திட்டங்களுக்கு இது மிகவும் பொருத்தமானது மற்றும் அதன் முழு திறனையும் உணராது. கூடுதலாக, நோமட் ஆரம்பநிலைக்கு ஏற்றது - நிறுவ மற்றும் கட்டமைக்க எளிதானது. இருப்பினும், சில திட்டங்களில் சோதனை செய்யும் போது, ​​அதன் ஆரம்ப பதிப்புகளில் ஒரு சிக்கலை எதிர்கொள்கிறேன் - பல அடிப்படை செயல்பாடுகள் வெறுமனே இல்லை அல்லது அவை சரியாக வேலை செய்யவில்லை. இருப்பினும், நாடோடி தொடர்ந்து வளர்ச்சியடையும் என்றும் எதிர்காலத்தில் அனைவருக்கும் தேவையான செயல்பாடுகளை அது பெறும் என்றும் நான் நம்புகிறேன்.

ஆசிரியர்: இலியா ஆண்ட்ரீவ், அலெக்ஸி ஜாதன் மற்றும் லைவ் லினக்ஸ் குழுவால் திருத்தப்பட்டது


ஆதாரம்: www.habr.com

கருத்தைச் சேர்