Docker Hub には、リポジトリ イメージへのユーザー アクセスの管理に役立つ 2 つの主要な構造があります。 組織とチーム。 組織はチームのコレクションであり、チームは DockerID のコレクションです。
組織内のチームを構成するには、さまざまな方法があります。 このブログ投稿では、いくつかの開発チームを持つスタークインダストリーズという名前の架空のソフトウェア会社を使用します。 1つはアプリケーションのフロントエンドで動作し、もう1つはアプリケーションのバックエンドで動作します。 また、QAチームとDevOpsチームもあります。
各エンジニアリング チームが作成したイメージをプッシュおよびプルできるように、Teams を設定する必要があります。 DevOps チームには、開発チームのリポジトリからイメージをプルするためのアクセス権と、所有するリポジトリにイメージをプッシュする権限を付与します。 また、QA チームにすべてのリポジトリへの読み取り専用アクセス権を付与します。
組織
Docker Hub では、組織はチームの集合です。 イメージ リポジトリは、組織レベルで作成できます。 また、通知を構成し、ソースコードリポジトリにリンクすることもできます。
組織を設定しましょう。
お気に入りのブラウザーを開き、 Docker Hub に移動します。 Docker ID をまだお持ちでない場合は、メイン ページから作成できます。
組織の所有者になりたいアカウントのログインハブ。 所有者として使用するDocker IDが100%わからなくても心配しないでください、必要に応じて後で所有者を追加できます。
ログインしたら、上部のナビゲーション バーにある [組織] リンクをクリックして [組織] ページに移動します。
新しい組織を作成しましょう。 右上の「組織の作成」ボタンをクリックします。 無料チームプランまたはチームプランのいずれかを選択するオプションが表示されます。 プランの詳細については、 価格ページをご覧ください。
このブログ投稿では、チームプランを使用します。
チーム プランを選択したら、組織を設定する手順を実行します。
まず、組織の名前と説明を入力します。
次に、最初に開始するユーザーの数を選択します。 チームプランには5人のユーザーが付属しており、後でいつでも追加できます。
これで、支払い情報を入力する画面が表示されます。
[購入] をクリックしてクレジット カードが承認されると、新しく作成した組織のホーム ページが表示されます。
これで、Teams の追加を開始できる組織が作成されました。
チーム数
Docker Hub では、Teams は Docker ID のコレクションです。 このコンストラクトを使用してユーザーをグループ化し、組織が所有するイメージリポジトリに権限を割り当てます。
それでは、チームを設定しましょう。
組織のホームページに戻り、[チーム] のタブをクリックし、青い [チームの作成] ボタンをクリックします。
チームの名前と説明を入力します。
次の 4 つのチームを作成します。
- バックエンドエン
バックエンドエンジニアリングチーム
- フロントエンド
フロントエンドエンジニアリングチーム
- ケーン
QAエンジニアリングチーム
- デボプセン
開発エンジニアリングチーム
チームを設定したので、各チームにユーザーを追加しましょう。
チームへのユーザーの追加は非常に簡単です。 リストからチームの 1 つを選択します。 次に、青い[メンバーの追加]ボタンをクリックします。 次に、追加するユーザーのDocker IDを入力します。
先に進み、各チームに少なくとも1人のユーザーを追加します。
イメージリポジトリの権限
さて、これで組織とチームが設定されました。 イメージリポジトリの権限を設定しましょう。
その前に、ワークフローについて少し話しましょう。 現在、アプリケーションのコードを記述している開発チームが 2 つあります。 彼らは機能の作成と欠陥の修正に取り組んでいます。 また、CI/CD パイプラインを構築するために DevOps によって使用される Dockerfile の作成も担当します。
また、開発チーム (フロントエンドとバックエンド) には、作成するイメージに対する管理者権限が必要です。 また、DevOps が作成するイメージに対する読み取りアクセス許可も付与されます
開発チームが変更をコミットしてアプリケーションにプッシュしたら、CI/CD パイプラインを開始してイメージをビルドし、テストを実行してリポジトリにプッシュする必要があります。
この架空のシナリオでは、QA チームがテスト環境でアプリケーションをテストし、ビルドを承認する必要があるため、運用環境への CI/CD の完全自動化はありません。 したがって、QA CI / CDパイプラインが実行され、ビルドがQA環境にプッシュされたら。 QAは欠陥をテストして報告します。 これらの欠陥には、チームがテストしている現在のイメージタグがタグ付けされます。 このようにして、開発チームはその特定のタグをプルして実行し、エラーを再現する複雑さを軽減できます。
QA チームがビルドを承認すると、イメージを再度ビルドする CI/CD パイプラインが開始されますが、今回は別のイメージ リポジトリでイメージに名前を付けてタグ付けします。 リリース用のもの。 QA チームにはこのリポジトリへの読み取りおよび書き込みアクセス権があり、開発チームには読み取りアクセス権があります。
DevOps チームには、開発チームが所有するものを除く、CI/CD パイプライン内のすべてのイメージ リポジトリに対する管理者権限が付与されます。 これにより、CI/CD パイプラインを設定および管理するためのフル コントロールが得られます。
イメージ リポジトリとアクセス許可の作成
チームが使用するイメージ リポジトリを作成しましょう。 その後、チームに適切な権限を設定することもできます。
上部のナビゲーションにある [リポジトリ] リンクをクリックします。 次に、青い[リポジトリの作成]ボタンをクリックします。 以下のフォームに必要事項をご記入ください。
ドロップダウンから組織を選択し、新しい画像に名前を付けます。 オプションの説明を入力し、[プライベート] を選択します。 完了したら、「作成」ボタンをクリックします。
次のイメージ リポジトリが必要になります。
次に、チームに権限を割り当てましょう。 上部のナビゲーションにある [組織] リンクをクリックして、組織のダッシュボードに移動します。 管理する組織をクリックします。 私たちの場合、「スタークマジック」を選択します。 次に、「チーム」タブをクリックします。
開発チームから始めましょう。 「フロントエンド」チームをクリックして、詳細を表示します。 次に、「権限」タブをクリックします。
ドロップダウンメニューから「ironsuit-ui-build」リポジトリを選択し、権限ドロップダウンから「管理者」を選択します。
「管理者」権限の説明がUIの左側に表示されます。
青い「追加」ボタンをクリックします。
また、他の 3 つのイメージ リポジトリに "読み取り専用" のアクセス許可を割り当てます。
次に、バックエンドエンジニアリングチームについても同じことを行います。 "backendeng" チームの "管理者" アクセス許可を "ironsuit-api-build" に割り当て、"読み取り専用" を他の 3 つのイメージ リポジトリに割り当てます。
次に、QA チームの権限を設定しましょう。
上記と同じ手順に従って、次のイメージ リポジトリに "読み取り & 書き込み" アクセス許可を割り当てます。
- アイアンスーツ-UI
- アイアンスーツ-api
次に、他の画像に「読み取り専用」権限を割り当てます。
アクセス許可を構成する必要がある最後のチームは、DevOps チームです。 チームはすべてのイメージに対する "管理者" アクセス権を持ち、チームが完全な CI/CD パイプラインを管理できるようになります。
上記の手順に従って、"devopseng" チームのすべてのイメージに "管理者" アクセス許可を付与します。
結論
Docker Hubには、シンプルでありながら非常に強力なロールベースのアクセス制御システムがあり、組織とチームを使用して、イメージリポジトリへのユーザーのアクセス許可をグループ化および管理できます。 これにより、分散したチームは独自のリポジトリを所有しながら、組織全体で共同作業を行い、開発ワークフローを加速できます。
チームと組織の詳細については、 ドキュメントを参照してください。