Galley Configuration Problems
Verify the validationwebhookconfiguration
exists andis correct. The apiVersion
, apiGroup
, and resource
of theinvalid configuration should be listed in one of the two webhooks
entries.
If the validatingwebhookconfiguration
doesn’t exist, verify theistio-galley-configuration
configmap
exists. istio-galley
usesthe data from this configmap to create and update thevalidatingwebhookconfiguration
.
$ kubectl -n istio-system get configmap istio-galley-configuration -o jsonpath='{.data}'
map[validatingwebhookconfiguration.yaml:apiVersion: admissionregistration.k8s.io/v1beta1
kind: ValidatingWebhookConfiguration
metadata:
name: istio-galley
namespace: istio-system
labels:
app: istio-galley
chart: galley-1.0.0
release: istio
heritage: Tiller
webhooks:
- name: pilot.validation.istio.io
clientConfig:
service:
name: istio-galley
namespace: istio-system
path: "/admitpilot"
caBundle: ""
- operations:
(... snip ...)
The istio-galley
validation configuration is fail-close. Ifconfiguration exists and is scoped properly, the webhook will beinvoked. A missing caBundle
, bad certificate, or network connectivityproblem will produce an error message when the resource iscreated/updated. If you don’t see any error message and the webhookwasn’t invoked and the webhook configuration is valid, your cluster ismisconfigured.
x509: certificate signed by unknown authority
related errors aretypically caused by an empty caBundle
in the webhookconfiguration. Verify that it is not empty (see verify webhookconfiguration). Theistio-galley
deployment consciously reconciles webhook configurationused the istio-galley-configuration
configmap
and root certificatemounted from istio.istio-galley-service-account
secret in theistio-system
namespace.
- Verify the
istio-galley
pod(s) are running:
$ kubectl -n istio-system get pod -listio=galley
NAME READY STATUS RESTARTS AGE
istio-galley-5dbbbdb746-d676g 1/1 Running 0 2d
- Verify you’re using Istio version >= 1.0.0. Older version of Galleydid not properly re-patch the
caBundle
. This typically happenedwhen theistio.yaml
was re-applied, overwriting a previouslypatchedcaBundle
.
- Check the Galley pod logs for errors. Failing to patch the
caBundle
should print an error.
$ for pod in $(kubectl -n istio-system get pod -listio=galley -o jsonpath='{.items[*].metadata.name}'); do \
kubectl -n istio-system logs ${pod} \
done
- If the patching failed, verify the RBAC configuration for Galley:
$ kubectl get clusterrole istio-galley-istio-system -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app: istio-galley
name: istio-galley-istio-system
rules:
- apiGroups:
- admissionregistration.k8s.io
verbs:
- '*'
- apiGroups:
- config.istio.io
resources:
- '*'
verbs:
- get
- list
- watch
- apiGroups:
- '*'
resourceNames:
- istio-galley
resources:
- deployments
verbs:
- get
Validation is fail-close. If the istio-galley
pod is not ready,configuration cannot be created and updated. In such cases you’ll seean error about no endpoints available
.
Verify the istio-galley
pod(s) are running and endpoints are ready.
$ kubectl -n istio-system get endpoints istio-galley
NAME ENDPOINTS AGE
istio-galley 10.48.6.108:15014,10.48.6.108:443 3d
$ for pod in $(kubectl -n istio-system get pod -listio=galley -o jsonpath='{.items[*].metadata.name}'); do \
kubectl -n istio-system logs ${pod} \