2017年5月16日火曜日

harbor のバックエンドに s3 を使ってみた

概要

前回 registry でバックエンドに s3 を使ってみました
VMware が提供する harbor も実は registry を使っているので s3 が使えないか試してみました

環境

  • CentOS 7.3.1611
  • docker 17.03.1-ce
  • docker-compose 1.9.0
  • harbor 1.1.1

インストーラのダウンロード

  • wget 'https://github.com/vmware/harbor/releases/download/v1.1.1/harbor-offline-installer-v1.1.1.tgz'
  • tar zvxf harbor-offline-installer-v1.1.1.tgz
  • cd harbor
  • vim harbor.cfg
hostname = 192.168.100.101

バケットの作成

適当に作成しましょう
本記事では前回作成した ap-northeast-1 の cf.hawksnowlog というバケットを使います

s3 の設定

  • vim common/templates/registry/config.yml
storage:
  s3:
    accesskey: your-accesskey
    secretkey: your-secretkey
    region: ap-northeast-1
    bucket: cf.hawksnowlog

という感じです
他にも設定項目はありますが、最低限の項目はこれで OK です

harbor のインストール

  • ./install.sh

完了するまで待ちましょう

動作確認

事前に insecure-registry の登録を dockerd に対して行っておきましょう
insecure-registry の登録方法は前回の記事を参考にしてください

  • docker pull nginx
  • docker tag nginx 192.168.100.101/library/nginx
  • docker push 192.168.100.101/library/nginx

push したあとに s3 のコンソールを確認するとバケット配下にイメージが保存されていることが確認できると思います

s3_with_harbor1.png

終了する場合は down しましょう

  • docker-compose down

少し気になったこと

上記で問題なく動作すると思いますが少し気になったことがあったので記載しておきます
registry に対して docker push すると以下のパスにイメージ情報が保存されていました

  • docker exec -it registry ls storage/docker/registry/v2/repositories/library/

これは storage ドライバに s3 を使った場合でもローカルを使った場合でも同じなのですが、rmi コマンドでイメージを削除した場合でも上記のファイルが残っていました
ちなみに s3 側にもデータ残っていました

rmi は dockerd が参照するイメージへのリンクを削除するだけで、物理的な削除は行わない感じでした
そうするとローカル領域が逼迫していずれ pull できなくなるような気がしました (試していません)
容量を気にしないためにわざわざ s3 を使ったのにこれだと本末転倒かなと思った感じです

ローカル側の領域はキャッシュとして置いているだけで、例えば 1 ヶ月間 pull されていない場合は自動で削除してくれるみたいな挙動をしてくれるのであれば問題ないとは思います
もしくはローカルの領域が逼迫しだしたら勝手にキャッシュを削除してくれるようになっていれば良いのかなと思います

この辺の挙動も本当は試しているといいのだと思いますが、、、

最後に

harbor + s3 を試してみました
harbor のバックエンドは純正の registry なのでストレージドライバなども問題なく使えました

今回は install.sh を実行してインストールする方法を紹介しましたが、harbor は ovf 方式でも提供されています
ovf 方式の場合、設定ファイルが編集できないと s3 を使うのは厳しいかもしれません
ovf 方式の場合に s3 を設定する方法も試してみたいとは思っています

参考サイト

0 件のコメント:

コメントを投稿