KubernetesでのWindowsコンテナの認証におけるDocker社の貢献 #docker #kubernetes #k8s
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
Windows Server 2016リリースに併せて、Docker EnterpriseのSwarm上で動作するWindowsコンテナのサポートを追加しました。その際、純粋なLinux環境にはなかった課題に挑戦しなければなりませんでした。とりわけ、gMSA (Group Managed Service Account; グループ管理サービスアカウント)を使っているコンテナベースのサービスに対するActive Directory認証が挙げられます。本番環境にWindowsコンテナアプリケーションをデプロイ・実行してきた約3年間の経験から、Docker社はコンテナベースの世界におけるgMSAの管理についてのさまざまな複雑性を解消しました。この作業をKubernetes本家に寄贈できたことを嬉しく思います。
コンテナ化環境におけるgMSAの課題
複数のインスタンスにわたる認証に使うことは別として、gMSAはさらに2つの問題を解決します:
- コンテナがドメインに参加できない。
- コンテナを起動した際、クラスタ内のどのホスト上で実行されるのかを実際に知ることができない。今日はホストA・B・C上で3つのレプリカを起動しているとして、明日はホストQ・R・S・Tで4つのレプリカを起動するかもしれない。
この一過性を解決する方法の1つは、このサービス用のコンテナを起動する かもしれない 各ホストあるいは全ホストに、gMSA資格情報の仕様を配置し、コンテナ内で実行する全Windowsサービス用にこれを繰り返すことです。この方法はサーバとサービスが少数の場合のみ有効で、スケールしないことがわかるはずです。また、資格情報の仕様をイメージそのものの中に配置することもできますが、後日サービスが使っている資格情報の仕様を変更する際の柔軟性について問題となるでしょう。
図1: コンテナ、資格情報の仕様、ホストの組み合わせの管理はスケールしない
Docker Enterprise 3.0では、Swarm環境におけるgMSA資格情報の仕様の管理のための新しい方法を編み出しました。 可能性のある すべてのホスト上に手動で資格情報に仕様を作成・コピーする代わりに、サービスの設定として作成できます:
docker config create credspec...
これはクラスタ全体のリソースで、Windowsコンテナサービスを作成する場合パラメータとして利用できます:
docker service create --credential-spec="config://credspec"...
これにより、Swarmは実行時に自動的に、適切なコンテナへ資格情報の仕様を提供します。Docker Secretのように、この設定はそれを必要とするコンテナのみに提供されます。また一般的なDocker Configと異なり、資格情報の仕様はシステム内にファイルとしてマウントしません。
gMSA資格情報の仕様をKubernetesへ
Kubernetes 1.14でWindowsサポートが追加された今、Windowsコンテナアプリケーションは大幅に増加する可能性があり、Kubernetes環境での本番向けWindowsアプリを実行しようとする人々にとって同様のgMSAサポートが重要になるでしょう。Docker社はSIG-Windowsコミュニティの助力を得て、Kubernetesプロジェクト内でのこの取り組みを支援してきました。gMSAサポートは、Kubernetes 1.14ではアルファ版リリースの段階にあります。KubernetesでのgMSAサポートは、SwarmでのDocker Configと同じような仕組みで動作します。つまり、gMSA用のcredspecを作成し、このcredspecにアクセスできるPodを制御するKubernetes RBACを使用することで、Podは必要とする適切なgMSAにアクセスできます。繰り返しますが、この機能は現在アルファ版なので、試してみる際にはまず有効にしなければいけません。
私達はgMSAのほかにWindowsワークロードへのCSIサポートのような、本家に寄贈する追加作業が残っています。アルファ版リリースの段階に到達する数週間のうちに、さらなる情報をお知らせしたいと思います。
さあ始めよう
- OSCONに参加するなら、Jessica Deen氏による Deploying Windows apps with Draft, Helm, and Kubernetes"セッションを見てください。
- 近日公開のDocker Enterprise 3.0で新しいgMSA config specを試してください。
- Kubernetes Windows gMSA SIGや他の機能強化提案についてレビュー・貢献してください。
- Microsoft Group Managed Service Account (gMSA)についてもっと学ぶ。
原文: Docker's Contribution to Authentication for Windows Containers in Kubernetes