Consul Basic Setup: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
| (не показано 6 промежуточных версий этого же участника) | |||
| Строка 1: | Строка 1: | ||
[[Категория:Hashicorp_Vault]] |
[[Категория:Hashicorp_Vault]] |
||
| + | [[Категория:Hashicorp_Consul]] |
||
[[Категория:Vault]] |
[[Категория:Vault]] |
||
| + | [[Категория:Consul]] |
||
[[Категория:Linux]] |
[[Категория:Linux]] |
||
| Строка 115: | Строка 117: | ||
"raft_protocol": 3 |
"raft_protocol": 3 |
||
} |
} |
||
| + | </PRE> |
||
| + | |||
| + | =Создание токенов= |
||
| + | |||
| + | Для того что бы не польззоваться корневвым токеном (который зашит в конфиге и который нельзя отозвать) требуется создать отдельный токен с такими же правами |
||
| + | <BR> |
||
| + | Начиная с версии consul 1.11 механизм ACL изменен |
||
| + | |||
| + | ==management token== |
||
| + | Для доступа в качестве токена выступает '''SecretID''' |
||
| + | <PRE> |
||
| + | #!/bin/bash |
||
| + | |||
| + | set -eu${DEBUG:+x} |
||
| + | CONSUL_URL="http://127.0.0.1:8500" |
||
| + | # get Consul Master token and create managemet base on it. |
||
| + | # It will have same permissions but can be revoked if needed |
||
| + | |||
| + | CONSUL_CONFIG_DIR=/etc/consul.d/ |
||
| + | CONSUL_HTTP_TOKEN=$(cat \ |
||
| + | ${CONSUL_CONFIG_DIR}/* \ |
||
| + | | jq -r .acl.tokens.master \ |
||
| + | | sed 's/null//g' |
||
| + | ) |
||
| + | |||
| + | CONSUL_HTTP_TOKEN=$(echo ${CONSUL_HTTP_TOKEN}) |
||
| + | |||
| + | #exit |
||
| + | TOKEN=$(curl -v \ |
||
| + | -H "X-Consul-Token: ${CONSUL_HTTP_TOKEN}" \ |
||
| + | -X PUT \ |
||
| + | -d \ |
||
| + | ' |
||
| + | { |
||
| + | "Description": "Management token", |
||
| + | "Policies": [ |
||
| + | { |
||
| + | "ID": "00000000-0000-0000-0000-000000000001" |
||
| + | }, |
||
| + | { |
||
| + | "Name": "global-management" |
||
| + | } |
||
| + | ], |
||
| + | "Local": false |
||
| + | } |
||
| + | ' \ |
||
| + | ${CONSUL_URL}/v1/acl/token) |
||
| + | |||
| + | echo $TOKEN |
||
| + | |||
| + | |||
| + | echo ${TOKEN} >> ./managemet_token_all |
||
| + | echo ${TOKEN} | jq -re '.AccessorID' > AccessorID |
||
| + | echo ${TOKEN} | jq .SecretID -re > SecretID |
||
| + | </PRE> |
||
| + | |||
| + | |||
| + | ==Older versions of Consul== |
||
| + | Пример скрипта создания токена для более старых версий Consul |
||
| + | * '''/usr/local/consul/etc/consul/consul.d/agent-security.json''' - путь к конфигурационному файлу |
||
| + | <PRE> |
||
| + | CONSUL_HTTP_TOKEN=$(cat \ |
||
| + | /usr/local/consul/etc/consul/consul.d/agent-security.json \ |
||
| + | | jq -r .acl.tokens.master |
||
| + | ) |
||
| + | |||
| + | TOKEN=$(curl \ |
||
| + | -kfsS \ |
||
| + | -H "X-Consul-Token: ${CONSUL_HTTP_TOKEN}" \ |
||
| + | -X PUT \ |
||
| + | -d \ |
||
| + | '{ |
||
| + | "Name": "managemet-token", |
||
| + | "Type": "management"} |
||
| + | ' \ |
||
| + | ${CONSUL_URL}/v1/acl/create | jq -re '.ID') |
||
| + | |||
| + | |||
| + | echo ${TOKEN} >> ./managemet_token |
||
</PRE> |
</PRE> |
||
Текущая версия на 10:10, 9 октября 2022
Базовая настройка Hashicorp Consul
- Для использования в качестве бекенда для Hashicorp Vault)
- Очень базовая однонодовая конфигурация
Установка
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add - sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main" sudo apt-get update && sudo apt-get install consul
Базовая настройка
Unit немного исправлен
# systemctl cat consul.service
[Unit] Description="HashiCorp Consul - A service mesh solution" Documentation=https://www.consul.io/ Requires=network-online.target After=network-online.target ConditionFileNotEmpty=/etc/consul.d/consul-server.json [Service] EnvironmentFile=-/etc/consul.d/consul.env User=consul Group=consul ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d/ ExecReload=/bin/kill --signal HUP $MAINPID KillMode=process KillSignal=SIGTERM Restart=on-failure LimitNOFILE=65536 [Install] WantedBy=multi-user.target
Конфигурационные файлы
consul-server.json
cat /etc/consul.d/consul-server.json
{
"node_name": "consul",
"disable_remote_exec": true,
"disable_update_check": true,
"leave_on_terminate": false,
"enable_script_checks": true,
"data_dir": "/opt/consul",
"server": true,
"performance": {
"raft_multiplier": 1
},
"ports": {
"dns": 8600,
"http": 8500,
"https": -1,
"server": 8300
},
"log_level": "DEBUG",
"ui_config": {
"enabled": true
}
}
/etc/consul.d/agent-network.json
cat /etc/consul.d/agent-network.json
{
"advertise_addr": "10.14.15.201",
"bind_addr": "0.0.0.0",
"client_addr": "0.0.0.0",
"bootstrap_expect": 1,
"datacenter": "kilda-fred"
}
/etc/consul.d/agent-security.json
- Мастер токен - для примера ("333293a8-de42-11eb-bb8c-fffb98445924")
- По сути это просто "секретная строка"
- uuidgen
cat /etc/consul.d/agent-security.json
{
"primary_datacenter": "kilda-fred",
"acl": {
"enabled": true,
"default_policy": "deny",
"tokens": {
"master": "333293a8-de42-11eb-bb8c-fffb98445924"
}
},
"encrypt": "dNEwk144P3GugO3fhEIAKl4gjyS8gLpggM41lmm+zug=",
"acl_enforce_version_8": true,
"raft_protocol": 3
}
Создание токенов
Для того что бы не польззоваться корневвым токеном (который зашит в конфиге и который нельзя отозвать) требуется создать отдельный токен с такими же правами
Начиная с версии consul 1.11 механизм ACL изменен
management token
Для доступа в качестве токена выступает SecretID
#!/bin/bash
set -eu${DEBUG:+x}
CONSUL_URL="http://127.0.0.1:8500"
# get Consul Master token and create managemet base on it.
# It will have same permissions but can be revoked if needed
CONSUL_CONFIG_DIR=/etc/consul.d/
CONSUL_HTTP_TOKEN=$(cat \
${CONSUL_CONFIG_DIR}/* \
| jq -r .acl.tokens.master \
| sed 's/null//g'
)
CONSUL_HTTP_TOKEN=$(echo ${CONSUL_HTTP_TOKEN})
#exit
TOKEN=$(curl -v \
-H "X-Consul-Token: ${CONSUL_HTTP_TOKEN}" \
-X PUT \
-d \
'
{
"Description": "Management token",
"Policies": [
{
"ID": "00000000-0000-0000-0000-000000000001"
},
{
"Name": "global-management"
}
],
"Local": false
}
' \
${CONSUL_URL}/v1/acl/token)
echo $TOKEN
echo ${TOKEN} >> ./managemet_token_all
echo ${TOKEN} | jq -re '.AccessorID' > AccessorID
echo ${TOKEN} | jq .SecretID -re > SecretID
Older versions of Consul
Пример скрипта создания токена для более старых версий Consul
- /usr/local/consul/etc/consul/consul.d/agent-security.json - путь к конфигурационному файлу
CONSUL_HTTP_TOKEN=$(cat \
/usr/local/consul/etc/consul/consul.d/agent-security.json \
| jq -r .acl.tokens.master
)
TOKEN=$(curl \
-kfsS \
-H "X-Consul-Token: ${CONSUL_HTTP_TOKEN}" \
-X PUT \
-d \
'{
"Name": "managemet-token",
"Type": "management"}
' \
${CONSUL_URL}/v1/acl/create | jq -re '.ID')
echo ${TOKEN} >> ./managemet_token