เด•เต‹เตบเดธเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดจเต‹เดฎเดพเดกเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ Gitlab-เดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด†เดฎเตเด–เด‚

เด…เดŸเตเดคเตเดคเดฟเดŸเต†, เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเดฟเตปเตเดฑเต† เดœเดจเดชเตเดฐเต€เดคเดฟ เด…เดคเดฟเดตเต‡เด—เด‚ เดตเดณเดฐเตเด•เดฏเดพเดฃเต - เด•เต‚เดŸเตเดคเตฝ เด•เต‚เดŸเตเดคเตฝ เดชเตเดฐเต‹เดœเด•เตเดŸเตเด•เตพ เด‡เดคเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต. เดจเต‹เดฎเดพเดกเต เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด’เดฐเต เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดฑเตเดฑเดฑเต† เดธเตเดชเตผเดถเดฟเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเดšเตเดšเต: เดนเดพเดทเดฟเด•เต‹เตผเดชเตเดชเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเดฑเตเดฑเต เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ เด‡เดคเดฟเดจเด•เด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เตพเด•เตเด•เต เด‡เดคเต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฃเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเต‹เตพเดŸเตเดŸเต, เด•เต‹เตบเดธเตฝ, เด•เต‚เดŸเดพเดคเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เตพ เดคเดจเตเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดฒเตเดฒ. เดˆ เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเดฟเตฝ เดจเตŠเดฎเดพเดกเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดฐเดฃเตเดŸเต เดจเต‹เดกเตเด•เตพ เด’เดฐเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เด…เดคเตเดชเต‹เดฒเต† เดคเดจเตเดจเต† เดจเต‹เดฎเดพเดกเดฟเดจเต† Gitlab-เดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.

เด•เต‹เตบเดธเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดจเต‹เดฎเดพเดกเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ Gitlab-เดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดŸเต†เดธเตเดฑเตเดฑเต เดธเตเดฑเตเดฑเดพเตปเดกเต

เดŸเต†เดธเตเดฑเตเดฑเต เดฌเต†เดžเตเดšเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด•เตเดฑเดšเตเดšเต: เดฎเต‚เดจเตเดจเต เดตเต†เตผเดšเตเดตเตฝ เดธเต†เตผเดตเดฑเตเด•เตพ 2 เดธเดฟเดชเดฟเดฏเต, 4 เดฑเดพเด‚, 50 เดœเดฟเดฌเดฟ เดŽเดธเตเดŽเดธเตเดกเดฟ, เด’เดฐเต เดชเตŠเดคเต เดฒเต‹เด•เตเด•เตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดฒเต‡เด•เตเด•เต เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเดšเตเดšเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด…เดตเดฐเตเดŸเต† เดชเต‡เดฐเตเด‚ เดเดชเดฟ เดตเดฟเดฒเดพเดธเดตเตเด‚:

  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-เดฒเต‡เด•เตเด•เต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เดŽเตปเตเดฑเต† เดชเตเดฐเตŠเดœเด•เตเดฑเตเดฑเดฟเตฝ, 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";
        }
        
}

เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดฌเดพเดนเตเดฏ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดตเดดเดฟ เดตเต†เดฌเต เดชเดพเดจเดฒเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดตเต‡เดถเดฟเด•เตเด•เดพเด‚. เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตโ€Œเดคเต เดธเต†เตผเดตเดฑเตเด•เตพ เดชเต‡เดœเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•:

เด•เต‹เตบเดธเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดจเต‹เดฎเดพเดกเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ Gitlab-เดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต
เดšเดฟเดคเตเดฐเด‚ 1. เดจเต‹เดฎเดพเดกเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เดธเต†เตผเดตเดฑเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต

เดฐเดฃเตเดŸเต เดธเต†เตผเดตเดฑเตเด•เดณเตเด‚ เดชเดพเดจเดฒเดฟเตฝ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดจเต‹เดฎเดพเดกเต เดจเต‹เดกเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต เด•เดฎเดพเตปเดกเดฟเตปเตเดฑเต† เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเดฟเตฝ เดžเด™เตเด™เตพ เด’เดฐเต‡ เด•เดพเดฐเตเดฏเด‚ เด•เดพเดฃเตเด‚:

เด•เต‹เตบเดธเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดจเต‹เดฎเดพเดกเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ Gitlab-เดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต
เดšเดฟเดคเตเดฐเด‚ 2. เดจเตŠเดฎเดพเดกเต เดจเต‹เดกเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเต เด•เดฎเดพเตปเดกเดฟเตปเตเดฑเต† เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต

