Ingressリソースの検証
Kubernetes Ingressマニフェストの適切なAPIバージョン、必須フィールド、TLS設定、ホスト/パスルールを検証します。トラフィックルーティングが正しく定義されていることを確認。
Networking
詳細な説明
Ingressリソースの検証
Ingressリソースは外部HTTP/HTTPSトラフィックがクラスター内のServiceにどのように到達するかを定義します。設定ミスのあるIngressは404エラー、TLSの問題、ルーティング障害を引き起こす可能性があります。
Ingressの例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-ingress
labels:
app: myapp
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
ingressClassName: nginx
tls:
- hosts:
- myapp.example.com
secretName: myapp-tls
rules:
- host: myapp.example.com
http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: api-service
port:
number: 80
一般的なIngressの問題
| 問題 | 影響 | 修正 |
|---|---|---|
| 間違ったapiVersion | APIサーバーに拒否 | networking.k8s.io/v1を使用 |
ingressClassNameの欠落 |
コントローラーに認識されない | コントローラークラスを設定 |
pathTypeの欠落 |
v1では必須 | Prefix、Exact、ImplementationSpecificに設定 |
| TLSシークレットの欠落 | HTTPS失敗 | Secretを作成またはcert-managerを使用 |
| ホスト未指定 | すべてのホストにマッチ | 本番では通常意図しない |
APIバージョンの歴史
Ingressリソースは複数のAPIバージョンを経てきました:
extensions/v1beta1— k8s 1.14で非推奨、1.22で削除networking.k8s.io/v1beta1— k8s 1.19で非推奨、1.22で削除networking.k8s.io/v1— 現在の安定版
networking.k8s.io/v1の主な変更点
pathTypeが必須に(ベータではオプション)ingressClassNameがkubernetes.io/ingress.classアノテーションを置換- バックエンドサービスポートが
port.numberまたはport.nameを使用
ユースケース
ルーティングの問題、TLS設定ミス、API互換性の問題を防ぐためにデプロイ前にIngress設定を検証する。古いKubernetesバージョンから移行する際に不可欠。