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が必須に(ベータではオプション)
  • ingressClassNamekubernetes.io/ingress.classアノテーションを置換
  • バックエンドサービスポートがport.numberまたはport.nameを使用

ユースケース

ルーティングの問題、TLS設定ミス、API互換性の問題を防ぐためにデプロイ前にIngress設定を検証する。古いKubernetesバージョンから移行する際に不可欠。

試してみる — K8s Manifest Validator

フルツールを開く