$30 off During Our Annual Pro Sale. View Details »

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

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. Masaya Aoyama
    CyberAgent
    Kubernetes as a Service ͷར༻ऀΛࢧ͑Δػೳ
    Platform Engineering Meetup #1
    amsy810 @amsy810

    View Slide

  2. - Co-chair
    ੨ࢁ ਅ໵
    + CREATIONLINE - 技術アドバイザ
    + SAKURA Internet Research Center – 客員研究員
    + 3-shake 技術顧問
    + PLAID
    - Organizer
    - KaaS Product Owner - Publications
    Twitter: @amsy810

    View Slide

  3. CyberAgent ͷϓϥΠϕʔτΫϥ΢υͱ
    ։ൃνʔϜ

    View Slide

  4. CyberAgent のプライベートクラウド
    CyberAgent には もともと事業領域ごとに、2 つのプライベートクラウド環境が存在
    2021年ごろに合併し、 CIU(CyberAgent group Infrastructure Unit)へ
    AI・広告事業側
    プライベートクラウド
    (OpenStack ベース)
    メディア・ゲーム事業側
    プライベートクラウド
    (OpenStack ベース)

    View Slide

  5. KaaS / ML Platform 開発チーム

    View Slide

  6. Kubernetes as a Service ʹجຊతͳػೳ

    View Slide

  7. AKE の歴史

    View Slide

  8. クラスタの管理: AKE Cluster API Provider

    View Slide

  9. AKE におけるクラスタの管理
    クラスタ
    アップグレード
    AKE Cluster API Provider
    (cluster-api-provider-openstack based)
    &
    AKE Cluster Manager
    クラスタ
    オートスケール
    AKE Cluster Autoscaler
    (cloudprovider/clusterapi based)
    ノード
    オートヒーリング
    AKE Node Autorepair

    View Slide

  10. AKE ʹ͓͚ΔΞυΦϯ؅ཧͱࣗಈԽ

    View Slide

  11. ユーザークラスタ郡に対するエコシステムの管理
    管理クラスタ上にデプロイ
    管理クラスタ
    ユーザークラスタ
    「ユーザー側では直接利⽤しないもの」
    「KaaS としての⾃動管理系の機能」 などで利⽤
    e.g. Cluster Autoscaler
    管理クラスタからユーザクラスタの状態を監視し、スケールが必要になったらスケールアウト
    e.g. Node Auto Repair
    管理クラスタから、ユーザークラスタのノードの状態を確認し、問題が⽣じたら修復
    ユーザー向けクラスタ上にデプロイ
    管理クラスタ
    ユーザークラスタ
    「ユーザが直接利⽤する必要があるもの」
    「ユーザクラスタ上の情報が必要なもの」 などで利⽤
    e.g. Cert Manager
    CRD を含む⼀式をデプロイし、ユーザーの Ingress などで証明書が利⽤できるように
    e.g. Prometheus / Exporter 類
    ユーザのクラスタ上でメトリクスを収集する(管理クラスタへ集約)

    View Slide

  12. ブランチ戦略
    • 新たな Kubernetes マイナーバージョンが出るたびに main ブランチから切り出す
    • 変更は main ブランチに⾏い、各ブランチには⾃動的に cherry-pick(実際には PR)
    • リリースを⾏うタイミングで各ブランチで tag を発⾏

    View Slide

  13. Kubernetes マニフェストの⾃動更新の⽬指す形
    Config リポジトリに対して、各エコシステムに対する
    ⾃動的なアップグレードのPRと変更差分の表⽰
    Config
    Repo
    manifest
    manifest

    View Slide

  14. αΠόʔΤʔδΣϯτͱAKE ͕໨ࢦ͢ੈք؍

    View Slide

  15. CyberAgent における KaaS を取り巻く現状
    CyberAgent グループには、約 100 のプロジェクト(⼦会社)が存在
    CIU がターゲットとするのは各プロジェクト(⼦会社)
    GKE on GCP / EKS on AWS / AKE on プライベートクラウド の技術選定は⾃由
    AKE チームはパブリッククラウドと⽐較して、利⽤される・必要とされるプラットフォームの提供を⽬指す
    e.g. コスト、利便性、運⽤容易性、⼿厚いサポート、etc
    ただ Kubernetes を提供するだけだと、各利⽤者はがさまざまな上物を⼿間をかけて⽤意する
    ⾞輪の再発明が多い・ベストプラクティスがほかチームに伝播しない・膨⼤なキャッチアップが必要
    といった組織上の課題を解決する
    ユーザーが遭遇した問題への対応・要望のある機能 を共通化してプラットフォーム側で提供

    View Slide

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

    View Slide

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

    View Slide

  18. Kubernetes 利⽤の最適化・改善⽀援
    余剰権限 の検知と通知(In progress)
    余剰リソース の検知と通知 ⾮推奨・廃⽌ API の検知と通知
    監査ログと Role/RoleBinding を元に不要な権限を算出し、通知を⾏う
    VPA をベースに Requests / Limits の改善提案を⾏う
    ユーザーはワークロードをデプロイするだけで、⾃動的に最適
    なリソース設定の取得・適⽤までを⾏うことが可能
    ⾮推奨 API ⽤の Constraints の .status.violations を利⽤し、
    現在の Kubernetes version で⾮推奨なリソースの洗い出し

    View Slide

  19. CyberAgent 横断での Gatekeeper Policy
    合計 63 個のポリシーを実装
    順次 さまざまな Kubernetes への導⼊推進へ
    導⼊を始めやすい提供⽅法
    • Namespace 単位の Opt-in
    • リソース単位の Opt-out

    View Slide

  20. 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/

    View Slide

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

    View Slide

  22. 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 チームが死活監視に必要なもの
    +ユーザーが必要なメトリクス

    View Slide

  23. その他の 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
    ⾼機能化
    アドテクなどの領域に
    おけるメリット

    View Slide

  24. ·ͱΊ

    View Slide

  25. まとめ
    AKE は約 6 年に渡って稼働し、OpenStack Heat > Clsuter API へ
    少⼈数で効率的に運⽤するために、ソフトウェアによる⾃律化を推進
    ⻑年の Kubernetes 運⽤の経験から、
    ユーザーが負担と感じる運⽤や実装、
    進化し続けるベストプラクティスを AKE チームが提供
    アプリケーションだけではなく、進化し続ける Platform へ

    View Slide

  26. We are hiring !
    • Kubernetes クラスタの⾼度な運⽤⾃動化 with CustomController
    • ユーザクラスタに対するセキュリティ・SRE ⽀援機能
    • 機械学習 × 運⽤⽀援
    • , and many more…
    ご相談は下記までお気軽にどうぞ
    Twitter: @amsy810 E-mail: [email protected]

    View Slide

  27. Thank you for your attention
    Twitter: @amsy810

    View Slide