Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kubernetes as a Service の利用者を支える機能 - Platform E...

Kubernetes as a Service の利用者を支える機能 - Platform Engineering Meetup #1 / pfem01-amsy810-k8s

Kubernetes as a Service の利用者を支える機能

Platform Engineering Meetup #1

Masaya Aoyama (@amsy810)

March 09, 2023
Tweet

More Decks by Masaya Aoyama (@amsy810)

Other Decks in Programming

Transcript

  1. - Co-chair ੨ࢁ ਅ໵ + CREATIONLINE - 技術アドバイザ + SAKURA

    Internet Research Center – 客員研究員 + 3-shake 技術顧問 + PLAID - Organizer - KaaS Product Owner - Publications Twitter: @amsy810
  2. CyberAgent のプライベートクラウド CyberAgent には もともと事業領域ごとに、2 つのプライベートクラウド環境が存在 2021年ごろに合併し、 CIU(CyberAgent group Infrastructure

    Unit)へ AI・広告事業側 プライベートクラウド (OpenStack ベース) メディア・ゲーム事業側 プライベートクラウド (OpenStack ベース)
  3. AKE におけるクラスタの管理 クラスタ アップグレード AKE Cluster API Provider (cluster-api-provider-openstack based)

    & AKE Cluster Manager クラスタ オートスケール AKE Cluster Autoscaler (cloudprovider/clusterapi based) ノード オートヒーリング AKE Node Autorepair
  4. ユーザークラスタ郡に対するエコシステムの管理 管理クラスタ上にデプロイ 管理クラスタ ユーザークラスタ 「ユーザー側では直接利⽤しないもの」 「KaaS としての⾃動管理系の機能」 などで利⽤ e.g. Cluster

    Autoscaler 管理クラスタからユーザクラスタの状態を監視し、スケールが必要になったらスケールアウト e.g. Node Auto Repair 管理クラスタから、ユーザークラスタのノードの状態を確認し、問題が⽣じたら修復 ユーザー向けクラスタ上にデプロイ 管理クラスタ ユーザークラスタ 「ユーザが直接利⽤する必要があるもの」 「ユーザクラスタ上の情報が必要なもの」 などで利⽤ e.g. Cert Manager CRD を含む⼀式をデプロイし、ユーザーの Ingress などで証明書が利⽤できるように e.g. Prometheus / Exporter 類 ユーザのクラスタ上でメトリクスを収集する(管理クラスタへ集約)
  5. ブランチ戦略 • 新たな Kubernetes マイナーバージョンが出るたびに main ブランチから切り出す • 変更は main

    ブランチに⾏い、各ブランチには⾃動的に cherry-pick(実際には PR) • リリースを⾏うタイミングで各ブランチで tag を発⾏
  6. CyberAgent における KaaS を取り巻く現状 CyberAgent グループには、約 100 のプロジェクト(⼦会社)が存在 CIU がターゲットとするのは各プロジェクト(⼦会社)

    GKE on GCP / EKS on AWS / AKE on プライベートクラウド の技術選定は⾃由 AKE チームはパブリッククラウドと⽐較して、利⽤される・必要とされるプラットフォームの提供を⽬指す e.g. コスト、利便性、運⽤容易性、⼿厚いサポート、etc ただ Kubernetes を提供するだけだと、各利⽤者はがさまざまな上物を⼿間をかけて⽤意する ⾞輪の再発明が多い・ベストプラクティスがほかチームに伝播しない・膨⼤なキャッチアップが必要 といった組織上の課題を解決する ユーザーが遭遇した問題への対応・要望のある機能 を共通化してプラットフォーム側で提供
  7. Kubernetes 運⽤の課題と AKE が⽬指す世界観 Cloud Native ではサービスアプリケーションを進化させ続けることが注⽬されがち… Kubernetes / Platform

    側も塩漬けせずに進化させ続けるべき CloudNative / Kubernetes は運⽤が⼤変 「CI/CDなどで組み込む必要があった機能」 「コンサルが改善提案する内容」なども Platform 側で提供 CloudNative / Kubernetes はキャッチアップが⼤変 「適切に扱うためのベストプラクティス」 「広がり続けるエコシステム」を提供
  8. Kubernetes 運⽤の課題と AKE が⽬指す世界観 Cloud Native ではサービスアプリケーションを進化させ続けることが注⽬されがち… Kubernetes / Platform

    側も塩漬けせずに進化させ続けるべき CloudNative / Kubernetes は運⽤が⼤変 「CI/CDなどで組み込む必要があった機能」 「コンサルが改善提案する内容」なども Platform 側で提供 CloudNative / Kubernetes はキャッチアップが⼤変 「適切に扱うためのベストプラクティス」 「広がり続けるエコシステム」を提供
  9. Kubernetes 利⽤の最適化・改善⽀援 余剰権限 の検知と通知(In progress) 余剰リソース の検知と通知 ⾮推奨・廃⽌ API の検知と通知

    監査ログと Role/RoleBinding を元に不要な権限を算出し、通知を⾏う VPA をベースに Requests / Limits の改善提案を⾏う ユーザーはワークロードをデプロイするだけで、⾃動的に最適 なリソース設定の取得・適⽤までを⾏うことが可能 ⾮推奨 API ⽤の Constraints の .status.violations を利⽤し、 現在の Kubernetes version で⾮推奨なリソースの洗い出し
  10. CyberAgent 横断での Gatekeeper Policy 合計 63 個のポリシーを実装 順次 さまざまな Kubernetes

    への導⼊推進へ 導⼊を始めやすい提供⽅法 • Namespace 単位の Opt-in • リソース単位の Opt-out
  11. ORAS による Constraint の OCI Image 化 Conftest の代わりに gator

    test コマンドを利⽤(実際は kustomize/helm 対応のためラップしたツールを提供) ConstraintTemplate / Constraint を OCI Image 化して提供 ユーザーの任意のポリシーも組み合わせ可能 https://open-policy-agent.github.io/gatekeeper/website/docs/gator/#bundling-policy-into-oci-artifacts ConstraintTemplate / Constraint ConstraintTemplate / Constraint ConstraintTemplate / Constraint Git Repository apply Pull Request ConstraintTemplate / Constraint ConstraintTemplate / Constraint ConstraintTemplate / Constraint OCI Image 化したポリシー群 $ gator test --image policy:v0.1 manifests/
  12. Kubernetes 運⽤の課題と AKE が⽬指す世界観 Cloud Native ではサービスアプリケーションを進化させ続けることが注⽬されがち… Kubernetes / Platform

    側も塩漬けせずに進化させ続けるべき CloudNative / Kubernetes は運⽤が⼤変 「CI/CDなどで組み込む必要があった機能」 「コンサルが改善提案する内容」なども Platform 側で提供 CloudNative / Kubernetes はキャッチアップが⼤変 「適切に扱うためのベストプラクティス」 「広がり続けるエコシステム」を提供
  13. Observability を実現する環境 管理クラスタ ユーザークラスタ ユーザークラスタ M etrics Metrics Promtail Promtail

    Log Log Datasource Datasource Datasource Datasource proxy テナント A テナント B prometheus-community/prom-label-proxy を利⽤して Project ラベルを元にテナント分離 Dashboard Alerting Dashboard Alerting AKE 利⽤ユーザの監視基盤としては Grafana Alerting を提供 ※ 別途 Datadog のアドオンも提供 Datasource Alertmanager AKE利⽤者 AKE利⽤者 AKEチーム Alerting 運⽤上必要なダッシュボード ⼀般的なアラートなども提供 AKE チームが死活監視に必要なもの +ユーザーが必要なメトリクス
  14. その他の OSS の利⽤・提供 イメージスキャン(SBOM ⽣成 / 脆弱性スキャン)の提供 Cisco 発の OpenClarity

    プロジェクトの kubeclarity を利⽤ • Syft: SBOM の⽣成 • Grype: SBOM を元にした脆弱性スキャン [特徴1] クラスタ上で動作しているコンテナイメージを対象にスキャン [特徴2] クラスタ上で起動しているコンテナを対象にした検索も可能 Cilium CNI の提供(In-progress) 現在は Calico CNI を利⽤ 期待していること • ebpf / DSR 構成による レイテンシ削減 • DSR 構成による ClientIP の保持 • 可観測性の向上 • より柔軟な Network Policy • 将来的な eBPF-based Service mesh 参考: https://amsy810.hateblo.jp/entry/2022/12/02/122209 ⾼機能化 アドテクなどの領域に おけるメリット
  15. まとめ AKE は約 6 年に渡って稼働し、OpenStack Heat > Clsuter API へ

    少⼈数で効率的に運⽤するために、ソフトウェアによる⾃律化を推進 ⻑年の Kubernetes 運⽤の経験から、 ユーザーが負担と感じる運⽤や実装、 進化し続けるベストプラクティスを AKE チームが提供 アプリケーションだけではなく、進化し続ける Platform へ
  16. We are hiring ! • Kubernetes クラスタの⾼度な運⽤⾃動化 with CustomController •

    ユーザクラスタに対するセキュリティ・SRE ⽀援機能 • 機械学習 × 運⽤⽀援 • , and many more… ご相談は下記までお気軽にどうぞ Twitter: @amsy810 E-mail: [email protected]