設定検証の問題
一見有効な設定が拒否される
設定が拒否される理由の詳細については、istioctl validate -fおよびistioctl analyzeを使用してください。コントロールプレーンのバージョンと同様のバージョンのistioctl CLIを使用してください。
設定で最も一般的に報告される問題は、YAMLのインデントと配列表記(-
)の間違いです。
必要に応じてIstio APIリファレンスを参照し、手動で構成が正しいことを確認してください。
無効な設定が受け入れられる
validatingwebhookconfiguration
が、istio-validator-
に続いて、デフォルトリビジョンではない場合は <revision>-
、さらに Istio システム名前空間(例:istio-validator-myrev-istio-system
)が続いた名前で存在し、正しいことを確認してください。無効な構成の apiVersion
、apiGroup
、および resource
は、validatingwebhookconfiguration
の webhooks
セクションにリストされている必要があります。
$ kubectl get validatingwebhookconfiguration istio-validator-istio-system -o yaml
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
labels:
app: istiod
install.operator.istio.io/owning-resource-namespace: istio-system
istio: istiod
istio.io/rev: default
operator.istio.io/component: Pilot
operator.istio.io/managed: Reconcile
operator.istio.io/version: unknown
release: istio
name: istio-validator-istio-system
resourceVersion: "615569"
uid: 112fed62-93e7-41c9-8cb1-b2665f392dd7
webhooks:
- admissionReviewVersions:
- v1beta1
- v1
clientConfig:
# caBundle should be non-empty. This is periodically (re)patched
# every second by the webhook service using the ca-cert
# from the mounted service account secret.
caBundle: LS0t...
# service corresponds to the Kubernetes service that implements the webhook
service:
name: istiod
namespace: istio-system
path: /validate
port: 443
failurePolicy: Fail
matchPolicy: Equivalent
name: rev.validation.istio.io
namespaceSelector: {}
objectSelector:
matchExpressions:
- key: istio.io/rev
operator: In
values:
- default
rules:
- apiGroups:
- security.istio.io
- networking.istio.io
- telemetry.istio.io
- extensions.istio.io
apiVersions:
- '*'
operations:
- CREATE
- UPDATE
resources:
- '*'
scope: '*'
sideEffects: None
timeoutSeconds: 10
istio-validator-
Webhook が存在しない場合は、global.configValidation
インストールオプションが true
に設定されていることを確認してください。
検証構成はフェイルクローズです。構成が存在し、適切にスコープされている場合、Webhook が呼び出されます。caBundle
の欠落、証明書の不良、またはネットワーク接続の問題は、リソースの作成/更新時にエラーメッセージを生成します。エラーメッセージが表示されず、Webhook が呼び出されず、Webhook 構成が有効な場合は、クラスターが誤って構成されています。
x509証明書エラーで設定の作成に失敗する
x509: certificate signed by unknown authority
関連のエラーは、通常、Webhook 構成内の空の caBundle
によって発生します。空でないことを確認してください(Webhook 構成の確認を参照)。Istio は、istio-validation
configmap
およびルート証明書を使用して Webhook 構成を意図的に調整します。
istiod
ポッドが実行中であることを確認してください。$ kubectl -n istio-system get pod -lapp=istiod NAME READY STATUS RESTARTS AGE istiod-5dbbbdb746-d676g 1/1 Running 0 2d
ポッドログにエラーがないか確認してください。
caBundle
のパッチ適用に失敗すると、エラーが出力されるはずです。$ for pod in $(kubectl -n istio-system get pod -lapp=istiod -o jsonpath='{.items[*].metadata.name}'); do \ kubectl -n istio-system logs ${pod} \ done
パッチ適用が失敗した場合は、Istiod の RBAC 構成を確認してください。
$ kubectl get clusterrole istiod-istio-system -o yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole name: istiod-istio-system rules: - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - '*'
Istio は、
validatingwebhookconfiguration
を作成および更新するために、validatingwebhookconfigurations
に対する書き込みアクセス権が必要です。
no such hosts
またはno endpoints available
エラーで設定の作成に失敗する
検証はフェイルクローズです。istiod
ポッドが準備できていない場合、構成を作成および更新することはできません。このような場合、no endpoints available
に関するエラーが表示されます。
istiod
ポッドが実行中で、エンドポイントが準備できていることを確認してください。
$ kubectl -n istio-system get pod -lapp=istiod
NAME READY STATUS RESTARTS AGE
istiod-5dbbbdb746-d676g 1/1 Running 0 2d
$ kubectl -n istio-system get endpoints istiod
NAME ENDPOINTS AGE
istiod 10.48.6.108:15014,10.48.6.108:443 3d
ポッドまたはエンドポイントが準備できていない場合は、ポッドログとステータスを確認して、Webhook ポッドが起動してトラフィックを処理できない理由を示す兆候がないか確認してください。
$ for pod in $(kubectl -n istio-system get pod -lapp=istiod -o jsonpath='{.items[*].metadata.name}'); do \
kubectl -n istio-system logs ${pod} \
done
$ for pod in $(kubectl -n istio-system get pod -lapp=istiod -o name); do \
kubectl -n istio-system describe ${pod} \
done