Kubernetes Meetup #2 の補足 – その2

前回に続いて Kubernetes Meetup #2 での LT について振り返ろう。

Docker Registry v2 の認証スキーム

公式ドキュメントによると Docker Registry v2 の認証スキームは次の通り。

Docker Registry v2 Auth

各々の矢印は次の操作を意味する。

  1. Registry に対して push/pull を試みる
  2. Registry が認証を求める場合は 401 ステータスコードと一緒に認証方法に関する情報を返す
  3. Registry クライアントが authorization service に Bearer トークンをリクエストする
  4. authorization service が Registry クライアントの認証情報を示す Bearer トークンを返す
  5. Registry クライアントが Authorization ヘッダに Bearer トークンを含めて再度リクエストを試みる
  6. Registry が Bearer トークンを検証することで認証を行い push/pull のセッションを開始する

ここで難しいのは、図中の RegistryDocker Inc. がコンテナを公開しているのに Authorization Service にはオフィシャルな実装が存在しないことだ (仕様は公開されている)。

この隙間を埋めるのが Cesanta Software が公開している cesanta/docker_auth だ。このコンテナは上図の Authorization Service として機能する。

cesanta/docker_auth の設定

cesanta/docker_auth は設定ファイルが読みやすい。

次のような設定ファイルを作ることになる。

個別に説明する必要がないくらい簡単だ。このファイルを /opt/registry/config/auth_config.yml というパスに配置したと仮定する。この設定を利用して Authorization Service を起動するにはどうすればいいだろう? このサービスは Docker Registry と一緒に使うものだから、Docker Compose で Registry もまとめて起動するのが素直な方法だろう。

/opt/registry/registry.yml に次のような Docker Compose の設定ファイルがあるとしよう。

これで docker-compose -f /opt/registry/registry.yml とすることで RegistryAuthorization Service が起動し、docker login http://www.example.com での認証が可能となる。

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中