เจเจพเจฃ เจชเจเจพเจฃ
เจนเจพเจฒ เจนเฉ เจตเจฟเฉฑเจ, เจเฉเจฌเจฐเจจเฉเจเจธ เจฆเฉ เจชเฉเจฐเจธเจฟเฉฑเจงเฉ เจคเฉเจเจผเฉ เจจเจพเจฒ เจตเจง เจฐเจนเฉ เจนเฉ - เจตเฉฑเจง เจคเฉเจ เจตเฉฑเจง เจชเฉเจฐเฉเจเฉเจเจ เจเจธเจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐ เจฐเจนเฉ เจนเจจ. เจฎเฉเจ เจจเฉเจฎเฉเจก เจตเจฐเจเฉ เจเจฐเจเฉเจธเจเจฐเฉเจเจฐ เจจเฉเฉฐ เจเฉเจนเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจธเฉ: เจเจน เจเจนเจจเจพเจ เจชเฉเจฐเฉเจเฉเจเจเจพเจ เจฒเจ เจธเฉฐเจชเฉเจฐเจจ เจนเฉ เจเฉ เจชเจนเจฟเจฒเจพเจ เจนเฉ HashiCorp เจคเฉเจ เจฆเฉเจเฉ เจนเฉฑเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเจจ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจตเจพเจฒเจ เจ เจคเฉ เจเฉเจเจธเจฒ, เจ เจคเฉ เจชเฉเจฐเฉเจเฉเจเจ เจเฉเจฆ เจฌเฉเจจเจฟเจเจฆเฉ เจขเจพเจเจเฉ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจจเจนเฉเจ เจนเจจเฅค เจเจธ เจธเจฎเฉฑเจเจฐเฉ เจตเจฟเฉฑเจ เจจเฉเจฎเฉเจก เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเจจ, เจฆเฉ เจจเฉเจกเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจเฉเฉเจจ เจฆเฉ เจจเจพเจฒ-เจจเจพเจฒ เจเจฟเจเจฒเจฌ เจจเจพเจฒ เจจเฉเจฎเฉเจก เจจเฉเฉฐ เจเฉเฉเจจ เจฒเจ เจจเจฟเจฐเจฆเฉเจธเจผ เจธเจผเจพเจฎเจฒ เจนเฉเจฃเจเฉเฅค
เจเฉเจธเจ เจธเจเฉเจเจก
เจเฉเจธเจ เจฌเฉเจเจ เจฌเจพเจฐเฉ เจฅเฉเฉเจพ เจเจฟเจนเจพ: เจคเจฟเฉฐเจจ เจตเจฐเจเฉเจ เจฒ เจธเจฐเจตเจฐ 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
Nomad, Consul เจฆเฉ เจธเจฅเจพเจชเจจเจพ. เจจเฉเจฎเฉเจก เจเจฒเฉฑเจธเจเจฐ เจฌเจฃเจพเจเจฃเจพ
เจเจ เจฌเฉเจจเจฟเจเจฆเฉ เจเฉฐเจธเจเจพเจฒเฉเจธเจผเจจ เจจเจพเจฒ เจธเจผเฉเจฐเฉ เจเจฐเฉเจ. เจนเจพเจฒเจพเจเจเจฟ เจธเฉเฉฑเจเจ เฉฑเจช เจธเจงเจพเจฐเจจ เจธเฉ, เจฎเฉเจ เจฒเฉเจ เจฆเฉ เจเจเจธเจพเจฐเจคเจพ เจฆเฉ เจเจผเจพเจคเจฐ เจเจธเจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจพเจเจเจพ: เจเจน เจเจผเจฐเฉเจฐเฉ เจคเฉเจฐ 'เจคเฉ เจฒเฉเฉ เจชเฉเจฃ 'เจคเฉ เจคเฉเจฐเฉฐเจค เจชเจนเฉเฉฐเจ เจฒเจ เจกเจฐเจพเจซเจ เจ เจคเฉ เจจเฉเจเจธ เจคเฉเจ เจฌเจฃเจพเจเจ เจเจฟเจ เจธเฉเฅค
เจ เจญเจฟเจเจธ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ, เจ เจธเฉเจ เจธเจฟเจงเจพเจเจคเจ เจนเจฟเฉฑเจธเฉ เจฆเฉ เจเจฐเจเจพ เจเจฐเจพเจเจเฉ, เจเจฟเจเจเจเจฟ เจเจธ เจชเฉเจพเจ 'เจคเฉ เจญเจตเจฟเฉฑเจ เจฆเฉ เจขเจพเจเจเฉ เจจเฉเฉฐ เจธเจฎเจเจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉเฅค
เจธเจพเจกเฉ เจเฉเจฒ เจฆเฉ เจจเฉเจฎเฉเจก เจจเฉเจก เจนเจจ เจ เจคเฉ เจ เจธเฉเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจเฉเฉเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจพเจ, เจ เจคเฉ เจญเจตเจฟเฉฑเจ เจตเจฟเฉฑเจ เจธเจพเจจเฉเฉฐ เจเจเฉเจฎเฉเจเจฟเจ เจเจฒเฉฑเจธเจเจฐ เจธเจเฉเจฒเจฟเฉฐเจ เจฆเฉ เจตเฉ เจฒเฉเฉ เจชเจตเฉเจเฉ - เจเจธเจฆเฉ เจฒเจ เจธเจพเจจเฉเฉฐ เจเฉเจเจธเจฒ เจฆเฉ เจฒเฉเฉ เจชเจตเฉเจเฉเฅค เจเจธ เจเฉเจฒ เจฆเฉ เจจเจพเจฒ, เจจเจตเฉเจ เจจเฉเจกเจธ เจจเฉเฉฐ เจเจฒเฉฑเจธเจเจฐ เจเจฐเจจเจพ เจ เจคเฉ เจเฉเฉเจจเจพ เจเฉฑเจ เจฌเจนเฉเจค เจนเฉ เจธเจงเจพเจฐเจจ เจเฉฐเจฎ เจฌเจฃ เจเจพเจเจฆเจพ เจนเฉ: เจฌเจฃเจพเจเจ เจเจฟเจ เจจเฉเจฎเจก เจจเฉเจก เจเฉเจเจธเจฒ เจเจเฉฐเจ เจจเจพเจฒ เจเฉเฉเจฆเจพ เจนเฉ, เจ เจคเฉ เจซเจฟเจฐ เจฎเฉเจเฉเจฆเจพ เจจเฉเจฎเจก เจเจฒเฉฑเจธเจเจฐ เจจเจพเจฒ เจเฉเฉเจฆเจพ เจนเฉเฅค เจเจธ เจฒเจ, เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ เจ เจธเฉเจ เจเฉเจเจธเจฒ เจธเจฐเจตเจฐ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเจพเจเจเฉ, เจตเฉเจฌ เจชเฉเจจเจฒ เจฒเจ เจฎเฉเจฒ 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/
เจนเฉเจฃ เจธเจพเจกเฉ เจเฉเจฒ เจนเฉเจฐ เจธเฉฐเจฐเจเจจเจพ เจฒเจ เจเฉฑเจ เจคเจฟเจเจฐ-เจเฉเจคเฉ เจเฉเจเจธเจฒ เจฌเจพเจเจจเจฐเฉ เจนเฉเฅค
Consul เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ, เจธเจพเจจเฉเฉฐ 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"]
}
เจเจ เจฎเฉเฉฑเจ เจจเจฟเจฐเจฆเฉเจธเจผเจพเจ เจ เจคเฉ เจเจนเจจเจพเจ เจฆเฉ เจ เจฐเจฅเจพเจ เจจเฉเฉฐ เจตเฉฑเจเจฐเฉ เจคเฉเจฐ 'เจคเฉ เจตเฉเจเฉเจ:
- เจฌเฉเจเจธเจเจฐเฉเจช: เจธเฉฑเจ เจนเฉเฅค เจ เจธเฉเจ เจจเจตเฉเจ เจจเฉเจกเจพเจ เจฆเฉ เจเจเฉเจฎเฉเจเจฟเจ เจเฉเฉ เจจเฉเฉฐ เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจเจเจฆเฉ เจนเจพเจ เจเฉเจเจฐ เจเจน เจเฉเฉเฉ เจนเฉเจ เจนเจจเฅค เจฎเฉเจ เจจเฉเจ เจเจฐเจฆเจพ เจนเจพเจ เจเจฟ เจ เจธเฉเจ เจเฉฑเจฅเฉ เจธเฉฐเจญเจพเจตเจฟเจค เจจเฉเจกเจพเจ เจฆเฉ เจธเจนเฉ เจธเฉฐเจเจฟเจ เจจเจนเฉเจ เจฆเจฐเจธเจพเจเจเจฆเฉ เจนเจพเจเฅค
- เจธเจฐเจตเจฐ: เจธเฉฑเจ เจนเฉเฅค เจธเจฐเจตเจฐ เจฎเฉเจก เจจเฉเฉฐ เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจเฅค เจเจธ เจตเจฐเจเฉเจ เจฒ เจฎเจธเจผเฉเจจ 'เจคเฉ เจเฉเจเจธเจฒ เจเจธ เจธเจฎเฉเจ เจเจเฉ เจธเจฐเจตเจฐ เจ เจคเฉ เจฎเจพเจธเจเจฐ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจเฉฐเจฎ เจเจฐเฉเจเจพ, Nomad's VM เจเจพเจนเจ เจนเฉเจฃเจเฉเฅค
- เจกเจพเจเจพเจธเฉเจเจเจฐ: dc1. เจเจฒเฉฑเจธเจเจฐ เจฌเจฃเจพเจเจฃ เจฒเจ เจกเฉเจเจพ เจธเฉเจเจเจฐ เจฆเจพ เจจเจพเจฎ เจฆเจฟเจเฅค เจเจน เจเจฒเจพเจเฉฐเจเจธ เจ เจคเฉ เจธเจฐเจตเจฐ เจฆเฉเจตเจพเจ 'เจคเฉ เจเฉฑเจเฉ เจเจฟเจนเจพ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
- เจเจจเจเฉเจฐเจฟเจชเจ: เจคเฉเจนเจพเจกเฉ-เจเฉเฉฐเจเฉ. เจเฉเฉฐเจเฉ, เจเฉ เจเจฟ เจตเจฟเจฒเฉฑเจเจฃ เจตเฉ เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเฉ เจ เจคเฉ เจธเจพเจฐเฉ เจเจฒเจพเจเฉฐเจเจพเจ เจ เจคเฉ เจธเจฐเจตเจฐเจพเจ 'เจคเฉ เจฎเฉเจฒ เจเจพเจเจฆเฉ เจนเฉเฅค consul keygen เจเจฎเจพเจเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจคเจฟเจเจฐ เจเฉเจคเจพ เจเจฟเจเฅค
- start_join. เจเจธ เจธเฉเจเฉ เจตเจฟเฉฑเจ เจ เจธเฉเจ IP เจชเจคเจฟเจเจ เจฆเฉ เจเฉฑเจ เจธเฉเจเฉ เจฆเจฐเจธเจพเจเจเจฆเฉ เจนเจพเจ เจเจฟเจธ เจจเจพเจฒ เจเฉเจจเฉเจเจธเจผเจจ เจฌเจฃเจพเจเจ เจเจพเจตเฉเจเจพเฅค เจซเจฟเจฒเจนเจพเจฒ เจ เจธเฉเจ เจธเจฟเจฐเจซ เจเจชเจฃเจพ เจชเจคเจพ เจนเฉ เจเฉฑเจกเจฆเฉ เจนเจพเจเฅค
เจเจธ เจฌเจฟเฉฐเจฆเฉ 'เจคเฉ เจ เจธเฉเจ เจเจฎเจพเจเจก เจฒเจพเจเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉเจเจธเจฒ เจเจฒเจพ เจธเจเจฆเฉ เจนเจพเจ:
root@consul-livelinux-01:~# /usr/local/bin/consul agent -config-dir /etc/consul.d/bootstrap -ui
เจเจน เจนเฉเจฃ เจกเฉเจฌเฉฑเจ เจเจฐเจจ เจฆเจพ เจเฉฑเจ เจตเจงเฉเจ เจคเจฐเฉเจเจพ เจนเฉ, เจนเจพเจฒเจพเจเจเจฟ, เจคเฉเจธเฉเจ เจธเจชเฉฑเจธเจผเจ เจเจพเจฐเจจเจพเจ เจเจฐเจเฉ เจเจธ เจตเจฟเจงเฉ เจฆเฉ เจจเจฟเจฐเฉฐเจคเจฐ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจฏเฉเจ เจจเจนเฉเจ เจนเฉเจตเฉเจเฉเฅค เจเจ เจธเจฟเจธเจเจฎเจก เจฆเฉเจเจฐเจพ เจเฉเจเจธเจฒ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจธเฉเจตเจพ เจซเจพเจเจฒ เจฌเจฃเจพเจเจ:
root@consul-livelinux-01:~# nano /etc/systemd/system/consul.service
consul.service เจซเจพเจเจฒ เจฆเฉ เจธเจฎเฉฑเจเจฐเฉ:
[Unit]
Description=Consul Startup process
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash -c '/usr/local/bin/consul agent -config-dir /etc/consul.d/bootstrap -ui'
TimeoutStartSec=0
[Install]
WantedBy=default.target
เจธเจฟเจธเจเจฎเจธเฉเจเฉเจเจฒ เจฆเฉเจเจฐเจพ เจเฉเจเจธเจฒ เจฒเจพเจเจ เจเจฐเฉ:
root@consul-livelinux-01:~# systemctl start consul
เจเจ เจเจพเจเจ เจเจฐเฉเจ: เจธเจพเจกเฉ เจธเฉเจตเจพ เจเฉฑเจฒ เจฐเจนเฉ เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเฉ, เจ เจคเฉ เจเฉเจเจธเจฒ เจฎเฉเจเจฌเจฐเจพเจ เจฆเฉ เจเจฎเจพเจเจก เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจเฉ เจธเจพเจจเฉเฉฐ เจเจชเจฃเจพ เจธเจฐเจตเจฐ เจฆเฉเจเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ:
root@consul-livelinux:/etc/consul.d# consul members
consul-livelinux 172.30.0.15:8301 alive server 1.5.0 2 dc1 <all>
เจ เจเจฒเจพ เจชเฉเจพเจ : 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 เจธเฉเจ เจ เจช เจเจฐเจฆเฉ เจธเจฎเฉเจ, เจธเจพเจจเฉเฉฐ เจเจธ เจจเฉเฉฐ เจเฉฑเจกเจฃเจพ เจชเจเจเจพ - เจจเจนเฉเจ เจคเจพเจ เจ เจธเฉเจ เจเจชเจฃเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจจเฉเจฎเฉเจก 'เจคเฉ เจคเจพเจเจจเจพเจค เจเจฐเจจ เจฆเฉ เจฏเฉเจ เจจเจนเฉเจ เจนเฉเจตเจพเจเจเฉเฅค เจฎเฉเจฐเฉ เจชเฉเจฐเฉเจเฉเจเจ เจตเจฟเฉฑเจ, Gitlab เจ เจคเฉ Nomad เจฆเฉเจตเฉเจ เจธเจฟเจฐเจซ เจธเจฒเฉเจเฉ เจตเฉเฉฑเจฌ 'เจคเฉ เจนเจจ, เจเจธ เจฒเจ เจเฉฑเจฅเฉ เจ เจเจฟเจนเฉ เจเฉเจ เจธเจฎเฉฑเจธเจฟเจ เจจเจนเฉเจ เจนเฉเฅค
เจฌเจพเจเฉ เจฆเฉ เจฆเฉ เจธเจฐเจตเจฐเจพเจ 'เจคเฉ เจ เจธเฉเจ เจจเจฟเจฎเจจเจฒเจฟเจเจค เจจเจฟเจฐเจฆเฉเจธเจผเจพเจ เจฆเฉ เจ เจจเฉเจธเจพเจฐ เจเฉเจเจธเจฒ เจเจเฉฐเจ เจธเจฅเจพเจชเจค เจเจฐเจฆเฉ เจนเจพเจเฅค เจ เจธเฉเจ เจฌเจพเจเจจเจฐเฉ เจซเจพเจเจฒ เจจเจพเจฒ เจเจฆเจฎเจพเจ เจจเฉเฉฐ เจฆเฉเจนเจฐเจพเจเจเจฆเฉ เจนเจพเจ:
root@nomad-livelinux-01:~# wget https://releases.hashicorp.com/consul/1.5.0/consul_1.5.0_linux_amd64.zip
root@nomad-livelinux-01:~# unzip consul_1.5.0_linux_amd64.zip
root@nomad-livelinux-01:~# mv consul /usr/local/bin/
เจชเจฟเจเจฒเฉ เจธเจฐเจตเจฐ เจจเจพเจฒ เจธเจฎเจพเจจเจคเจพ เจฆเฉเจเจฐเจพ, เจ เจธเฉเจ เจธเฉฐเจฐเจเจจเจพ เจซเจพเจเจฒเจพเจ /etc/consul.d เจฒเจ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจขเจพเจเจเฉ เจจเจพเจฒ เจเฉฑเจ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจฌเจฃเจพเจเจเจฆเฉ เจนเจพเจ:
/etc/consul.d/
โโโ client
โ โโโ config.json
config.json เจซเจพเจเจฒ เจฆเฉ เจธเจฎเฉฑเจเจฐเฉ:
{
"datacenter": "dc1",
"data_dir": "/opt/consul",
"log_level": "DEBUG",
"node_name": "nomad-livelinux-01",
"server": false,
"encrypt": "your-private-key",
"domain": "livelinux",
"addresses": {
"dns": "127.0.0.1",
"https": "0.0.0.0",
"grpc": "127.0.0.1",
"http": "127.0.0.1"
},
"bind_addr": "172.30.0.5", # ะปะพะบะฐะปัะฝัะน ะฐะดัะตั ะฒะผ
"start_join": ["172.30.0.15"], # ัะดะฐะปะตะฝะฝัะน ะฐะดัะตั ะบะพะฝััะป ัะตัะฒะตัะฐ
"ports": {
"dns": 53
}
เจคเจฌเจฆเฉเจฒเฉเจเจ เจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเจฐเฉ เจ เจคเฉ เจธเฉเจตเจพ เจซเจพเจเจฒ, เจเจธ เจฆเฉเจเจ เจธเจฎเฉฑเจเจฐเฉเจเจ เจจเฉเฉฐ เจธเจฅเจพเจชเจค เจเจฐเจจ เจฒเจ เจ เฉฑเจเฉ เจตเจงเฉ:
/etc/systemd/system/consul.service:
[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
[Service]
User=root
Group=root
ExecStart=/usr/local/bin/consul agent -config-dir=/etc/consul.d/client
ExecReload=/usr/local/bin/consul reload
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
เจ เจธเฉเจ เจธเจฐเจตเจฐ 'เจคเฉ เจเฉเจเจธเจฒเจฐ เจฒเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจเฅค เจนเฉเจฃ, เจฒเจพเจเจ เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจธเจพเจจเฉเฉฐ nsul เจฎเฉเจเจฌเจฐเจพเจ เจตเจฟเฉฑเจ เจเฉเจเจซเจฟเจเจฐ เจเฉเจคเฉ เจธเฉเจตเจพ เจฆเฉเจเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเฉเฅค เจเจธ เจฆเจพ เจฎเจคเจฒเจฌ เจนเฉเจตเฉเจเจพ เจเจฟ เจเจน เจเจฒเฉฑเจธเจเจฐ เจจเจพเจฒ เจเจฒเจพเจเฉฐเจ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจธเจซเจฒเจคเจพเจชเฉเจฐเจตเจ เจเฉเฉ เจเจฟเจ เจนเฉเฅค เจฆเฉเจเฉ เจธเจฐเจตเจฐ 'เจคเฉ เจเจธเฉ เจจเฉเฉฐ เจฆเฉเจนเจฐเจพเจ เจ เจคเฉ เจเจธ เจคเฉเจ เจฌเจพเจ เจฆ เจ เจธเฉเจ เจจเฉเจฎเฉเจก เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจ เจคเฉ เจธเฉฐเจฐเจเจฟเจค เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐ เจธเจเจฆเฉ เจนเจพเจเฅค
Nomad เจฆเฉ เจตเจงเฉเจฐเฉ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจธเจฅเจพเจชเจจเจพ เจจเฉเฉฐ เจเจธเจฆเฉ เจ เจงเจฟเจเจพเจฐเจค เจฆเจธเจคเจพเจตเฉเจเจผเจพเจ เจตเจฟเฉฑเจ เจฆเจฐเจธเจพเจเจ เจเจฟเจ เจนเฉเฅค เจเฉฑเจฅเฉ เจฆเฉ เจฐเจตเจพเจเจคเฉ เจเฉฐเจธเจเจพเจฒเฉเจธเจผเจจ เจตเจฟเจงเฉเจเจ เจนเจจ: เจเฉฑเจ เจฌเจพเจเจจเจฐเฉ เจซเจพเจเจฒ เจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจเจฐเจจเจพ เจ เจคเฉ เจธเจฐเฉเจค เจคเฉเจ เจเฉฐเจชเจพเจเจฒ เจเจฐเจจเจพเฅค เจฎเฉเจ เจชเจนเจฟเจฒเจพ เจคเจฐเฉเจเจพ เจเฉเจฃเจพเจเจเจพเฅค
เจเจฟเฉฑเจชเจฃเฉ: เจชเฉเจฐเฉเจเฉเจเจ เจฌเจนเฉเจค เจคเฉเจเจผเฉ เจจเจพเจฒ เจตเจฟเจเจพเจธ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ, เจจเจตเฉเจ เจ เจชเจกเฉเจเจธ เจ เจเจธเจฐ เจเจพเจฐเฉ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจ. เจธเจผเจพเจเจฆ เจเจธ เจฒเฉเจ เจฆเฉ เจชเฉเจฐเจพ เจนเฉเจฃ เจคเฉฑเจ เจเฉฑเจ เจจเจตเจพเจ เจธเฉฐเจธเจเจฐเจฃ เจเจพเจฐเฉ เจเฉเจคเจพ เจเจพเจตเฉเจเจพเฅค เจเจธ เจฒเจ, เจชเฉเฉเจนเจจ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ, เจฎเฉเจ เจเจธ เจธเจฎเฉเจ Nomad เจฆเฉ เจฎเฉเจเฉเจฆเจพ เจธเฉฐเจธเจเจฐเจฃ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจเจฐเจจ เจฆเฉ เจธเจฟเจซเจพเจฐเจธเจผ เจเจฐเจฆเจพ เจนเจพเจ.
root@nomad-livelinux-01:~# wget https://releases.hashicorp.com/nomad/0.9.1/nomad_0.9.1_linux_amd64.zip
root@nomad-livelinux-01:~# unzip nomad_0.9.1_linux_amd64.zip
root@nomad-livelinux-01:~# mv nomad /usr/local/bin/
root@nomad-livelinux-01:~# nomad -autocomplete-install
root@nomad-livelinux-01:~# complete -C /usr/local/bin/nomad nomad
root@nomad-livelinux-01:~# mkdir /etc/nomad.d
เจ เจจเจชเฉเจ เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจธเจพเจจเฉเฉฐ 65 MB เจตเจเจผเจจ เจตเจพเจฒเฉ Nomad เจฌเจพเจเจจเจฐเฉ เจซเจพเจเจฒ เจชเฉเจฐเจพเจชเจค เจนเฉเจตเฉเจเฉ - เจเจธเจจเฉเฉฐ /usr/local/bin เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒ เจเฉเจคเจพ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
เจเจ Nomad เจฒเจ เจเฉฑเจ เจกเฉเจเจพ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจฌเจฃเจพเจเจ เจ เจคเฉ เจเจธเจฆเฉ เจธเฉเจตเจพ เจซเจพเจเจฒ เจจเฉเฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจเจฐเฉเจ (เจเจน เจธเฉฐเจญเจต เจคเฉเจฐ 'เจคเฉ เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ เจฎเฉเจเฉเจฆ เจจเจนเฉเจ เจนเฉเจตเฉเจเฉ):
root@nomad-livelinux-01:~# mkdir --parents /opt/nomad
root@nomad-livelinux-01:~# nano /etc/systemd/system/nomad.service
เจนเฉเจ เจฒเจฟเจเฉเจเจ เจฒเจพเจเจจเจพเจ เจจเฉเฉฐ เจเฉฑเจฅเฉ เจเจฟเจชเจเจพเจ:
[Unit]
Description=Nomad
Documentation=https://nomadproject.io/docs/
Wants=network-online.target
After=network-online.target
[Service]
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=infinity
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
StartLimitBurst=3
StartLimitIntervalSec=10
TasksMax=infinity
[Install]
WantedBy=multi-user.target
เจนเจพเจฒเจพเจเจเจฟ, เจ เจธเฉเจ เจจเฉเจฎเฉเจก เจจเฉเฉฐ เจฒเจพเจเจ เจเจฐเจจ เจฆเฉ เจเจฒเจฆเจฌเจพเจเจผเฉ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจนเจพเจ - เจ เจธเฉเจ เจ เจเฉ เจคเฉฑเจ เจเจธเจฆเฉ เจธเฉฐเจฐเจเจจเจพ เจซเจพเจเจฒ เจจเจนเฉเจ เจฌเจฃเจพเจ เจนเฉ:
root@nomad-livelinux-01:~# mkdir --parents /etc/nomad.d
root@nomad-livelinux-01:~# chmod 700 /etc/nomad.d
root@nomad-livelinux-01:~# nano /etc/nomad.d/nomad.hcl
root@nomad-livelinux-01:~# nano /etc/nomad.d/server.hcl
เจ เฉฐเจคเจฎ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจฌเจฃเจคเจฐ เจนเฉเจ เจฒเจฟเจเฉ เจ เจจเฉเจธเจพเจฐ เจนเฉเจตเฉเจเฉ:
/etc/nomad.d/
โโโ nomad.hcl
โโโ server.hcl
nomad.hcl เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจนเฉเจ เจฒเจฟเจเฉ เจธเฉฐเจฐเจเจจเจพ เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเฉ:
datacenter = "dc1"
data_dir = "/opt/nomad"
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. Nomad เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจธเจฐเจตเจฐเจพเจ เจฆเฉ เจธเฉเจเฉ
เจฆเฉเจตเฉเจ เจธเจฐเจตเจฐ เจธเจซเจฒเจคเจพเจชเฉเจฐเจตเจ เจชเฉเจจเจฒ เจตเจฟเฉฑเจ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเฉเจคเฉ เจเจ เจนเจจ, เจ เจธเฉเจ เจจเฉเจฎเจก เจจเฉเจก เจธเจเฉเจเจธ เจเจฎเจพเจเจก เจฆเฉ เจเจเจเจชเฉเฉฑเจ เจตเจฟเฉฑเจ เจเจนเฉ เจเฉเจเจผ เจตเฉเจเจพเจเจเฉ:
เจเจฟเฉฑเจคเจฐ 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}
เจจเจคเฉเจเฉ เจตเจเฉเจ, เจธเจพเจกเฉ เจเฉเจฒ เจเจฟเจเจฒเฉเจฌ เจฐเจเจฟเจธเจเจฐเฉ เจตเจฟเฉฑเจ เจจเฉเจฎเฉเจก เจฆเฉเฉเจพเจ เจฆเฉ เจเฉฑเจ เจเจชเจฒเจฌเจง เจคเจธเจตเฉเจฐ เจนเฉเจตเฉเจเฉ, เจนเฉเจฃ เจ เจธเฉเจ เจธเจฟเฉฑเจงเฉ เจชเฉเจฐเฉเจเฉเจเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจตเจฟเฉฑเจ เจเจพ เจธเจเจฆเฉ เจนเจพเจ, เจเฉฑเจ เจชเจพเจเจชเจฒเจพเจเจจ เจฌเจฃเจพ เจธเจเจฆเฉ เจนเจพเจ เจ เจคเฉ เจจเฉเจฎเฉเจก เจฆเฉ เจจเฉเจฎเฉเจก เจเฉเจฌ เจจเฉเฉฐ เจเฉเจเจซเจฟเจเจฐ เจเจฐ เจธเจเจฆเฉ เจนเจพเจเฅค
เจชเฉเจฐเฉเจเฉเจเจ เจธเฉเฉฑเจเจ
เฉฑเจช
เจเจ 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 เจฎเฉเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ เจตเจพเจฒเจ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจเจฐเจฆเจพ เจนเฉเฅค เจชเจฐ เจชเจนเจฟเจฒเจพเจ, เจเจ เจตเจพเจฒเจ เจตเจฟเฉฑเจ เจจเฉเจฎเฉเจก เจฒเจ เจฒเฉเฉเฉเจเจฆเฉเจเจ เจจเฉเจคเฉเจเจ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเฉเจ; เจเจนเจจเจพเจ เจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ:
# 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
}
เจเจธ เจธเจงเจพเจฐเจจ เจชเจนเฉเฉฐเจ เจจเจพเจฒ, เจคเฉเจธเฉเจ เจจเฉเจฎเฉเจก เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจเฉฐเจเฉเจจเจฐเจพเจ เจฆเฉ เจกเจฟเจฒเจฟเจตเจฐเฉ เจจเฉเฉฐ เจเฉเจเจซเจฟเจเจฐ เจเจฐ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจญเจตเจฟเฉฑเจ เจตเจฟเฉฑเจ เจเจธ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค เจฎเฉเจ เจเจนเจพเจเจเจพ เจเจฟ เจเฉเจ เจนเฉฑเจฆ เจคเฉฑเจ เจฎเฉเจ เจจเฉเจฎเฉเจก เจจเจพเจฒ เจนเจฎเจฆเจฐเจฆเฉ เจฐเฉฑเจเจฆเจพ เจนเจพเจ - เจเจน เจเฉเจเฉ เจชเฉเจฐเฉเจเฉเจเจเจพเจ เจฒเจ เจตเจงเฉเจฐเฉ เจขเฉเจเจตเจพเจ เจนเฉ เจเจฟเฉฑเจฅเฉ เจเฉเจฌเจฐเจจเฉเจเจธ เจตเจพเจงเฉ เจเจเจฟเจฒเจคเจพ เจฆเจพ เจเจพเจฐเจจ เจฌเจฃ เจธเจเจฆเฉ เจนเจจ เจ เจคเฉ เจเจธเจฆเฉ เจชเฉเจฐเฉ เจธเจฎเจฐเฉฑเจฅเจพ เจฆเจพ เจ เจนเจฟเจธเจพเจธ เจจเจนเฉเจ เจเจฐเจจเจเฉ. เจจเจพเจฒ เจนเฉ, Nomad เจธเจผเฉเจฐเฉเจเจค เจเจฐเจจ เจตเจพเจฒเจฟเจเจ เจฒเจ เจธเฉฐเจชเฉเจฐเจจ เจนเฉ-เจเจธ เจจเฉเฉฐ เจธเจฅเจพเจชเจฟเจค เจเจฐเจจเจพ เจ เจคเฉ เจเฉเจเจซเจฟเจเจฐ เจเจฐเจจเจพ เจเจธเจพเจจ เจนเฉเฅค เจนเจพเจฒเจพเจเจเจฟ, เจเฉเจ เจชเฉเจฐเฉเจเฉเจเจเจพเจ 'เจคเฉ เจเฉเจธเจ เจเจฐเจจ เจตเฉเจฒเฉ, เจฎเฉเจจเฉเฉฐ เจเจธเจฆเฉ เจธเจผเฉเจฐเฉเจเจคเฉ เจธเฉฐเจธเจเจฐเจฃเจพเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจธเจฎเฉฑเจธเจฟเจ เจเจเจเจฆเฉ เจนเฉ - เจฌเจนเฉเจค เจธเจพเจฐเฉ เจฌเฉเจจเจฟเจเจฆเฉ เจซเฉฐเจเจธเจผเจจ เจเฉฑเจฅเฉ เจจเจนเฉเจ เจนเจจ เจเจพเจ เจเจน เจธเจนเฉ เจคเจฐเฉเจนเจพเจ เจเฉฐเจฎ เจจเจนเฉเจ เจเจฐเจฆเฉ เจนเจจ. เจนเจพเจฒเจพเจเจเจฟ, เจฎเฉเจฐเจพ เจฎเฉฐเจจเจฃเจพ เจนเฉ เจเจฟ เจจเฉเจฎเฉเจก เจตเจฟเจเจพเจธ เจเจฐเจจเจพ เจเจพเจฐเฉ เจฐเฉฑเจเฉเจเจพ เจ เจคเฉ เจญเจตเจฟเฉฑเจ เจตเจฟเฉฑเจ เจเจน เจเจนเจจเจพเจ เจเจพเจฐเจเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจพเจชเจค เจเจฐเฉเจเจพ เจเฉ เจนเจฐ เจเจฟเจธเฉ เจจเฉเฉฐ เจฒเฉเฉเฉเจเจฆเฉ เจนเจจ.
เจฒเฉเจเจ: เจเจฒเจฟเจ เจเจเจกเจฐเฉเจต, เจ
เจฒเฉเจเจธเฉ เจเจผเจพเจกเจพเจจ เจ
เจคเฉ เจฒเจพเจเจต เจฒเฉเจจเจเจธ เจเฉเจฎ เจฆเฉเจเจฐเจพ เจธเฉฐเจชเจพเจฆเจฟเจค
เจธเจฐเฉเจค: www.habr.com