-- Views
November 25, 25
スライド概要
さくらのクラウドの「AppRun」におけるKubernetes関連の技術について紹介
AppRun
https://cloud.sakura.ad.jp/lp/apprun/
Kubernetes Meetup Tokyo #72
https://k8sjp.connpass.com/event/373982/
Software Engineer
AppRunにおける Kubernetes/Knativeの活用事例 2025/11/25 Kubernetes Meetup Tokyo #72 さくらインターネット株式会社 八杉隆斗 1
自己紹介 八杉 隆斗(やすぎ りゅうと) 2025/6月より現職(前職: LINEヤフー株式会社) X: @ryuto86 2
今日お話しする内容 AppRunで活用しているKubernetes関連の技術について紹介します さくらのクラウドとAppRunの紹介 AppRunの技術スタック Kubernetesクラスタの構築方法 Knativeの紹介 カスタムコントローラーの活用 運用の苦労 AppRunの今後の取り組み 3
さくらのクラウド サーバーやデータベースを提供する国産のクラウド https://cloud.sakura.ad.jp ガバメントクラウドの提供事業者に選定されている https://www.digital.go.jp/policies/gov_cloud 一般の企業や個人の方ももちろんご利用いただけます! 4
AppRun コンテナイメージを簡単にデプロイできるアプリケーション実行基盤 https://cloud.sakura.ad.jp/lp/apprun/ 任意の言語やフレームワークで開発可能 リクエストベースによるオートスケール(ゼロスケール対応) インフラの管理などの手間がかからない(サーバーレス) 5
6
AppRunの技術スタック さくらのクラウド(サーバー, ロードバランサなど) Kubernetes, Kubespray, Knative, kubebuilder Terraform, Ansible GitHub Actions, Argo CD Grafana, OpenTelemetry, Fluent Bit, Mackerel PostgreSQL Go(chi, ent) 7
Kubernetesクラスタの構築方法 さくらのクラウドのサーバーを利用 サーバーの構成管理はTerraformとAnsible Kubernetesクラスタの構築にはKubesprayを利用 8
Terraform for さくらのクラウド さくらのクラウドのリソースはTerraformで管理できます https://registry.terraform.io/providers/sacloud/sakuracloud/latest/docs 9
Kubespray Kubernetesクラスタを構築するツール https://github.com/kubernetes-sigs/kubespray Ansibleとkubeadmを利用 高可用性なクラスタの構築 CNIの選択などカスタマイズが可能 10
Kubespray getting started https://kubespray.io/#/docs/getting_started/getting-started inventory/sample/inventory.ini # Installing the cluster $ ansible-playbook -i inventory.ini cluster.yml -b # Adding nodes $ ansible-playbook -i inventory.ini scale.yml -b # Upgrading the cluster $ ansible-playbook -i inventory.ini upgrade-cluster.yml -e kube_version=1.xx.x -b 11
Knative サーバーレスなアプリケーションをKubernetes上で実行・管理する ためのOSSプロジェクト https://knative.dev/ Googleが開発し、現在はCNCFに寄贈されている Cloud Runの第一世代などで採用されている 12
AppRunで活用しているKnativeの機能 Serving オートスケール リクエスト数に応じてPodが増減する バージョン管理とトラフィック分散 ロールバックやカナリアリリース、A/Bテストが可能 AppRunでは使用していないが、Eventing・Functionsもある イベント駆動アーキテクチャや関数のデプロイをサポート 13
Knative getting started https://knative.dev/docs/getting-started/ $ brew install kind kubectl $ brew install brew install knative/client/kn $ brew install knative-extensions/kn-plugins/quickstart $ kn quickstart kind $ kn service create hello --image ghcr.io/knative/helloworld-go:latest \ --port 8080 --env TARGET=World $ curl http://hello.default.127.0.0.1.sslip.io Hello World! 14
カスタムコントローラーの活用 Podの稼働時間の計測に利用(従量課金対応) メトリクスやログだけでは稼働時間の集計に課題があった metadataやspecなど細かい情報が必要 欠損の対策 Podのcontrollerを実装し、reconcileでstatusを記録 15
Kubebuilder getting started https://book.kubebuilder.io/quick-start $ brew install kubebuilder $ kubebuilder init --domain my.domain --repo my.domain/guestbook $ kubebuilder create api --group webapp --version v1 --kind Guestbook INFO Create Resource [y/n] INFO Create Controller [y/n] $ make manifests $ make install $ make run 16
大変なところ KubernetesやKnativeの運用の苦労 各種バージョンの更新 Kubespray, Kubernetes, Knative, コンテナランタイム, etc.. セキュリティ対策 脆弱性やマルチテナント対応 監視やキャパシティプランニング メトリクスの収集やリソースの見積もり 17
AppRunの今後の取り組み 正式版のリリース シングルテナントのプラン提供 Docker Hubなどのコンテナレジストリに対応 シークレットマネージャ対応 マルチコンテナ対応 マニュアル改善 その他UX改善 などなど.. 18
おわり ご清聴ありがとうございました! 19