2017年6月10日土曜日

harbor に SSL 証明書を設定して https でレジストリを使うための手順

概要

harbor を https で使うための手順を紹介します
harbor はデフォルトで http なので、わざわざ docker クライアント側の insecure-registry に登録する処理が必要になります
ドメインと証明書が使える環境であればレジストリ自体 https を使うことが推奨されています
今回はドメインと証明書を用意して harbor を https で使えるようにしてみました

環境

  • Ubuntu 16.04
  • harbor 1.1.1
  • docker 17.05

事前準備

ドメインを取得して A レコードを登録して証明書を取得します
この流れは過去に紹介もしているので過去の手順でも OK です

ドメインの取得

何でも OK です
とりあえずドメインを取得してください

A レコードの追加

取得したドメインのサブドメインを A レコードとして DNS サーバに登録します
今回登録したレジストリのサブドメインは「reg01.harbor.gq」とします

証明書の作成

とりあえず A レコードで登録したサブドメインの証明書を 1 つ作成しましょう
同一ドメインでレジストリを何台も構築する場合はワイルドカード SSL 証明書で作成することをオススメします
そして作成した証明書は harbor をインストールするサーバに転送しておきましょう

  • scp -r /etc/letsencrypt/archive/reg01.harbor.gq 192.168.100.201:~

harbor の設定

事前準備

今回は Ubuntu 上に harbor を構築します
事前に docker と docker-compose が必要になるので準備しておきましょう (参考)

設定ファイルの編集

インストーラをダウンロードして展開し、設定ファイルの証明書を設定する部分を編集します

hostname = reg01.harbor.gq
ui_url_protocol = https
ssl_cert = /root/reg01.harbor.gq/fullchain1.pem
ssl_cert_key = /root/reg01.harbor.gq/privkey1.pem
  • ./prepare

customize_crt = on という項目がありますがこれは on のままにしておかないてください
証明書を転送したときの転送先は /root/reg01.harbor.gq/ に転送しているのでそのパスを指定しています

インストールと起動

設定が変更できたらインストールしましょう

  • ./install

ダラダラとログが流れて最終的にコンテナが上がってきます
同一ディレクトリ内に docker-compose.yml があるので docker-compose ps などでコンテナを確認することができます

これで証明書が設定されて https でアクセスできるようになっているはずです

動作確認

docker クライアントから https でアクセスできるか確認してみましょう

  • docker login reg01.harbor.gq

admin/Harbor12345 でログインしましょう
ちゃんと証明書が設定されていれば怒られないはずです

  • docker pull alpine
  • docker tag alpine reg01.harbor.gq/library/alpine
  • docker push reg01.harbor.gq/library/alpine

https://reg01.harbor.gq/harbor/tags/1/library%2Falpine にアクセスすると alpine の latest が存在することがわかります
pull もできるか確認してみましょう

  • docker rmi reg01.harbor.gq/library/alpine
  • docker pull reg01.harbor.gq/library/alpine:latest
  • docker logout reg01.harbor.gq

ログアウトしてから pull するとできないのが確認できると思います

最後に

harbor に https でアクセスできるようにしてみました
ドメインと証明書が取れれば簡単に設定することができます

以下の証明書のエラーが出た場合は再度コンテナを生成し直してみてください

Error response from daemon: Get https://reg01.harbor.gq/v1/users/: dial tcp 192.168.100.201:443: getsockopt: no route to host
  • docker-compose down
  • docker rmi $(docker images -q)
  • ./prepare
  • docker-compose up -d

参考サイト

0 件のコメント:

コメントを投稿