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

24.3K Views

February 13, 23

スライド概要

Developer Summit 2023
#devsumi

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

Kubernetesとカスタムコントローラーを 活⽤したプラットフォーム開発・運⽤の勘所 ヤフー株式会社 テクノロジーグループ システム統括本部 クラウドプラットフォーム本部 第12代⿊帯 〜クラウドスタック〜 早川 博 @hhiroshell Copyright ©2023 (C) Yahoo 2020 Yahoo Japan Corporation Japan Corporation. All rights Allreserved. Rights Reserved.

2.

⾃⼰紹介 早川 博 / @hhiroshell • ヤフー株式会社(2020年2⽉〜) • プライベートクラウド開発チーム • 第12代⿊帯〜クラウドスタック〜 • 書籍執筆 & レビュー、各所での 登壇発表などしてます • 分割キーボードはいいぞ ©2023 Yahoo Japan Corporation All rights reserved. DIYキーボードたち。 ↑Cornelius → Corne ← BMEK

3.

⽬次 1. いまPla'orm Engineeringがアツい 2. Pla'orm Engineeringの重要パーツとしてのKubernetes 3. ヤフーでの活⽤事例 4. Kubernetesを使ってプラットフォーム開発を始めよう ©2023 Yahoo Japan Corporation All rights reserved.

4.

⽬次 1. いまPlatform Engineeringがアツい 2. Platform Engineeringの重要パーツとしてのKubernetes 3. ヤフーでの活⽤事例 4. Kubernetesを使ってプラットフォーム開発を始めよう ©2023 Yahoo Japan Corporation All rights reserved.

5.

ITシステム開発の歴史 • リリースの⾼頻度化と円滑な改善サイクルの確⽴を⽬指して進化 継続的デリバリー (2012〜) DevOps (2009〜) デプロイメント・パイプラインによる迅速かつ ⾼頻度なリリースとフィードバック 開発者と運⽤者の協⼒体制とそれを ⽀えるツール群 モノリシックシステム クラウドインフラとIaC インフラ管理にソフトウェア・エンジニアリング のプラクティスを導⼊し、調達の迅速化 と変更容易性を実現 Microservices (2014〜) システムを疎結合な⼩規模アプリ群で 構成しアップデートを容易に ©2023 Yahoo Japan Corporation All rights reserved. ※ 時系列の順序には諸説あります

6.

ITシステム開発の歴史 • アプリケーション開発者(Dev)は幸せになったのか…︖ • ⾼頻度のリリースとそれに耐える品質を実現するプラクティスにより、⼼理 的安⼼感を持って開発に当たれるようになった • ⾼機能かつUXに優れ、スケーラブルで安定的に稼働するシステムが実現でき るようになり、結果として開発者の評価に…(※) ※ 個⼈の⾒解を含みます ©2023 Yahoo Japan Corporation All rights reserved.

7.

近年のアプリケーション開発者が抱えている課題 • 開発者の責任範囲や習得すべきスキル/ツールが増加している 継続的デリバリー (2012〜) DevOps (2009〜) デプロイメント・パイプラインによる迅速かつ ⾼頻度なリリースとフィードバック 開発者と運⽤者の協⼒体制とそれを ⽀えるツール群 モノリシックシステム クラウドインフラとIaC インフラ管理にソフトウェア・エンジニアリング のプラクティスを導⼊し、調達の迅速化 と変更容易性を実現 Microservices (2014〜) システムを疎結合な⼩規模アプリ群で 構成しアップデートを容易に ©2023 Yahoo Japan Corporation All rights reserved. ※ 時系列の順序には諸説あります

8.

近年のアプリケーション開発者が抱えている課題 • 責任範囲の拡⼤と、⼤量のスキル/ツールの習得に悩まされている • 運⽤、監視へのコミットと、マイクロサービス化 による運⽤、監視の複雑化 • デプロイメント・パイプラインの構築とメンテナンス • 組織によってはクラウド周りの⾯倒を⾒たり • 開発に集中できず効率が悪い • スーパーマン以外は活躍しにくい / スーパーマンの頑張りに依存す るようになり時間を奪ってしまう ©2023 Yahoo Japan Corporation All rights reserved.

