ααα ααααΈααααΆα
ααααΈαααα αααααΆαααα·αααΆααααα Kubernetes αααα»αααααΎαα‘αΎααααΆαααΆαααα αα ααααααααΆααααα αααΎααααα»αα’αα»ααααααΆα αααα»αα αααααα’ααααααααααΌα ααΆ Nomadα ααΆααα’α₯αααα αααααααΆαααααααααααααααΎαααααααααΆααααααααααα½α α αΎαααΈ HashiCorp α§ααΆα ααα Vault αα·α Consul α αΎααααααααααα½αα―ααα·ααααα»αααααΆαααΆααααααΉαα αααααΆαα ααΆααααααααααα αααααΆαααααααΉαααΆαααΆαααααΆααααααΆααααα‘αΎα Nomad ααααα½ααααα αΌαααααΆααΌαααααΆααααΈαα αΌααα αααα»αα ααααα ααααΌα ααΆααΆααα½ααααα αΌα Nomad ααΆαα½α Gitlab α
ααααΆααααα
ααααα·α α’αααΈαα α’αΈααΆαααααα αααΆαααΈααααα·αααα·αα ααα½αααΈααααΌαααΆαααααΎααααΆααααΆαα½αααΉααααααααααααΈααΈααΌ 2, 4 RAM, 50 Gb SSD, αα½ααα½αα αΌααα αααα»ααααααΆαααΌαααααΆαααΌαα αα½αα ααααα αα·αα’αΆααααααΆα IP αααααα½αααα
- nomad-livelinux-01: 172.30.0.5
- nomad-livelinux-02: 172.30.0.10
- αα»αααα»α-livelinux-01: 172.30.0.15
ααΆαααα‘αΎα Nomad, Consul α ααΆααααααΎααααα»α Nomad
α αΌαα αΆααααααΎαααΆαα½αααΉαααΆαααα‘αΎαααΌαααααΆαα αααααΈααΆααΆααααα αααΆαααααααααΆααααααααα αααα»αααΉααααααΆα’αααΈααΆαααααΆααααΆααα»α αα·αααα’αααααα ααΆααααΌαααΆααααααΎαα‘αΎααααΆαααααΆααααΈααα ααααΈααααΆα αα·ααααααα αααΆααααααΆααααΆαα αΌαααααΎαα αααα αααα αΆαααΆα αα
αα»ααααααΎαα αΆααααααΎαα’αα»αααα ααΎαααΉααα·ααΆααααΆαααααααααΉααααΈ ααΈααααααα ααααΆααααΆαααα ααΆααΆαααΆααααααΆααααΆαααααα»αααΆααααααΉαα’αααΈαα ααΆααααααααααΆαααα’ααΆααα
ααΎαααΆαααααΆααααΈα α αΎαααΎαα αααααα αΌααα½αααΆαα αααα»αα ααααααα½α α αΎααα αααα’ααΆαα ααΎαααααΉαααααΌαααΆαααΆαααααΎααΆαααααααΆαα ααααααααααααααααααααα·ααααα - αααααΆαααααα αΆααα ααΎαααΉαααααΌαααΆααα»αααα»αα ααΆαα½αααΉαα§αααααααα ααΆαααΆααα ααααα αα·αααααααααααΆααααααΈααααΆαααΆαα·α αα ααΆαααααΆαααααααα»αα ααααΆαα Nomad αααααΆααααααΎαααααΆαααα ααααΆααααΆααα»αααα»α α αΎααααααΆααααααααΆαααα α ααααα Nomad αααααΆαααααΆααα ααΌα αααααα ααΎαααααΌα ααΎαααΉαααα‘αΎααααΆαααΈααααα»αααα»α ααααααα ααΆααααααααααΆαα’αα»ααααΆα http ααΌαααααΆααααααΆααααααααααααΆα (ααΆααααΆαααΆαα’αα»ααααΆαααΆαααααΆαααΎα α αΎαα’αΆα α αΌαααααΎααΆαααΆαα’αΆααααααΆαααΆααααα ) ααααΌα ααΆααααΆααααΆααα»αααα»ααααα½αα―ααα ααΎαααΆαααΈααα Nomad αααααΆααααΈααα ααΎαααΉααααααα Nomad ααα»αααααα
ααΆαααα‘αΎαα§ααααααααα 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
αα bootstrap ααΉαααΆαα―αααΆαααααααα ααΆαααααααα config.json - αα αααα»αααΆααΎαααΉααααααααΆαααααααα»αααα»αα ααααΉαααΆαααααααΆα
{
"bootstrap": true,
"server": true,
"datacenter": "dc1",
"data_dir": "/var/consul",
"encrypt": "your-key",
"log_level": "INFO",
"enable_syslog": true,
"start_join": ["172.30.0.15"]
}
ααΌααααα‘ααααΎαααΆαααααΆαααααΆααα αα·αα’ααααααααααααΆαααα‘ααααΈααααΆα
- bootstrapα αα·αα ααΎαααΎαααΆαααααααααααΆααααααΈαααααααααααααααα· ααααα·αααΎαα½αααΆααααΌαααΆαααααΆααα αααα»αααααααααΆααααΆααΎααα·αα ααα’α»ααααα αΆααα ααΈαααααΌαα ααα½ααα·αααααΆααααααααΆαααααααααΉααα»ααααααα
- αααΆαααΈααααααΎα αα·αα ααΎααααααααΆαααΈαααα αα»αααα»ααα ααΎαααΆαααΈααα·αααα·αααααα αα α»ααααααααΉαααΎααα½ααΆαααΆαααΈααα αα·ααααααα½αααα VM αααα Nomad ααΉαααααΆαααΆα’αα·αα·ααα
- αααααααααβαα·ααααααα dc1 α αααααΆαααααααααααααααααα·ααααααααΎααααΈαααααΎαα αααααα ααΆααααΌαααααΌα ααααΆααααα·αααΆαααααΆαααΈαααααα αα·ααααΆαααΈαααα
- α’αα·αααααΈαα ααΌαααααααα’αααα αααααΉααααααααΌαααααΆααααα½αααα αα·αααααΌαααααΆαα ααΎαααΆαααΈαααααα αα·ααααΆαααΈαααααΆααα’ααα αααααΎααααααααΎααΆααααααααΆαα»αααα»α keygen α
- start_join. αα αααα»ααααααΈααα ααΎααααα αΆααααααΈα’αΆααααααΆα IP αααααΆααααααΆααααΉαααααΌαααΆαααααΎα‘αΎαα αα αααααα ααΎααα»αααα’αΆααααααΆαααααααΎαααα»αααααα
αα α ααα»α αααααΎαα’αΆα ααααΎαααΆααα»αααα»ααααααααΎαααααΆααααΆααααααααΆ:
root@consul-livelinux-01:~# /usr/local/bin/consul agent -config-dir /etc/consul.d/bootstrap -ui
αααβααΆβαα·ααΈβααα’βαααα»αβααΆαβααααΆααβααα α»αβα₯α‘αΌαβααα αααβααΆβαααΆαβααΆβααβααα α’αααβααΉαβαα·αβα’αΆα βααααΎβαα·ααΈβαααβααΆβααααβαααααΆααβαααααΆααβα ααα»ααβααΆαααααααβααΆαβααα ααααααααΎαα―αααΆαααααΆααααααΎααααΈααααααααααα»αααα»αααΆαααα systemdα
root@consul-livelinux-01:~# nano /etc/systemd/system/consul.service
ααααΉαααΆαααα―αααΆα consul.serviceα
[Unit]
Description=Consul Startup process
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash -c '/usr/local/bin/consul agent -config-dir /etc/consul.d/bootstrap -ui'
TimeoutStartSec=0
[Install]
WantedBy=default.target
ααΎαααααΎαααΆααα»αααα»αααΆαααα systemctlα
root@consul-livelinux-01:~# systemctl start consul
ααΌααα·αα·αααααΎαα ααααΆααααααααααΎαααααΌαααααααΎαααΆα α αΎααααααΆαααααα·ααααα·ααΆααααααααΆαααΆαα·ααα»αααα»α ααΎααα½αααααΎααααΆαααΈαααααααααΎαα
root@consul-livelinux:/etc/consul.d# consul members
consul-livelinux 172.30.0.15:8301 alive server 1.5.0 2 dc1 <all>
ααααΆααααΆααααααΆααα ααα‘αΎα Nginx αα·αααα‘αΎαααααΌααααΈ αα·αααΆαα’αα»ααααΆα 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 α αααααΉαααΆααααααΆααΆααΆαααααΆααααααααααααα cluster ααΆαααΆαααΈααααααα ααααΎαααααααααΌα ααααΆαα ααΎαααΆαααΈαααααΈααΈα α αΎααααααΆααααΈαααααΎαα’αΆα α αΆααααααΎαααα‘αΎα αα·αααααααα ααΆαααααααα Nomad α
ααΆαααα‘αΎα Nomad αααα’α·ααααααααααααααΌαααΆααα·αααααΆαα αααα»αα―αααΆαααααΌαααΆαααααααΆα ααΆααα·ααΈααΆαααααααα‘αΎααααααααΈααΈαα ααΆαααα―αααΆααααααΈα αα·αααΆαα αααααααΈαααααα αααα»αααΉαααααΎαααΎααα·ααΈααΆαααααααααΌαα
ααΆαααααααααΆααα ααααααβαααβαααα»αβα’αα·ααααβαααΆαβααΆααβαα αα ααΆαβα’αΆαααααβααααΈβααααΌαβααΆαβα ααβααΆβααΉαβααΆααα αααα ααααΆααααααααΈααΉαααααΌαααΆαα ααααααΆααα αααα’ααααααααααααΌαααΆααααα ααα ααΌα αααααα»ααααα’αΆααααα»αααΌαααααΆαα±αααα·αα·αααααΎααααααα αα α»αααααααααα Nomad αα αααααα α αΎαααΆαααααΆα
root@nomad-livelinux-01:~# wget https://releases.hashicorp.com/nomad/0.9.1/nomad_0.9.1_linux_amd64.zip
root@nomad-livelinux-01:~# unzip nomad_0.9.1_linux_amd64.zip
root@nomad-livelinux-01:~# mv nomad /usr/local/bin/
root@nomad-livelinux-01:~# nomad -autocomplete-install
root@nomad-livelinux-01:~# complete -C /usr/local/bin/nomad nomad
root@nomad-livelinux-01:~# mkdir /etc/nomad.d
αααααΆααααΈααΆαααα ααα αα ααΎαααΉαααα½αααΆαα―αααΆααααααΈα Nomad αααααΆααααααα 65 MB - ααΆααααΌαααααααΆααααΈαα /usr/local/bin α
ααααααααΎααααα·αααααααααααΆαα Nomad α αΎαααααααα½αα―αααΆαααααΆααααααααααΆ (ααααααΆααΉααα·αααΆααα ααΎααα)α
root@nomad-livelinux-01:~# mkdir --parents /opt/nomad
root@nomad-livelinux-01:~# nano /etc/systemd/system/nomad.service
αα·αααααΆαααααααΆααααΆαααααααα ααΈαααα
[Unit]
Description=Nomad
Documentation=https://nomadproject.io/docs/
Wants=network-online.target
After=network-online.target
[Service]
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=infinity
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
StartLimitBurst=3
StartLimitIntervalSec=10
TasksMax=infinity
[Install]
WantedBy=multi-user.target
αααααΆαααΆαααΆααααα ααΎααα·ααααααΆαααααααΆαααααα»αααΆαααΎαααααΎαααΆα nomad αα - ααΎααα·αααΆααααΆααααααΎαα―αααΆαααααααα ααΆααααααααααααααΆαα α‘αΎαα
root@nomad-livelinux-01:~# mkdir --parents /etc/nomad.d
root@nomad-livelinux-01:~# chmod 700 /etc/nomad.d
root@nomad-livelinux-01:~# nano /etc/nomad.d/nomad.hcl
root@nomad-livelinux-01:~# nano /etc/nomad.d/server.hcl
αα ααΆααααααααααα α»ααααααααΉαααΆαααΌα ααΆααααααα
/etc/nomad.d/
βββ nomad.hcl
βββ server.hcl
α―αααΆα nomad.hcl αα½αααααΆαααΆαααααααα ααΆααααααααααΌα ααΆααααααα
datacenter = "dc1"
data_dir = "/opt/nomad"
ααααΉαααΆαααα―αααΆα server.hclα
server {
enabled = true
bootstrap_expect = 1
}
consul {
address = "127.0.0.1:8500"
server_service_name = "nomad"
client_service_name = "nomad-client"
auto_advertise = true
server_auto_join = true
client_auto_join = true
}
bind_addr = "127.0.0.1"
advertise {
http = "172.30.0.5"
}
client {
enabled = true
}
αα»αααααα ααααΆααααααΌαα―αααΆαααααααα ααΆαααααααααα ααΎαααΆαααΈαααααΈααΈα - αα ααΈαααα’αααααΉαααααΌαααααΆααααααΌααααααααααΆαααααΆα http α
ααΏαα α»αααααααα ααααΆααααΆααααααΊααααααα ααΆαααααααα Nginx αααααΆααααααΌααααΈ αα·αααα‘αΎαααΆαα’αα»ααααΆα http α ααααΉαααΆαααα―αααΆα nomad.confα
upstream nomad-auth {
server 172.30.0.5:4646;
}
server {
server_name nomad.domain.name;
location / {
proxy_pass http://nomad-auth;
proxy_set_header Host $host;
auth_basic_user_file /etc/nginx/.htpasswd;
auth_basic "Password-protected Area";
}
}
α₯α‘αΌααααααΎαα’αΆα α αΌαααααΎααααααααααΆαααΆαααααααααΆαααΆααααα α ααααΆαα α αΎαα αΌααα ααΆααααααααααΆαααΈαααα
ααΌαααΆα α‘. αααααΈαααΆαααΈααααα
αααα»αα
ααααα Nomad
αααΆαααΈαααααΆααααΈαααααΌαααΆααααα αΆαααααααααααα αααα»αααααα ααΎαααΉαααΎαααΏαααΌα ααααΆαα αααα»αααααααααααΆααααααααΆααααΆαααΆα nomad nomad:
ααΌαααΆα α‘. ααααααααααΆααααααααΆααααΆαααΆαααααΆαα nomad
α
α»ααα»αααα»ααα·α? αααααΎαα α
αΌααα
ααΆααααααΆαααααααΆαα»αααα»ααα
ααΆαααααααααααΆααα
ααΌαααΆα α‘. αααααΈααααΆαααα
αααα»αα
ααααααα»αααα»α
α₯α‘αΌαααα ααΎαααΆα Nomad αααααααααα½α ααΆααααα αααααααΎααΆαααΆαα½ααα»αααα»αα αα ααααΆααααΆαα α»αααααα ααΎαααΉααα ααααααααααααΈαααΆαα αααα αααΆαααΉααααααΌα Docker containers ααΈ Gitlab αα ααΆαα Nomad α αΎααααα·ααΆαα’αααΈαααααααα·ααααααααααααααααααααααΆαααααα
αααααΎα Gitlab Runner
ααΎααααΈααΆαααααααΆαααΌαααΆα docker αα Nomad ααΎαααΉαααααΎαααααα·ααΈαααααΆα ααααα‘αααααααΆαα―αααΆααααααΈα Nomad αα ααΆααααα»α (ααααα·ααΈααα ααΎαα’αΆα ααααααααΆαααααααααα·ααααααααααααααααααα·ααΈ Hashicorp - ααΆα ααααα‘ααααΈααααΆααΆααΆα―αααΆααααααΈααααα½α) α αααα ααααΆαα αααα»ααααααΈαααααα’ααααααα ααααααααΎα Dockerfile ααΆαααααα½ααααααΆααααΆααΆαα½αααΉαααΆαα·ααΆααΌα ααΆααααααα
FROM alpine:3.9
RUN apk add --update --no-cache libc6-compat gettext
COPY nomad /usr/local/bin/nomad
αα αααα»αααααααααΌα ααααΆ ααΎααααααΎα .gitlab-ci.ymlα
variables:
DOCKER_IMAGE: nomad/nomad-deploy
DOCKER_REGISTRY: registry.domain.name
stages:
- build
build:
stage: build
image: ${DOCKER_REGISTRY}/nomad/alpine:3
script:
- tag=${DOCKER_REGISTRY}/${DOCKER_IMAGE}:latest
- docker build --pull -t ${tag} -f Dockerfile .
- docker push ${tag}
ααΆαααααα ααΎαααΉαααΆαααΌαααΆααα Nomad runner αααα’αΆα ααααΆααα αααα»α Gitlab Registry α₯α‘αΌααααααΎαα’αΆα αα ααΆααααααΆαααααααααααααααΆαα αααααΎα Pipeline αα·αααααααα ααΆααααααααααΆαααΆα Nomad αααα Nomad α
ααΆααααα
ααααααα
α αΌαα αΆααααααΎαααΆαα½αααΉαα―αααΆαααΆαααΆααααααΆαα Nomad α αααααααααααααα»ααα αααα»αα’ααααααααααΉαααΆααααααααααα ααΆααΉαααΆαααΆααα·α αα αα½αα ααααΉαααΆααα .gitlab-ci ααΉαααΆαααΌα ααΆααααααα
variables:
NOMAD_ADDR: http://nomad.address.service:4646
DOCKER_REGISTRY: registry.domain.name
DOCKER_IMAGE: example/project
stages:
- build
- deploy
build:
stage: build
image: ${DOCKER_REGISTRY}/nomad-runner/alpine:3
script:
- tag=${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${CI_COMMIT_SHORT_SHA}
- docker build --pull -t ${tag} -f Dockerfile .
- docker push ${tag}
deploy:
stage: deploy
image: registry.example.com/nomad/nomad-runner:latest
script:
- envsubst '${CI_COMMIT_SHORT_SHA}' < project.nomad > job.nomad
- cat job.nomad
- nomad validate job.nomad
- nomad plan job.nomad || if [ $? -eq 255 ]; then exit 255; else echo "success"; fi
- nomad run job.nomad
environment:
name: production
allow_failure: false
when: manual
αα ααΈαααααΆαααΆαααααααΆαααΎαα‘αΎαααααα ααα»ααααα’αααα’αΆα ααααααα ααΆααααααααααΆααΎααααΈααααΆααααααΌαααΆαα·ααΆααααααααααα ααααααααα αΌααααααααΆαααΈαααααΆααααΆαα ααΆααααα»αααΌαααΆα αα·αααΆαααΆαααααααΆαααΆαα ααα»αααα αα ααααΆααααΆαααααΌα ααΎααααααΌααααα»αααΌαααΆα docker α αΎααα»αααΆα αΌααα αααα»α Registry ααααααΎα α αΎααα ααααΆααααΆαααΈααΈα ααΎαα αΆααααααΎαααΆαααΆαααααααΎααα Nomad α
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" {}
}
}
}
}
}
ααΌαα αααΆαααΆ αααα»αααΆα Registry α―ααααα½α α αΎαααΎααααΈααΆαααααΌαααΆα docker ααααααααα αααα»αααααΌαα αΌααα ααΆα αααααααααΆαααααα’αααα»ααααα»αααααΈαααααΊαααα αΌαααΆαα αΌα αα·αααΆααααααααΆαααα αααα»α Vault α αΎααααααΆαααααααα αΌαααΆααΆαα½α Nomad α Nomad ααΆαααΎαααααΎαααΆαααα Vault α ααα»ααααααΆααααΌα α αΌαααΎαααα‘αΎααααααΆαααα αΆαααΆα ααααααΆαα 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
α₯α‘αΌαααα αααααΆααααααΎααααααΆαααα αΆαααΆα α ααΎαααΉαααααααααΆααα½ααααα αΌαααΆαα½α Vault αα αααα»ααααα»ααα·α αα ααΆααααα»αα―αααΆα job.nomadα
vault {
enabled = true
address = "https://vault.domain.name:8200"
token = "token"
}
αααα»αααααΎααΆαα’αα»ααααΆαααααααααΆαααααΆαα α αΎαα α»ααααααααΆαααααααΆαααα ααΈααα ααΆααααΆααααααΎαααααΆααααααΆαααααααΆαααααΆααααΆα’ααααα αααα αΆααααααΎαααααΆααααΆα nomadα
$ VAULT_TOKEN=<token> nomad agent -config /path/to/config
α₯α‘αΌααααααΎαα’αΆα ααααΎααααΆαα½α Vault α αααααΆαααααααααα·ααααα·ααΆαααΊααΆααααα ααΎααααααΎαα―αααΆααα½ααα αααα»αααΆαααΆα Nomad αααααΉααααααΆαα»ααααααααα’αααα§ααΆα αααα
template {
data = <<EOH
{{with secret "secrets/pipeline-keys"}}
REGISTRY_LOGIN="{{ .Data.REGISTRY_LOGIN }}"
REGISTRY_PASSWORD="{{ .Data.REGISTRY_LOGIN }}{{ end }}"
EOH
destination = "secrets/service-name.env"
env = true
}
ααΆαα½αααΉααα·ααΈααΆαααααααααΆααααααα α’αααα’αΆα ααααααα ααΆααααααααααΆαααΉααααααΌααα»αααΊααααα ααΆααα ααααα Nomad α αΎαααααΎααΆαααΆαα½αααΆααΆαααα’ααΆααα αααα»αααΉααα·ααΆαααΆαααα»αααααα·αααΆαα½αααααααα»αα’αΆαα·α Nomad - ααΆααΆαααααααααααααααΆααααααααααΌα αααα Kubernetes α’αΆα ααααα±ααααΆαααΆααααα»αααααΆααααααα α αΎαααΉααα·αααΉαααΈαααααΆαα»ααααααααααααααΆα ααΎαααΈααα Nomad ααΊααα’α₯αααα αααααααΆααα’αααα αΆααααααΎαααααΌα ααΆααααα½αααα‘αΎα αα·αααααααα ααΆααααααααα αααααΆαααΆαααΆααααα αα αααααΆαααααααΎαααααααα½αα ααα½α αααα»ααα½αααααααααα αΆααΆαα½αααΉαααααααααΌαααααααΆ - αα»αααΆαααΆααΌαααααΆαααΆα αααΎααα·αααΆααα ααΈααα α¬ααΆαα·αααααΎαααΆαααααΉαααααΌαα αααααΆαααΆαααΆααααα αααα»αααΏααΆααααΆ Nomad ααΉαααααα’αα·αααα α αΎααα αααα’ααΆαα ααΆααΉαααα½αααΆαααΌααα»αααΆααααααα»ααααααααααααΆααααΌαααΆαα
α’ααααα·ααααα Ilya Andreev ααααααα½αααα Alexey Zhadan αα·ααααα»α Live Linux
ααααα: www.habr.com