เชชเชฐเชฟเชเชฏ
เชคเชพเชเซเชคเชฐเชฎเชพเช, เชเซเชฌเชฐเชจเซเชเซเชธเชจเซ เชฒเซเชเชชเซเชฐเชฟเชฏเชคเชพ เชเชกเชชเชฅเซ เชตเชงเซ เชฐเชนเซ เชเซ - เชตเชงเซ เช เชจเซ เชตเชงเซ เชชเซเชฐเซเชเซเชเซเชเซเชธ เชคเซเชจเซ เช เชฎเชฒ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซ. เชนเซเช เชจเซเชฎเชพเชก เชเซเชตเชพ เชเชฐเซเชเซเชธเซเชเซเชฐเซเชเชฐเชจเซ เชธเซเชชเชฐเซเชถ เชเชฐเชตเชพ เชฎเชพเชเชเชคเซ เชนเชคเซ: เชคเซ เชเชตเชพ เชชเซเชฐเซเชเซเชเซเชเซเชธ เชฎเชพเชเซ เชฏเซเชเซเชฏ เชเซ เชเซ เชชเชนเซเชฒเชพเชฅเซ เช HashiCorp เชจเชพ เช เชจเซเชฏ เชเชเซเชฒเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, Vault เช เชจเซ Consul, เช เชจเซ เชชเซเชฐเซเชเซเชเซเชเซเชธ เชชเซเชคเซ เชเชจเซเชซเซเชฐเชพเชธเซเชเซเชฐเชเซเชเชฐเชจเซ เชฆเซเชฐเชทเซเชเชฟเช เชเชเชฟเชฒ เชจเชฅเซ. เช เชธเชพเชฎเชเซเชฐเซเชฎเชพเช เชจเซเชฎเชก เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเชพ, เชเซเชฒเชธเซเชเชฐเชฎเชพเช เชฌเซ เชจเซเชกเชจเซ เชเซเชกเชตเชพ เชคเซเชฎเช เชเชฟเชเชฒเซเชฌ เชธเชพเชฅเซ เชจเซเชฎเชพเชกเชจเซ เชเชเซเชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซเชจเซ เชธเซเชเชจเชพเช เชนเชถเซ.
เชเซเชธเซเช เชฌเซเชจเซเช
เชเซเชธเซเช เชฌเซเชเช เชตเชฟเชถเซ เชฅเซเชกเซเช: เชคเซเชฐเชฃ เชตเชฐเซเชเซเชฏเซเช เชฒ เชธเชฐเซเชตเชฐเซเชธเชจเซ เชเชชเชฏเซเช 2 CPU, 4 RAM, 50 Gb SSD, เชเช เชธเชพเชฎเชพเชจเซเชฏ เชธเซเชฅเชพเชจเชฟเช เชจเซเชเชตเชฐเซเชเชฎเชพเช เชเชเซเชเซเชค เชฒเชเซเชทเชฃเซ เชธเชพเชฅเซ เชฅเชพเชฏ เชเซ. เชคเซเชฎเชจเชพ เชจเชพเชฎ เช เชจเซ IP เชธเชฐเชจเชพเชฎเชพเช:
- nomad-livelinux-01: 172.30.0.5
- nomad-livelinux-02: 172.30.0.10
- 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/
เชนเชตเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชตเชงเซ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชฎเชพเชเซ เชคเซเชฏเชพเชฐ เชเซเชจเซเชธเชฒ เชฌเชพเชเชจเชฐเซ เชเซ.
เชเซเชจเซเชธเซเชฏเซเชฒ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ, เช เชฎเชพเชฐเซ 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"]
}
เชเชพเชฒเซ เชฎเซเชเซเชฏ เชจเชฟเชฐเซเชฆเซเชถเซ เช เชจเซ เชคเซเชฎเชจเชพ เช เชฐเซเชฅเซเชจเซ เช เชฒเชเชฅเซ เชเซเชเช:
- เชฌเซเชเชธเซเชเซเชฐเซเชช: เชธเชพเชเซเช. เชเซ เชจเชตเชพ เชจเซเชกเซเชธ เชเซเชกเชพเชฏเซเชฒเชพ เชนเซเชฏ เชคเซ เช เชฎเซ เชเชชเซเชเชช เชเชฎเซเชฐเชฃเชจเซ เชธเชเซเชทเชฎ เชเชฐเซเช เชเซเช. เชนเซเช เชจเซเชเชงเซเช เชเซเช เชเซ เช เชฎเซ เช เชนเซเช เช เชชเซเชเซเชทเชฟเชค เชเชพเชเช เซเชจเซ เชเซเชเซเชเชธ เชธเชเชเซเชฏเชพ เชธเซเชเชตเชคเชพ เชจเชฅเซ.
- เชธเชฐเซเชตเชฐ: เชธเชพเชเซเช. เชธเชฐเซเชตเชฐ เชฎเซเชกเชจเซ เชธเชเซเชทเชฎ เชเชฐเซ. เช เชตเชฐเซเชเซเชฏเซเช เชฒ เชฎเชถเซเชจ เชชเชฐ เชเชจเซเชธเซเชฏเซเชฒ เช เชเซเชทเชฃเซ เชเชเชฎเชพเชคเซเชฐ เชธเชฐเซเชตเชฐ เช เชจเซ เชฎเชพเชธเซเชเชฐ เชคเชฐเซเชเซ เชเชพเชฎ เชเชฐเชถเซ, เชจเซเชฎเชพเชกเชจเชพ VM เชเซเชฒเชพเชฏเชจเซเช เชนเชถเซ.
- เชฎเชพเชนเซเชคเซ เชฎเชฅเช: dc1. เชเซเชฒเชธเซเชเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ เชกเซเชเชพ เชธเซเชจเซเชเชฐเชจเซเช เชจเชพเชฎ เชธเซเชชเชทเซเช เชเชฐเซ. เชคเซ เชเซเชฒเชพเชฏเชเช เช เชจเซ เชธเชฐเซเชตเชฐ เชฌเชเชจเซ เชชเชฐ เชธเชฎเชพเชจ เชนเซเชตเซเช เชเซเชเช.
- เชเชจเซเชเซเชฐเชฟเชชเซเช: เชคเชฎเชพเชฐเซ-เชเซ. เชเซ, เชเซ เช เชจเชจเซเชฏ เชนเซเชตเซ เชเซเชเช เช เชจเซ เชฌเชงเชพ เชเซเชฒเชพเชฏเชเช เช เชจเซ เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชฎเซเชณ เชเชพเชคเซ เชนเซเชตเซ เชเซเชเช. เชเซเชจเซเชธเชฒ เชเซเชเซเชจ เชเชฆเซเชถเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชจเชฐเซเช เชเชฐเซเชฒ.
- เชถเชฐเซเชเชค_เชเซเชเชจ. เช เชธเซเชเชฟเชฎเชพเช เช เชฎเซ 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
เชธเชฟเชธเซเชเชฎเชธเซเชเซเชเชฒ เชฆเซเชตเชพเชฐเชพ เชเซเชจเซเชธเซเชฏเซเชฒ เชฒเซเชเช เชเชฐเซ:
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 เชตเชเชจเชจเซ เชจเซเชฎเซเชก เชฌเชพเชเชจเชฐเซ เชซเชพเชเชฒ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ - เชคเซเชจเซ /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. nomad node status เชเชฆเซเชถเชจเซเช เชเชเชเชชเซเช
เชเซเชจเซเชธเซเชฏเซเชฒ เชตเชฟเชถเซ เชถเซเช? เชเชพเชฒเซ เชเช เชจเชเชฐ เชเชฐเซเช. เชเซเชจเซเชธเชฒ เชเชเชเซเชฐเซเชฒ เชชเซเชจเชฒ เชชเชฐ เชเชพเช, เชจเซเชกเซเชธ เชชเซเช เชชเชฐ เชเชพเช:
เชเชฌเซ 3. เชเซเชจเซเชธเซเชฏเซเชฒ เชเซเชฒเชธเซเชเชฐเชฎเชพเช เชจเซเชกเซเชธเชจเซ เชธเซเชเชฟ
เชนเชตเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชเช เชคเซเชฏเชพเชฐ เชจเซเชฎเชก เชเซ เชเซ เชเซเชจเซเชธเซเชฏเซเชฒ เชธเชพเชฅเซ เชฎเชณเซเชจเซ เชเชพเชฎ เชเชฐเซ เชเซ. เช เชเชคเชฟเชฎ เชคเชฌเชเซเชเชพเชฎเชพเช, เช เชฎเซ เชฎเชจเซเชฐเชเชเช เชญเชพเช เชชเชฐ เชชเชนเซเชเชเซเชถเซเช: เชเชฟเชเชฒเซเชฌเชฅเซ เชจเซเชฎเชพเชก เชธเซเชงเซ เชกเซเชเชฐ เชเชจเซเชเซเชจเชฐเชจเซ เชกเชฟเชฒเชฟเชตเชฐเซ เชธเซเช เชเชฐเชตเซ, เช เชจเซ เชคเซเชจเซ เชเซเชเชฒเซเช เช เชจเซเชฏ เชตเชฟเชถเชฟเชทเซเช เชธเซเชตเชฟเชงเชพเช เชตเชฟเชถเซ เชชเชฃ เชตเชพเชค เชเชฐเชตเซ.
เชเชฟเชเชฒเซเชฌ เชฐเชจเชฐ เชฌเชจเชพเชตเชตเซเช
เชจเซเชฎเซเชกเชฎเชพเช เชกเซเชเชฐ เชเชฎเซเชเซเชธ เชเชฎเชพเชตเชตเชพ เชฎเชพเชเซ, เช เชฎเซ เชจเซเชฎเซเชก เชฌเชพเชเชจเชฐเซ เชซเชพเชเชฒเชจเซ เช เชเชฆเชฐ เชเช เช เชฒเช เชฐเชจเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช (เช เชนเซเช, เชฎเชพเชฐเซเช เชฆเซเชตเชพเชฐเชพ, เช เชฎเซ เชนเชพเชถเชฟเชเซเชฐเซเชช เชเชชเซเชฒเซเชเซเชถเชจเชจเซ เชฌเซเชเซ เชตเชฟเชถเซเชทเชคเชพ เชจเซเชเชงเซ เชถเชเซเช เชเซเช - เชตเซเชฏเชเซเชคเชฟเชเชค เชฐเซเชคเซ เชคเซ เชเช เช เชฌเชพเชเชจเชฐเซ เชซเชพเชเชฒ เชเซ). เชคเซเชจเซ เชฐเชจเชฐ เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช เช เชชเชฒเซเชก เชเชฐเซ. เชเชพเชฒเซ เชจเซเชเซเชจเซ เชธเชพเชฎเชเซเชฐเซ เชธเชพเชฅเซ เชคเซเชจเชพ เชฎเชพเชเซ เชเช เชธเชฐเชณ เชกเซเชเชฐเชซเชพเชเชฒ เชฌเชจเชพเชตเซเช:
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" {}
}
}
}
}
}
เชฎเชนเซเชฐเชฌเชพเชจเซ เชเชฐเซเชจเซ เชจเซเชเชง เชเชฐเซ เชเซ เชฎเชพเชฐเซ เชชเชพเชธเซ เชเชพเชจเชเซ เชฐเชเชฟเชธเซเชเซเชฐเซ เชเซ เช เชจเซ เชธเชซเชณเชคเชพเชชเซเชฐเซเชตเช เชกเซเชเชฐ เชเชฎเซเช เชเซเชเชเชตเชพ เชฎเชพเชเซ เชฎเชพเชฐเซ เชคเซเชฎเชพเช เชฒเซเช เชเชจ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เช เชเชฟเชธเซเชธเชพเชฎเชพเช เชถเซเชฐเซเชทเซเช เชเชเซเชฒ เช เชเซ เชเซ เชตเซเชฒเซเชเชฎเชพเช เชฒเซเชเชฟเชจ เช เชจเซ เชชเชพเชธเชตเชฐเซเชก เชฆเชพเชเชฒ เชเชฐเซ เช เชจเซ เชชเชเซ เชคเซเชจเซ เชจเซเชฎเชก เชธเชพเชฅเซ เชเชเซเชเซเชค เชเชฐเซ. เชจเซเชฎเชพเชก เชฎเซเชณ เชฐเซเชคเซ เชตเซเชฒเซเชเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ. เชชเชฐเชเชคเซ เชชเซเชฐเชฅเชฎ, เชตเซเชฒเซเชเชฎเชพเช เช, เช เชฎเซ เชจเซเชฎเชพเชก เชฎเชพเชเซ เชเชฐเซเชฐเซ เชจเซเชคเชฟเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชถเซเช, เชคเชฎเซ เชคเซเชจเซ เชกเชพเชเชจเชฒเซเชก เชเชฐเซ เชถเชเซ เชเซ:
# 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