概要
VMware Harbor の管理画面で実行されているライブラリやユーザ作成はバックエンドでは API 経由で実行されています
実はこの API は利用者側からも使用することができます
デフォルトではオフになっているので有効にすることで使用できるようになります
環境
- Ubuntu 16.04
- Harbor 1.1.1
- docker-compose 1.13.0
- docker 17.03
事前作業
Harbor のインストールはオフラインインストールを使って Ubuntu 上にインストールしています
手順はこちらの記事を参考にしてください
REST API の有効化
Harbor が動作しているサーバにログインしてサーバ上で作業する必要があります
harbor は /root/harbor にインストールしているものとします
- cd /root/harbor
wget https://raw.githubusercontent.com/vmware/harbor/master/docs/prepare-swagger.sh https://raw.githubusercontent.com/vmware/harbor/master/docs/swagger.yaml
- vi prepare-swagger.sh
SCHEME=https
SERVER_IP=reg.your.domain
ここのスキーマとサーバの設定の部分は http で IP ベースで動作している場合は、それを入力してください
ドメインを貼って証明書まで設定してる場合は、https で Harbor に設定したドメインを入力してください
- chmod +x prepare-swagger.sh
- ./prepare-swagger.sh
シェルを実行するとカレントに swagger.tar.gz が作成されているはずです
- cp docker-compose.yml{,.back}
- vi docker-compose.yml
- ../src/ui/static/vendors/swagger-ui-2.1.4/dist:/harbor/static/vendors/swagger
- ../src/ui/static/resources/yaml/swagger.yaml:/harbor/static/resources/yaml/swagger.yaml
上記 2 行を「ui:」の「volumes:」の部分に追記します
diff だと以下の通りになります
- diff docker-compose.yml.back docker-compose.yml
79a80,81
> - ../src/ui/static/vendors/swagger-ui-2.1.4/dist:/harbor/static/vendors/swagger
> - ../src/ui/static/resources/yaml/swagger.yaml:/harbor/static/resources/yaml/swagger.yaml
あとはコンテナを再起動すれば OK です
- docker-compose down
- docker-compose up -d
動作確認
まず https://reg.your.domain/static/vendors/swagger/index.html
にアクセスして Swagger UI が表示されることを確認してください
ここで UI が表示されないと API が有効になっていません
表示されたら実際に API をコールしてみましょう
例えばプロジェクトやリポジトリを検索する API /search は以下のようにコールできます
curl -X GET --header 'Accept: application/json' 'https://reg.your.domain/api/search?q=library'
結果以下のような json が返却されれば OK です
{
"project": [
{
"project_id": 1,
"owner_id": 1,
"name": "library",
"creation_time": "2017-06-26T08:03:45Z",
"creation_time_str": "",
"deleted": 0,
"owner_name": "",
"public": 1,
"Togglable": false,
"update_time": "2017-06-26T08:03:45Z",
"current_user_role_id": 0,
"repo_count": 0
}
],
"repository": []
}
SDK や詳しいドキュメントはほぼないので、Swagger UI を見ながら API をコールするしかないと思います
swagger.yaml が公開されているので go-swagger を使って swagger generate client すればクライアントツールは簡単に作れるかもしれません
最後に
Harbor の REST API を有効にしてプロジェクトやレジストリの情報にアクセスできるようにしてみました
認証等は特になかったので公開するのは少し危険ですが、プライベートで独自の UI を作ったりするには便利かなと思います
ちなみに /projects などへのアクセスは認証が必要でベーシック認証でアクセスすることができます
返信削除curl の場合は「-u」オプションを指定します
curl -u admin:Harbor12345 -v -X GET --header 'Accept: application/json' 'https://reg01.harbor.gq/api/projects'