Назад | Перейти на главную страницу

Контейнеры Consul, vault и postgres не взаимодействуют

Я пытаюсь настроить Consul с Vault для управления секретами Postgres с помощью Docker. Вот моя конфигурация

Dokcerfile:

FROM python:3.6-slim

ENV VAULT_VERSION 0.11.1
ENV CONSUL_VERSION 1.2.3

RUN apt-get update \
  && apt-get install -y \
     build-essential \
     git \
     curl \
     wget \
     vim \
     net-tools \
     iputils-ping \
     dnsutils \
     zip \
     unzip \
  && wget -O /tmp/vault.zip "https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip" \
  && unzip -d /bin /tmp/vault.zip \
  && chmod 755 /bin/vault \
  && rm /tmp/vault.zip \
  && wget -O /tmp/consul.zip "https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip" \
  && unzip -d /bin /tmp/consul.zip \
  && chmod 755 /bin/consul \
  && rm /tmp/consul.zip \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

docker-compose.yml:

version: '3.6'

services:
  consul:
  container_name: consul.server
  command: agent -server -bind 0.0.0.0 -client 0.0.0.0 -bootstrap-expect=1
  image: consul:latest
  volumes:
    - ./config/consul/config:/consul/config
  ports:
    - "9300:9300"
    - "9500:9500"
    - "9600:9600/udp"
  networks:
    - consul_network

vault:
  container_name: vault.server
  image: vault
  ports:
    - "9200:8200"
  cap_add:
    - IPC_LOCK
  depends_on:
    - consul
  environment:
    - VAULT_LOCAL_CONFIG={"backend":{"consul":{"address":"${LOCAL_IP}:9500","advertise_addr":"http://${LOCAL_IP}", "path":"vault/"}},"listener":{"tcp":{"address":"0.0.0.0:8200","tls_disable":1}}}
  command: server
  networks:
    - consul_network

db:
  image: postgres:10.5-alpine
  volumes:
    - postgres_data:/var/lib/postgresql/data/
  environment:
    - CONSUL_HTTP_ADDR=${LOCAL_IP}:9500
    - VAULT_ADDR=http://${LOCAL_IP}:9200
  networks:
    - consul_network
    - database_network

networks:
  consul_network:
    driver: bridge
  database_network:
    driver: bridge

volumes:
  postgres_data:

А также я сохраняю LOCAL_IP в файле .env:

LOCAL_IP=10.0.2.15

(Я разрабатываю на машине Vagrant, отсюда и адрес). Я следил за этим руководство и я предполагаю, что контейнер db должен иметь доступ как к consle.server, так и к vault.server, но это не так. (?)

Во-вторых, я подключился к vault.server и попытался получить статус хранилища, который ответил

Error checking seal status: Get https://127.0.0.1:8200/v1/sys/seal-status: http: server gave HTTP response to HTTPS client

Я только начал изучать Docker и, честно говоря, даже не знаю, с чего начать поиск ответов, поэтому, если бы кто-нибудь мог дать мне направление, я был бы более чем благодарен.

Ура.

В VAULT_ADDR переменная среды должна быть установлена ​​на http://127.0.0.1:8200

При обычном запуске vault server вы увидите это в выводе при работе с отключенным TLS:

You may need to set the following environment variable:

    $ export VAULT_ADDR='http://127.0.0.1:8200'