Slide 1

Slide 1 text

本番環境と開発環境で 使えるコンテナイメージ 運用 Kubernetes Meetup Tokyo #2 By 真幡 康徳

Slide 2

Slide 2 text

自己紹介 ● 株式会社Orb - DevOps チームリード ● “mahata”@ GitHub / “Yasu” @ connpass ● 最近の主戦場 ○ Kubernetes (Docker) ○ AWSサービス群 ○ オーケストレーションツール群 ■ Ansible とか...

Slide 3

Slide 3 text

Kubernetes 本番で使いたい!

Slide 4

Slide 4 text

Kubernetes 本番運用に立ちはだかる壁 ● サービスのコンテナ化 ○ マイクロサービス化 ○ コンテナイメージの管理 ● (本番環境にあわせた) 開発環境の構築 ○ ステージング環境も! ● データの永続化

Slide 5

Slide 5 text

Kubernetes 本番運用に立ちはだかる壁 ● サービスのコンテナ化 ○ マイクロサービス化 ○ コンテナイメージの管理 ● (本番環境にあわせた) 開発環境の構築 ○ ステージング環境も! ● データの永続化

Slide 6

Slide 6 text

コンテナイメージ管理黎明期

Slide 7

Slide 7 text

素朴な VPC 構成 (AWS) S3 Private Registry VPC Public Private 踏み台 サーバ

Slide 8

Slide 8 text

素朴な SSH トンネル S3 Private Registry VPC Public Private 踏み台 サーバ docker pull/push

Slide 9

Slide 9 text

素朴なSSHトンネルの良し悪し ● 良し ○ 環境構築が簡単 ● 悪し ○ Private Registry のSSHキーさえあれば全て のコンテナにアクセス可能

Slide 10

Slide 10 text

ところで マイクロサービスって...

Slide 11

Slide 11 text

Why Microservices Matter (by Heroku) Microservice-based apps are composed of several small programs, each with a single responsibility. This allows teams of engineers to work relatively independently on different services. 意訳: マイクロサービスでチームごとに責任範囲が 明確になるし, 独立して働けるようになるよね Why Microservices Matter

Slide 12

Slide 12 text

独立して働けるように なるよね!!

Slide 13

Slide 13 text

サービス (チーム) ごとに独立したい ● 一部のサービス開発をアウトソースしたい ● アウトソース先に制約を課したい ○ 必要なコンテナだけ pull/push 可能に ○ 素朴な SSH トンネルだと難しそう...

Slide 14

Slide 14 text

Docker Hub のように認証をしたい ● “$ docker login registry.example.com” したい ● ログインユーザ毎にアクセス権を変えたい

Slide 15

Slide 15 text

Docker Registry v2 の認証モデル cesanta/docker_auth: Authentication server for Docker Registry 2 cesanta/docker_auth

Slide 16

Slide 16 text

docker_auth の設定ファイル (抜粋) users: "john": password: "SOME_PASSWORD_BCRYPTED" acl: - match: {account: "john", name: "hey"} # "pull", "push", "*" actions: ["pull"]

Slide 17

Slide 17 text

まとめ ● Kubernetes 楽しい! ● マイクロサービス楽しい! ● cesanta/docker_auth 便利!