9.

Platform Engineering • 開発者の効率性と開発体験を⾼める ⽅法として、”Platform Engineering” が期待されるように • 2022年のGartner Hype Cycleに登場 • Innovation Trigger(黎明期)フェーズ ここ ※ Cloud-Nativeは Slope of Enlightenment(啓発機)フェーズ https://twitter.com/TheMarkONeill/status/1557531379746881536 ©2023 Yahoo Japan Corporation All rights reserved.

10.

Platform Engineeringとは︖ • ⾃社の開発者たちが開発に集中できるようにするための基盤 (IDP: Internal Developer Pla'orm)を提供する取り組み 1. システム開発で発⽣する基本的な作業を、セルフサービスで、 少ない労⼒で(舗装された道路を進むように)実施できる 依存コンポー ネントの設定 実⾏環境 の準備 ビルドと デプロイ 監視系の セットアップ 権限設定 2. 専任チームが “プロダクト” として提供する • 明確なミッションを持って、顧客(開発者)のリアルな課題を解決する ©2023 Yahoo Japan Corporation All rights reserved.

11.

Platform Engineeringとは︖ • 具体的には例えばどういうこと︖ • 開発者が必要とする開発、実⾏環境を、セルフサービスで簡単に⼊⼿できる • 実⾏環境にデプロイしたら⾃動的に運⽤ポリシーが適⽤されるようにする • アプリケーションのビルドと同時に⼀定品質以上のチューニング設定をおこ なうツールが利⽤できる • IDPを使うためのドキュメント群が整備されている • 専任チームによるサポートを受けられる • ...etc ※ あくまで⼀例です。実際には組織ごとの具体的な課題に当てはまる取り組みが必要です ©2023 Yahoo Japan Corporation All rights reserved.

12.

パブリッククラウドとの違い • パブリッククラウドだけでは組織固有の課題や要件に応えるのは難 しい • 例えば、組織固有のポリシーに準拠した権限をデフォルトで従業員に設定し たくても、始めからそれが⽤意されているわけではない • 権限を⾃動設定する機能が提供されることはありうるが、それを使って⾃組 織に適⽤するのはユーザーの責任 使⽤ 提供 使⽤ IDP 開発者 プラットフォーム チーム ©2023 Yahoo Japan Corporation All rights reserved. パブリッククラウド の機能群

13.

CloudNativeとPlatform Engineering • CloudNativeなテクノロジー群はIDPを実現するためのパーツとして 重要な役割を担う • Kubernetesを中⼼とした様々なミドルウェアと強固なOSSエコシステム CNCF Graduated Projects https://landscape.cncf.io/card-mode?project=graduated ©2023 Yahoo Japan Corporation All rights reserved.

14.

CloudNativeとPlatform Engineering • とりわけKubernetesは、組織固有の要件を実装するためのベースと して活躍 1. 様々なワークロードを安定的に動かすための基本機能 • セルフヒーリング、ローリングアップデート、スケーラビリティ... 2. 使いやすく整備された拡張ポイント • カスタムコントローラー、Admission Webhook... 3. API Servicerを中⼼とした⼀貫性のある使⽤感 • kubectlでKRM(Kubernetes Resource Model)リソースを操作する、という⼀貫した 体験 ©2023 Yahoo Japan Corporation All rights reserved.

15.

⽬次 1. いまPlatform Engineeringがアツい 2. Platform Engineeringの重要パーツとしてのKubernetes 3. ヤフーでの活⽤事例 4. Kubernetesを使ってプラットフォーム開発を始めよう ©2023 Yahoo Japan Corporation All rights reserved.

16.

Kubernetesの拡張ポイント • Kubernetesには、機能拡張されること想定して多数の拡張ポイント が設けられている • カスタムコントローラー • Aggregation Layer • Admission / Mutating Webhook • Authentication / Authorization Webhook • Scheduler • Device Plugin • Network Plugin ©2023 Yahoo Japan Corporation All rights reserved.

17.

本セッションで話すこと • Kubernetesには、機能拡張されること想定して多数の拡張ポイント が設けられている • カスタムコントローラー これについて話します • AggregaMon Layer • Admission / MutaMng Webhook • AuthenMcaMon / AuthorizaMon Webhook • Scheduler • Device Plugin • Network Plugin ©2023 Yahoo Japan Corporation All rights reserved.

18.

Kubernetesのコントローラーパターン • Deploymentを適⽤するといい感じにPod(とコンテナ)が起動する Worker Node Pod > kubectl apply Deployment API Server 感じの い い か なに しくみ Worker Node Pod ©2023 Yahoo Japan Corporation All rights reserved.

19.

Kubernetesのコントローラーパターン • コントローラー群がそれぞれ仕事を果たした結果Podが起動する Worker Node > kubectl apply Deployment API Server Worker Node etcd { } Deployment ©2023 Yahoo Japan Corporation All rights reserved.

20.

Kubernetesのコントローラーパターン • コントローラー群がそれぞれ仕事を果たした結果Podが起動する Controller Manager Worker Node Deployment Controller > kubectl apply Deployment API Server Worker Node etcd { } Deployment { } ReplicaSet ©2023 Yahoo Japan Corporation All rights reserved.

21.

Kubernetesのコントローラーパターン • コントローラー群がそれぞれ仕事を果たした結果Podが起動する Controller Manager Deployment Controller > kubectl apply Deployment Worker Node ReplicaSet Controller API Server Worker Node etcd { } Deployment { } ReplicaSet { } Pod ©2023 Yahoo Japan Corporation All rights reserved.

22.

Kubernetesのコントローラーパターン • コントローラー群がそれぞれ仕事を果たした結果Podが起動する Controller Manager Deployment Controller > kubectl apply Deployment ReplicaSet Controller Worker Node kubescheduler API Server Worker Node etcd { } Deployment { } ReplicaSet { } Pod ©2023 Yahoo Japan Corporation All rights reserved.

23.

Kubernetesのコントローラーパターン • コントローラー群がそれぞれ仕事を果たした結果Podが起動する Controller Manager Deployment Controller > kubectl apply Deployment ReplicaSet Controller Worker Node kubescheduler API create / edit k kubelet Pod watch Server Worker Node etcd { } Deployment { } ReplicaSet { } Pod ©2023 Yahoo Japan Corporation All rights reserved. create / edit k kubelet Pod

24.

Reconciliation Loopの基本 1. 指定された「望ましい状態(Desired State)」を取得する 2. 「実際の状態(Actual State)」を観測する 3. 「実際の状態」を「望ましい状態」に⼀致するように変更する 4. 1〜3 を繰り返す Modifies Desired State read read & write (1) Controller (4) ©2023 Yahoo Japan Corporation All rights reserved. (2), (3) External World (Actual State)

25.

KubernetesにおけるReconciliation Loop • 「望ましい状態」をKubernetesリソースとして記述し、API Serverで 管理する • API Serverに保存したり、CRUD操作を⾏ったりする • 「実際の状態」は何でもよい。例えば: • 所定の内容のKubernetesリソースがAPI Serverにあること • 所定の状態でPodが起動していること • 外部システムに所定の設定が⾏われていること ©2023 Yahoo Japan Corporation All rights reserved.

26.

Reconciliation Loopに着⽬したKubernetesのアーキテクチャ • コントローラー群がそれぞれ仕事を果たした結果Podが起動する API Server etcd Modifies { } Deployment Deployment Controller { } ReplicaSet ReplicaSet Controller { } Pod kube scheduler read read & write kubelet kubelet kubelet ©2023 Yahoo Japan Corporation All rights reserved. Pod

27.

カスタムコントローラーによるKubernetesの拡張 • カスタムコントローラー: • Reconciliation Loopを新たに実装することで、元々備わっていない機能を Kubernetesに追加するもの • CRD (Custom Resource Definition) と カスタムコントローラーによって実現 API Server etcd Modifies { } Hoge Hoge Controller { } Fuga Fuga Controller ©2023 Yahoo Japan Corporation All rights reserved. External World (Actual State)

28.

カスタムコントローラーによるKubernetesの拡張 • CRD (Custom Resource DefiniQon): • カスタムリソースのフォーマットを定義するKubernetesリソース • CRDをKubernetesに適⽤すると、カスタムリソースをAPI Serverで管理できるよ うになる API Server etcd Modifies { } Hoge Hoge Controller { } Fuga Fuga Controller 独自フォーマットの manifestを操作できるようになる ©2023 Yahoo Japan Corporation All rights reserved. External World (Actual State)

29.

カスタムコントローラーによるKubernetesの拡張 • カスタムコントローラー • 新たに実装したコントローラー • Go⾔語でcontroller-runMmeというフレームワークを使って実装するのが基本 • 多くの場合Kubernetesクラスター内にデプロイして動かす API Server etcd Modifies { } Hoge Hoge Controller { } Fuga Fuga Controller External World (Actual State) 新たに実装した コントローラー ©2023 Yahoo Japan Corporation All rights reserved.

30.

⽬次 1. いまPla'orm Engineeringがアツい 2. Pla'orm Engineeringの重要パーツとしてのKubernetes 3. ヤフーでの活⽤事例 4. Kubernetesを使ってプラットフォーム開発を始めよう ©2023 Yahoo Japan Corporation All rights reserved.

31.

本セクションで話すこと • ヤフーではカスタムコントローラーを活⽤して、弊社固有の要件に 応えたり、⾼い開発者体験を実現するプラットフォームを構築して います • このセクションではその⼀部を紹介します ©2023 Yahoo Japan Corporation All rights reserved.

32.

ヤフーでの実践例 – Kubernetesベースのアプリケーション実⾏環境 • セルフサービスで利⽤開始 • 開発者がGUIでNamespaceを作成すると、アクセス権が⾃動設定され安全に利 ⽤可能になる • 少ない⼿間でWebアプリケーションを実⾏ • アプリをデプロイするとURLが⾃動的に払い出され、すぐにアクセス可能に なる • アプリにクライアント証明書が⾃動注⼊され、Secret管理の必要なく他システ ムにアクセスできる • マルチテナント & スケーラブル • ヤフーの多数のサービスを少数のクラスターで実⾏ ©2023 Yahoo Japan Corporation All rights reserved. 他にも色々ありますが 一部ご紹介します > <

33.

ヤフーでの実践例 - Kubernetesベースのアプリケーション実⾏環境 • セルフサービスのNamespace払い出しと権限設定 • GUIからNamespaceを作成 Super Awesome Private Cloud Console my-project Namespace新規作成 Namespace名: • ⾃分が属さないプロジェクトのNamespaceに対しては操作できない # 関係ないNamespaceに対する操作(CLIのコンテキストは設定しておく) $ sapctl –n another-project get app Error from server (Forbidden): apps.fleet.zlab.co.jp is forbidden: User ”hhiros... ©2023 Yahoo Japan Corporation All rights reserved.

34.

ヤフーでの実践例 - Kubernetesベースのアプリケーション実⾏環境 • アプリのデプロイからアクセスまで • 簡単なコマンドまたはカスタムリソースからアプリをデプロイ • アプリが起動すると⾃動的にURLが払い出され、すぐにアクセス可能 $ sapctl create app hello-world --image=example-registry/sample/helloworld-go:latest --port=8080 $ sapctl get app hello-world NAME ENDPOINT hello-world https://hello-world.sandbox.app.dev.yahoo.co.jp $ curl https://hello-world.sandbox.app.dev.yahoo.co.jp Hello World! ©2023 Yahoo Japan Corporation All rights reserved. READY True REASON AGE 6m4s

35.

ヤフーでの実践例 - Kubernetesベースのアプリケーション実⾏環境 • カスタムコントローラーによる⾃動権限設定の仕組み Namespace API Namespace 作成操作 Git CI Namespace Namespaceをクラスターに作成 API Server 開発者 etcd { } Namespace Kubernetesクラスター ©2023 Yahoo Japan Corporation All rights reserved.

36.

ヤフーでの実践例 - Kubernetesベースのアプリケーション実⾏環境 • カスタムコントローラーによる⾃動権限設定の仕組み Namespace API Namespace 作成操作 Git CI Namespace 権限管理システム (Athenz) Athenz Policy Namespaceをクラスターに作成 API 権限情報の登録 Server 開発者 etcd ns-controller { } Namespace { } AthenzPolicyClaim policy-controller Athenz Policy Operator Kubernetesクラスター ©2023 Yahoo Japan Corporation All rights reserved.

37.

ヤフーでの実践例 - Kubernetesベースのアプリケーション実⾏環境 • カスタムコントローラーによる⾃動権限設定の仕組み Namespace API Git Namespace 作成操作 CI 開発者 Athenz Policy Namespaceをクラスターに作成 API Namespace内の リソースに対する操作 権限管理システム (Athenz) Namespace Server 権限情報の登録 権限のチェック etcd ns-controller { } Namespace { } AthenzPolicyClaim policy-controller Athenz Policy Operator Kubernetesクラスター ©2023 Yahoo Japan Corporation All rights reserved.

38.

ヤフーでの実践例 - Kubernetesベースのアプリケーション実⾏環境 • アプリケーションデプロイ時のエンドポイント⾃動設定の仕組み { } App API App アプリを デプロイ Server etcd 開発者 ©2023 Yahoo Japan Corporation All rights reserved.

39.

ヤフーでの実践例 - Kubernetesベースのアプリケーション実⾏環境 • アプリケーションデプロイ時のエンドポイント⾃動設定の仕組み app operator API App アプリを デプロイ Server etcd { } App app-controller { } AppBinding ab-controller { } DNSRegistraUonRequest drr-controller 開発者 DNS Server DNSレコードの登録 ©2023 Yahoo Japan Corporation All rights reserved.

40.

ヤフーでの実践例 - Kubernetesベースのアプリケーション実⾏環境 • アプリケーションデプロイ時のエンドポイント⾃動設定の仕組み app operator API App アプリを デプロイ Server etcd { } App app-controller { } AppBinding ab-controller { } DNSRegistraUonRequest drr-controller 開発者 DNSレコードの登録 DNS Server 名前解決 アプリのユーザー リクエスト Pod Ingress Controller Pod Pod ©2023 Yahoo Japan Corporation All rights reserved.

41.

その他の取り組み • マルチテナント & スケーラビリティ • 複数のKubernetesクラスターを組み合わせた、超⼤規模なアプリ実⾏基盤の 実現 • 複数のKubernetesクラスターを束ねるメタクラスターを設け、メタクラス ターにアプリの起動を指⽰すると、適切なクラスター上でアプリが⽴ち上が る仕組み コントローラー App アプリをデプロイ 開発者 適切なクラスター でアプリを起動 アプリにアクセス エンドユーザー ©2023 Yahoo Japan Corporation All rights reserved.

42.

その他の取り組み • アプリケーション・アイデンティティの⾃動設定 • アプリケーションを⼀意に識別可能なクライアント証明書をPodに⾃動注⼊ し、さらにAthenz上にそれに対応するアプリケーションアカウントを作成 • KubernetesのSecretを使わずに外部システムへの認証情報が⾃動設定される ※ h6ps://github.com/AthenZ/athenz/blob/master/docs/copper_argos.md App アプリを デプロイ 開発者 アプリへのアクセス権を設定 アプリケーション アカウントを登録 API Server ✓ XXXクラスターのYYYアプリ のアクセスを許可 Pod ZZZシステム 管理者 認証・認可 証明書の注⼊ コントローラー クライアント証明書と共に外部システムにリクエスト ©2023 Yahoo Japan Corporation All rights reserved. ZZZ システム

43.

⽬次 1. いまPla'orm Engineeringがアツい 2. Pla'orm Engineeringの重要パーツとしてのKubernetes 3. ヤフーでの活⽤事例 4. Kubernetesを使ってプラットフォーム開発を始めよう ©2023 Yahoo Japan Corporation All rights reserved.

44.

このセクションで話すこと • ここではカスタムコントローラー開発をおこなう際の、設計の考え ⽅やプロジェクトの進め⽅について話します • 実装作業の観点ではcontroller-runQmeと呼ばれるフレームワークが デファクトになっていて、これを使いこなす必要があります。これ についてはすでに良質な資料があるのでそちらを参考にしてくださ い(本スライドの最後に参考⽂献を掲載してあります) ©2023 Yahoo Japan Corporation All rights reserved.

45.

カスタムコントローラー開発の進め⽅ • カスタムコントローラー開発の全体の流れ 設計 コントローラーをひとつずつ 実装・テスト・リリースしていく コントローラーと カスタムリソースの 構成を決める カスタムリソースの 仕様を決める コントローラー毎に 詳しい挙動を決める コントローラー の実装・テスト リリース 設計へのフィードバック ©2023 Yahoo Japan Corporation All rights reserved.

46.

カスタムコントローラーの設計の進め⽅ • コントローラーとカスタムリソースの構成を決める • 作りたい機能を実現できるようにコントローラーとカスタムリソースを作る 単位を決めていく • 下のような図を書きながら試⾏錯誤 etcd { } Namespace { } AthenzPolicyClaim ns-controller policy-controller Athenz Policy Operator External World (Actual State) • ひとつのコントローラーに機能を詰め込みすぎないように注意 ©2023 Yahoo Japan Corporation All rights reserved.

47.

カスタムコントローラーの設計の進め⽅ • カスタムリソースの仕様を決める • 実際にmanifest(yamlファイル)を書きながらフィールド構成を考えていく • specとstatusがある。statusはコントローラーからリソースに対するActual State の状態などを記録するのに利⽤できる kind: AthenzPolicyClaim spec: policySetVersion: user-namespace-template-1_1_0 status: synchronized: True • kubectl get したときに表⽰する項⽬もいい感じにしておくと運⽤時に便利 $ kubectl get athenzpolicyclaim NAMESPACE NAME my-project-test my-project-test-claim SYNCHRONIZED True ©2023 Yahoo Japan Corporation All rights reserved.

48.

カスタムコントローラーの設計の進め⽅ • コントローラー毎に詳しい挙動を整理する • ns-controllerの動作 イベント コントローラーの動作 Namespaceリソースが新規作成された ⼦のAthenzPolicyClaimリソースを作成するxxxフィールド、yyy フィールドの値は… Namespaceリソースのxxxが変更された ⼦のAthnezPolicyClaimのxxxをNamespaceに合わせて変更する Namespaceリソースが削除された ⼦のAthenzPolicyClaimを削除する AthenzPolicyClaimリソースが削除された AthenzPolicyClaimリソースを再作成する AthenzPolicyClaimリソースが変更された 親のNamespaceリソースの内容に合わせてAthenzPolicyClaimリ ソースを元に戻す • policy-controllerの動作 イベント ... コントローラーの動作 ... ©2023 Yahoo Japan Corporation All rights reserved.

49.

カスタムコントローラーの設計の進め⽅ • コントローラーの挙動を決めるときのコツ • Actual Stateに変更があったときの動作も忘れない ここが変更されたら policy-controllerがもとに戻す etcd { } Namespace { } AthenzPolicyClaim ここが変更され たら ns-controller がもとに戻す ns-controller policy-controller Athenz Policy Operator External World (Actual State) • 各表(前ページ)が⼤きくなり過ぎるようなら、コントローラーの役割が多すぎ ないか⾒直す • 前ページの各表はそのままテストケースにもなる ©2023 Yahoo Japan Corporation All rights reserved.

50.

コントローラーの実装 • 1つのバイナリに複数のコントローラーが含まれることがほとんど • コントローラーを1つずつ実装していく • それぞれのコントローラーは互いに独⽴したReconciliaMon Loopを担当するの で、別々に実装を進められる • Athenz Policy Operatorの例では、policy-controllerができ上がった時点で、権限 情報をmanifestで管理できるようになる カスタムリソースを 直接適⽤ API Server etcd { } AthenzPolicyClaim policy-controller Athenz Policy Operator 権限の管理をmanifestで できるようになった! ©2023 Yahoo Japan Corporation All rights reserved. External World (Actual State)

51.

コントローラー単位で開発を進めるメリット • コントローラー単位で開発すると、⼩さな独⽴した単位で漸進的に 開発を進めていける • 意味のある⼩さな単位でリリースして、早めにフィードバックを得られる • 複数チームで分担できる • スクラムチームの動き⽅にうまくはまる ※ MVP - not “bike to car” (h8ps://www.linkedin.com/pulse/mvp-bike-car-fred-voorhorst/) ©2023 Yahoo Japan Corporation All rights reserved.

52.

ここまでのまとめ • カスタムコントローラー開発の全体の流れ 設計 コントローラーをひとつずつ 実装・テスト・リリースしていく コントローラーと カスタムリソースの 構成を決める カスタムリソースの 仕様を決める コントローラー毎に 詳しい挙動を決める コントローラー の実装・テスト リリース 設計へのフィードバック ©2023 Yahoo Japan Corporation All rights reserved.

53.

おわりに • 開発者の⽣産性と開発体験を⾼めるための “Platform Engineering” が 注⽬されている • KubernetesはInternal Developer Platform構築のための重要パーツ • Kubernetesをカスタムコントローラーで拡張することで、⾼度な要 件を実現するIDPが構築できる • カスタムコントローラー開発やっていきましょう︕ ©2023 Yahoo Japan Corporation All rights reserved.

54.

宣伝 • サイバーエージェントさん主催のイベントにて、本⽇紹介したアプ リケーション実⾏基盤についての発表があります。今⽇よりもっと 詳しい話が気になる⽅は、ぜひご参加ください︕ 「CA.infra #1 - Kubernetes as a Service」 ・ 2023/03/02(⽊) 19:00〜 オンライン開催 ・ hGps://cyberagent.connpass.com/event/272843/ ©2023 Yahoo Japan Corporation All rights reserved.

55.

©2023 Yahoo Japan Corporation All rights reserved.

56.

参考⽂献 – Platform Engineeringについて • What is plaUorm engineering? (PlaUorm Engineering Org) • hGps://plaOormengineering.org/blog/what-is-plaOorm-engineering • What Is PlaUorm Engineering? (Gartner) • hGps://www.gartner.com/en/arQcles/what-is-plaOorm-engineering • From Kubernetes to PaaS to … Err, What’s Next? - Daniel Bryant, Ambassador Labs • hGps://www.youtube.com/watch?v=btUYeOa7JPI • 役に⽴つプラットフォームを作ろう – プラットフォームエンジニアが知っておくべき「プロダクト」の考え⽅ • hGps://speakerdeck.com/jacopen/yi-nili-tupuratutohuomuwozuo-rou-puratutohuomuenziniagazhituteokubeki-purodakuto-falsekao-efang • 世界に誇れるプラットフォームチームをつくる • hGps://speakerdeck.com/jacopen/shi-jie-nikua-rerupuratutohuomuQmuwotukuru ©2023 Yahoo Japan Corporation All rights reserved.

57.

参考⽂献 – カスタムコントローラーの開発について • The Kubebuilder Book • https://book.kubebuilder.io/ • つくって学ぶKubebuilder • https://zoetrope.github.io/kubebuilder-training/ • Kubernetesオペレータのアンチパターン & ベストプラクティス • https://speakerdeck.com/zoetrope/kubernetesoperetafalseantipatanbesutopurakuteisu ©2023 Yahoo Japan Corporation All rights reserved.