SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2023 セッションレポート(AD)

Kubernetesで高い開発者体験を作るには? ヤフーの開発環境の構築方法に学ぶ

【9-B-3】Kubernetesとカスタムコントローラーを活用したプラットフォーム開発・運用の勘所

  • このエントリーをはてなブックマークに追加

高い開発者体験を実現する開発環境の仕組み

 Kubernetesには、何かを実行するとそれに連動して必要な操作が自動実行される「コントローラーパターン」と呼ばれる仕組みがある。その実行部分を担うのが、Kubernetesクラスター内で動作するコントローラー群だ。

 早川氏は、それぞれの役割を図で説明した。たとえばユーザーがデプロイを実行すると、データストア(etcd)にデプロイメントリソースが保存される。これを受けて、コントローラー群のひとつであるDeployment ControllerはReplicaSetリソースを作成、データストアに保存。それを検知したReplicaSet ControllerがPodを新規作成。さらにそれを検知したkube-schedulerがPodの配置先を決定して、Podが起動する。Kubernetesには、状態を観測しながら指定の状態になるようプロセスを繰り返すReconciliation Loopというロジックがあり、これらがうまく連係することで自動実行の仕掛けが完成する。

Kubernetesのコントローラーパターン例
Kubernetesのコントローラーパターン例

 Kubernetesにはさまざまなリソースが標準で用意されているが、すべてのユーザーのニーズに一致するものが揃っているわけではない。そこで登場するのが、CRD(Custom Resource Definitions)とカスタムコントローラーだ。カスタムリソースをCRDで定義し、その状態をチェックして指定の操作を実行するカスタムコントローラーを実装することにより、Kubernetesの機能を拡張できるというわけだ。

ヤフーのカスタムコントローラー活用事例

 ヤフーではこのカスタムコントローラーを活用して、同社固有の要件に応える、高い開発者体験を実現するKubernetesベースのアプリケーション実行環境を構築している。早川氏は同社の開発環境の特徴を3つ紹介した。

  1. セルフサービスで利用開始
  2. アプリケーション実行までの手間の簡素化
  3. マルチテナント&スケーラブル

 1つめは、開発者がセルフサービスで利用開始できる点だ。開発者はブラウザ画面でNamespaceを作成すれば、アクセス権が自動設定され、自分の所属するチームのみが使えるNamespaceをすぐに利用可能になる。具体的には、Namespaceを作成するとAPIが呼び出され、Git管理されているマニフェストのレポジトリにNamespaceが作成され、CIツールからクラスターに反映される。そして、それを検知したカスタムコントローラーが権限管理システム(Athenz)に権限情報を登録、権限制御が働くようになる。Namespaceで別チームやプロジェクトの情報を取得しようとしても、Forbiddenが返ってくる。

カスタムコントローラーによる自動権限設定の仕組み
カスタムコントローラーによる自動権限設定の仕組み

 2つめは、デプロイに関する手間の簡素化だ。簡単なコマンドまたはカスタムリソースからアプリケーションをデプロイするとカスタムコントローラーが発動し、DNSサーバーにレコードを登録。エンドポイントにURLを自動的に払い出すという仕組みだ。そして3つめは、マルチテナントとスケーラビリティの実現だ。同社では、1つのメタクラスターが複数のKubernetesクラスターを束ねる、超大規模なアプリケーション実行基盤を構築している。メタクラスターはアプリケーションのデプロイ指示を受けると、適切なクラスター上でアプリケーションを起動する。ユーザーはクラスターを意識することなく、アプリケーションにアクセスできる。

 このほか、アプリケーションIDの自動設定も提供している。アプリケーションがデプロイされると、アプリケーションを一意に識別可能なクライアント証明書がPodに自動設定され、それに対応するアプリケーションアカウントがカスタムコントローラーによってAthenz上に登録される。KubernetesのSecretを管理しなくても外部システムにアクセスするための認証情報を自動的に設定できると早川氏は説明する。

次のページ
カスタムコントローラーの開発で注意すべきポイントは?

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers Summit 2023 セッションレポート連載記事一覧

もっと読む

この記事の著者

谷崎 朋子(タニザキ トモコ)

 エンタープライズIT向け雑誌の編集を経てフリーランスに。IT系ニュースサイトを中心に記事を執筆。セキュリティ、DevOpsあたりが最近は多めですが、基本は雑食。テクノロジーを楽しいエクスペリエンスに変えるような話が好きです。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

丸毛 透(マルモ トオル)

インタビュー(人物)、ポートレート、商品撮影、料理写真をWeb雑誌中心に活動。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:ヤフー株式会社

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/17433 2023/04/10 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング