はじめに
手順は公式の Knative Quickstart に従う。コマンドはローカル Kubernetes クラスタと動作する
kubectlを想定。
前提
kindまたはminikubeによるローカル Kubernetes クラスタ。- そのクラスタ向けに設定された
kubectl。 - Knative ドキュメント の
knCLI とそのquickstartプラグイン。 - ローカルクラスタ用のコンテナランタイム (Docker または Podman)。
インストール
quickstart プラグインは、Serving・ネットワーキング層・DNS まで配線済みのローカルクラスタをプロビジョニングする。
kn quickstart kind既存クラスタへ手動インストールする場合は、Knative インストールドキュメント の順序で Serving の CRD、core、ネットワーキング層を順に apply する。順序は CRD、core、Kourier などのネットワーキング層、DNS である。
最初の動く構成
Serving の Pod が動いていることを確認する。
bashkubectl get pods -n knative-servingコンテナイメージからサービスをデプロイする。
bashkn service create hello \ --image ghcr.io/knative/helloworld-go:latest \ --port 8080 \ --env TARGET=WorldKnative が Configuration・immutable な Revision・Route を作成し、Revision が Ready になるとサービス URL を表示する。
動作確認
kn service create が表示した URL を curl する。アイドル後の最初のリクエストは activator を通り cold start が発生する。返る値は設定した TARGET と一致するはず。
curl http://hello.default.<your-domain><your-domain> はコマンド出力に出たホストに置き換える。トラフィックが無いまま ScaleToZeroGracePeriod の 30 秒 (pkg/autoscaler/config/config.go:58) が過ぎると Revision はゼロに縮退し、kubectl get pods で観察できる。次のリクエストで再び cold start して立ち上がる。
次に読むもの
Knative ドキュメント は本ページが扱わない本番運用を網羅する: ネットワーキング層の選定と強化、オートスケーリングのターゲットと並行数の設定、Revision 間のトラフィック分割、cert-manager による TLS、コントロールプレーンの高可用性設定。