Kubernetes as a Service の利用者を支える機能
Platform Engineering Meetup #1
Masaya AoyamaCyberAgentKubernetes as a Service ͷར༻ऀΛࢧ͑ΔػೳPlatform Engineering Meetup #1amsy810 @amsy810
View Slide
- Co-chair੨ࢁ ਅ+ CREATIONLINE - 技術アドバイザ+ SAKURA Internet Research Center – 客員研究員+ 3-shake 技術顧問+ PLAID- Organizer- KaaS Product Owner - PublicationsTwitter: @amsy810
CyberAgent ͷϓϥΠϕʔτΫϥυͱ։ൃνʔϜ
CyberAgent のプライベートクラウドCyberAgent には もともと事業領域ごとに、2 つのプライベートクラウド環境が存在2021年ごろに合併し、 CIU(CyberAgent group Infrastructure Unit)へAI・広告事業側プライベートクラウド(OpenStack ベース)メディア・ゲーム事業側プライベートクラウド(OpenStack ベース)
KaaS / ML Platform 開発チーム
Kubernetes as a Service ʹجຊతͳػೳ
AKE の歴史
クラスタの管理: AKE Cluster API Provider
AKE におけるクラスタの管理クラスタアップグレードAKE Cluster API Provider(cluster-api-provider-openstack based)&AKE Cluster ManagerクラスタオートスケールAKE Cluster Autoscaler(cloudprovider/clusterapi based)ノードオートヒーリングAKE Node Autorepair
AKE ʹ͓͚ΔΞυΦϯཧͱࣗಈԽ
ユーザークラスタ郡に対するエコシステムの管理管理クラスタ上にデプロイ管理クラスタユーザークラスタ「ユーザー側では直接利⽤しないもの」「KaaS としての⾃動管理系の機能」 などで利⽤e.g. Cluster Autoscaler管理クラスタからユーザクラスタの状態を監視し、スケールが必要になったらスケールアウトe.g. Node Auto Repair管理クラスタから、ユーザークラスタのノードの状態を確認し、問題が⽣じたら修復ユーザー向けクラスタ上にデプロイ管理クラスタユーザークラスタ「ユーザが直接利⽤する必要があるもの」「ユーザクラスタ上の情報が必要なもの」 などで利⽤e.g. Cert ManagerCRD を含む⼀式をデプロイし、ユーザーの Ingress などで証明書が利⽤できるようにe.g. Prometheus / Exporter 類ユーザのクラスタ上でメトリクスを収集する(管理クラスタへ集約)
ブランチ戦略• 新たな Kubernetes マイナーバージョンが出るたびに main ブランチから切り出す• 変更は main ブランチに⾏い、各ブランチには⾃動的に cherry-pick(実際には PR)• リリースを⾏うタイミングで各ブランチで tag を発⾏
Kubernetes マニフェストの⾃動更新の⽬指す形Config リポジトリに対して、各エコシステムに対する⾃動的なアップグレードのPRと変更差分の表⽰ConfigRepomanifestmanifest
αΠόʔΤʔδΣϯτͱAKE ͕ࢦ͢ੈք؍
CyberAgent における KaaS を取り巻く現状CyberAgent グループには、約 100 のプロジェクト(⼦会社)が存在CIU がターゲットとするのは各プロジェクト(⼦会社)GKE on GCP / EKS on AWS / AKE on プライベートクラウド の技術選定は⾃由AKE チームはパブリッククラウドと⽐較して、利⽤される・必要とされるプラットフォームの提供を⽬指すe.g. コスト、利便性、運⽤容易性、⼿厚いサポート、etcただ Kubernetes を提供するだけだと、各利⽤者はがさまざまな上物を⼿間をかけて⽤意する⾞輪の再発明が多い・ベストプラクティスがほかチームに伝播しない・膨⼤なキャッチアップが必要といった組織上の課題を解決するユーザーが遭遇した問題への対応・要望のある機能 を共通化してプラットフォーム側で提供
Kubernetes 運⽤の課題と AKE が⽬指す世界観Cloud Native ではサービスアプリケーションを進化させ続けることが注⽬されがち…Kubernetes / Platform 側も塩漬けせずに進化させ続けるべきCloudNative / Kubernetes は運⽤が⼤変「CI/CDなどで組み込む必要があった機能」 「コンサルが改善提案する内容」なども Platform 側で提供CloudNative / Kubernetes はキャッチアップが⼤変「適切に扱うためのベストプラクティス」 「広がり続けるエコシステム」を提供
Kubernetes 利⽤の最適化・改善⽀援余剰権限 の検知と通知(In progress)余剰リソース の検知と通知 ⾮推奨・廃⽌ API の検知と通知監査ログと Role/RoleBinding を元に不要な権限を算出し、通知を⾏うVPA をベースに Requests / Limits の改善提案を⾏うユーザーはワークロードをデプロイするだけで、⾃動的に最適なリソース設定の取得・適⽤までを⾏うことが可能⾮推奨 API ⽤の Constraints の .status.violations を利⽤し、現在の Kubernetes version で⾮推奨なリソースの洗い出し
CyberAgent 横断での Gatekeeper Policy合計 63 個のポリシーを実装順次 さまざまな Kubernetes への導⼊推進へ導⼊を始めやすい提供⽅法• Namespace 単位の Opt-in• リソース単位の Opt-out
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-artifactsConstraintTemplate/ ConstraintConstraintTemplate/ ConstraintConstraintTemplate/ ConstraintGitRepositoryapplyPull RequestConstraintTemplate/ ConstraintConstraintTemplate/ ConstraintConstraintTemplate/ ConstraintOCI Image 化したポリシー群$ gator test --image policy:v0.1 manifests/
Observability を実現する環境管理クラスタユーザークラスタユーザークラスタMetricsMetricsPromtailPromtailLogLogDatasourceDatasourceDatasourceDatasourceproxyテナント Aテナント Bprometheus-community/prom-label-proxy を利⽤してProject ラベルを元にテナント分離DashboardAlertingDashboardAlertingAKE 利⽤ユーザの監視基盤としては Grafana Alerting を提供※ 別途 Datadog のアドオンも提供Datasource AlertmanagerAKE利⽤者AKE利⽤者AKEチームAlerting運⽤上必要なダッシュボード⼀般的なアラートなども提供AKE チームが死活監視に必要なもの+ユーザーが必要なメトリクス
その他の 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⾼機能化アドテクなどの領域におけるメリット
·ͱΊ
まとめAKE は約 6 年に渡って稼働し、OpenStack Heat > Clsuter API へ少⼈数で効率的に運⽤するために、ソフトウェアによる⾃律化を推進⻑年の Kubernetes 運⽤の経験から、ユーザーが負担と感じる運⽤や実装、進化し続けるベストプラクティスを AKE チームが提供アプリケーションだけではなく、進化し続ける Platform へ
We are hiring !• Kubernetes クラスタの⾼度な運⽤⾃動化 with CustomController• ユーザクラスタに対するセキュリティ・SRE ⽀援機能• 機械学習 × 運⽤⽀援• , and many more…ご相談は下記までお気軽にどうぞTwitter: @amsy810 E-mail: [email protected]
Thank you for your attentionTwitter: @amsy810