LoginSignup
4
0

More than 3 years have passed since last update.

【2020年1月版】Docker ComposeでConcourse + Vault 連携。Traefik2.0 で Vault の HTTPS をスルー。

Last updated at Posted at 2020-01-14

お試しで立ててみた Vault の HTTPS を Traefik でスルーさせたい。

前回の記事(【2020年1月版】Traefik 2.0 で Docker-Compose の"80"ポートを交通整理)で、Traefik 使っていろいろサービスを立てられるようになりましたので Concourse CI もローカルで試してみたのですが、git のキーをパイプラインに直書きするのは気に入らないので Vault との連携を試してみました。

Concourse と Vault の連携は Example の手順でおおよそ上手くできたのですが、一点だけ違うのが私の環境では Concourse と Vaultの間に Traefikがいるんですよね。

Vault は初モノなので、できるだけ Concourse の Exampleの手順通りにコトを済ませたいのですが…

状況の整理

Concourse CIのExampleの手順は認証に"クライアント証明書"を使うやり方式です。
SSL証明書の発行に certstrap を使って、Vaultのコンテナ側にSSL証明書を入れております。
このSSL証明書からConcourse CI用の証明書を発行してもらって、Concourseの認証をする、というような連携となっております。

Treafik の一般的な使い方としては Traefik でTLSしてTraefikの内側はすっぴんのHTTP通信、となります。(この方式ではクライアント証明書での認証、使えないんじゃないかな…?)
これを調整しだすと結構かかりそうなので、"Concourseのパイプラインでキーを指定して git にアクセスする"、というのを先行して疎通確認するために、このままの設定で行ってみようかというのが今回のキモなわけです。

つまり、Traefikの内側ですでにTLS入っている状況で、これをスルーできるのか、という点ですね。

いろいろやってみた結果。

以下の公式ガイドの箇所にちょっとあるのですが・・・

ここの "Configuring passthrough" という項目があるので開いてみると…

## Dynamic configuration
tcp:
  routers:
    Router-1:
      rule: "HostSNI(`foo-domain`)"
      service: service-id
      tls:
        passthrough: true

tls.passthrough: true ができるようです。

というわけで Vault の docker-compose.yml では以下のようなラベルを追加すればOKでした。

docker-compose.yml
  vault:
    image: vault
    cap_add:
      - IPC_LOCK
    command:
      - server
    expose:
      - 8200
    networks:
      - web
    volumes:
      - ./vault-certs:/vault/certs
      - ./vault-config/local.json:/vault/config/local.json
    labels:
      traefik.enable: true
      traefik.host: "vault"
      traefik.tcp.routers.vault.rule: HostSNI(`vault.192.168.1.50.nip.io`)
      traefik.tcp.routers.vault.service: vault
      traefik.tcp.routers.vault.entrypoints: https
      traefik.tcp.routers.vault.tls: ""
      traefik.tcp.routers.vault.tls.passthrough : true
      traefik.tcp.services.vault.loadbalancer.server.port: 8200
      traefik.docker.network: traefik_web

また、traefik 側でhttpsのエントリーポイントも忘れずに追加をお願いします。

traefik.yml
...
entryPoints:
  http:
    address: ":80"
  https:
    address: ":443"
...

以上でOKです!

しかし、traefik のドキュメントは肝心なところが collapsedな場合が多くて要注意ですね。。。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0