เด•เต‹เตบเดธเดฒเดฟเตปเตเดฑเต† เด•เดพเดฐเตเดฏเดฎเต‹? เดจเดฎเตเด•เตเด•เต เด’เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚. เด•เต‹เตบเดธเตฝ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เดชเดพเดจเดฒเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•, เดจเต‹เดกเตเด•เตพ เดชเต‡เดœเดฟเดฒเต‡เด•เตเด•เต:
เด•เต‹เตบเดธเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดจเต‹เดฎเดพเดกเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ Gitlab-เดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต
เดšเดฟเดคเตเดฐเด‚ 3. เด•เต‹เตบเดธเตฝ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เดจเต‹เดกเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต

เด‡เดชเตเดชเต‹เตพ เด•เต‹เตบเดธเดฒเตเดฎเดพเดฏเดฟ เดšเต‡เตผเดจเตเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟเดฏ เดจเดพเดŸเต‹เดŸเดฟ เดžเด™เตเด™เตพเด•เตเด•เตเดฃเตเดŸเต. เด…เดตเดธเดพเดจ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เดฐเดธเด•เดฐเดฎเดพเดฏ เดญเดพเด—เดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด•เดŸเด•เตเด•เตเด‚: Gitlab เดฎเตเดคเตฝ Nomad เดตเดฐเต†เดฏเตเดณเตเดณ เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดกเต†เดฒเดฟเดตเดฑเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•, เด•เต‚เดŸเดพเดคเต† เด…เดคเดฟเตปเตเดฑเต† เดฎเดฑเตเดฑเต เดšเดฟเดฒ เดตเตเดฏเดคเดฟเดฐเดฟเด•เตเดคเดฎเดพเดฏ เดธเดตเดฟเดถเต‡เดทเดคเด•เดณเต† เด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด•.

Gitlab เดฑเดฃเตเดฃเตผ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต

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 เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเตฝ เดจเดฎเตเด•เตเด•เต เดจเต‹เดฎเดพเดกเต เดฑเดฃเตเดฃเดฑเตเดŸเต† เด’เดฐเต เดšเดฟเดคเตเดฐเด‚ เดฒเดญเตเดฏเดฎเดพเด•เตเด‚, เด‡เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เดพเด‚, เด’เดฐเต เดชเตˆเดชเตเดชเตเดฒเตˆเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดจเต‹เดฎเดพเดกเดฟเตปเตเดฑเต† เดจเต‹เดฎเดพเดกเต เดœเต‹เดฒเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเดพเด‚.

เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเดœเตเดœเต€เด•เดฐเดฃเด‚

เดจเต‹เดฎเดพเดกเดฟเตปเตเดฑเต† เดœเต‹เดฒเดฟเดฏเตเดŸเต† เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฎเตเด•เตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเดฒเต† เดŽเตปเตเดฑเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดคเดฟเด•เดšเตเดšเตเด‚ เดชเตเดฐเดพเด•เตƒเดคเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚: เด…เดคเดฟเตฝ เด’เดฐเต เดŸเดพเดธเตเด•เต เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. .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" {}
                }
            }
        }
    }
}

เดŽเดจเดฟเด•เตเด•เต เด’เดฐเต เดธเตเดตเด•เดพเดฐเตเดฏ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟ เด‰เดฃเตเดŸเต†เดจเตเดจเตเด‚ เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด‡เดฎเต‡เดœเต เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดตเดฒเดฟเด•เตเด•เดพเตป เดžเดพเตป เด…เดคเดฟเตฝ เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเดฃเดฎเต†เดจเตเดจเตเด‚ เดฆเดฏเดตเดพเดฏเดฟ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•. เดˆ เด•เต‡เดธเดฟเดฒเต† เดเดฑเตเดฑเดตเตเด‚ เดฎเดฟเด•เดšเตเดš เดชเดฐเดฟเดนเดพเดฐเด‚ เดตเต‹เตพเดŸเตเดŸเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดฒเต‹เด—เดฟเตป, เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดจเตฝเด•เตเด•, เดคเตเดŸเตผเดจเตเดจเต เด…เดคเต เดจเต‹เดฎเดพเดกเตเดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต. เดจเต‹เดฎเดพเดกเต เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดตเต‹เตพเดŸเตเดŸเดฟเดจเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เด†เดฆเตเดฏเด‚, เดจเต‹เดฎเดพเดกเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดจเดฏเด™เตเด™เตพ เดตเต‹เตพเดŸเตเดŸเดฟเตฝ เดคเดจเตเดจเต† เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเด‚:

# 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•