第6章:サンプルアプリ(raw YAML)で基本動作確認

この章の学習目標(3〜5)

  • raw YAML によるデプロイで、Kubernetes の基本動作を確認できる
  • 以後の Kustomize/Helm 化に向けて、何を抽象化すべきか整理できる
  • 検証結果(到達確認/ログ)を再現可能な形で記録できる

前提

  • Kubernetesクラスタが Ready(第4章)
  • CNI/Ingress が導入済み(Ingress を使う場合。第5章)
  • 本章で使うマニフェストは examples/apps/sample-app/raw-yaml/ と一致させます

サンプルアプリの構成(最小)

本章は「最小で動かす」ために、次のリソースを使います。

リソース 役割 本書で確認したいこと
Namespace 影響範囲の分離 以後の運用単位(環境/チーム)を意識する
ConfigMap 設定の外出し 変更がどこへ効くか(コンテナ引数/ENV)
Deployment Pod の宣言/更新 rolling update、probe の挙動
Service 到達性の抽象化 selector/port の対応関係
Ingress(任意) 外部公開 Host/IngressClass/ルーティング

デプロイ(raw YAML)

kubectl apply -f examples/apps/sample-app/raw-yaml/namespace.yaml
kubectl apply -f examples/apps/sample-app/raw-yaml/configmap.yaml
kubectl apply -f examples/apps/sample-app/raw-yaml/deployment.yaml
kubectl apply -f examples/apps/sample-app/raw-yaml/service.yaml

Ingress を使う場合(Ingress Controller 導入済みの場合のみ):

kubectl apply -f examples/apps/sample-app/raw-yaml/ingress.yaml

変更点が “どこに効くか” を押さえる

raw YAML は「どの設定がどこに効くか」が 1 対 1 で追えるのが利点です。 最低限、次の対応関係を説明できる状態にします。

変更箇所 影響 典型的な事故
metadata.labels(Pod) Service が拾う対象 selector とズレて到達できない
spec.selector(Service) Pod の選別 “動いているのに繋がらない”
ports(Service/Pod) ポート対応 targetPort のズレで 502/接続失敗
Ingress.spec.rules.host ルーティング Host 不一致で 404
readiness/livenessProbe 配信可否/再起動 誤検知で無限再起動/配信停止

readiness/liveness(最低限)

examples/apps/sample-app/raw-yaml/deployment.yaml では最低限の probe を入れています。

  • readiness: ルーティング対象に含めてよいか(Service から見えるか)
  • liveness: プロセスが生存しているか(再起動すべきか)

検証では、意図的に probe を壊して挙動(イベント/再起動/Ready の変化)を確認してください。

動作確認(kubectl/curl)

kubectl -n sample-app get deploy,po,svc,ing
kubectl -n sample-app describe deploy sample-app
kubectl -n sample-app logs deploy/sample-app

Service(ClusterIP)で最短に確認する場合:

kubectl -n sample-app port-forward svc/sample-app 18080:80
curl -sS http://127.0.0.1:18080/

Ingress で確認する場合(例: sample-app.local):

kubectl -n ingress-nginx get svc ingress-nginx-controller
curl -sS -H 'Host: sample-app.local' http://<INGRESS_EXTERNAL_IP>/

公式ドキュメント(参照)

まとめ

本章は、以後の抽象化(Kustomize/Helm)に入る前に「素のKubernetes」の動作を確認します。

章末チェックリスト(3〜10)

  • raw YAML でアプリをデプロイできた
  • 到達確認(外部公開/ログ)を実施した
  • 失敗時に確認すべき情報(イベント/ログ)を把握した