ICA study materials
ICA study resources

ICA flashcards

ICA · Build recall with a focused review session.

32 cards. Read the term and the definition here. The deck at the top of this page is optional.

Istio upgrade path
Must upgrade one minor version at a time; skipping minor versions is not supported. Each minor is supported for six months after release.
istioctl install profiles
Profiles: minimal (istiod only), default (istiod and ingress gateway), demo (all components with lower resources), empty (no components). Choose based on environment needs.
Revision-based upgrade
Install new control plane with a revision name, then label namespaces with istio.io/rev to migrate workloads gradually. Old revision remains until uninstalled.
Sidecar injection label
Namespace label istio-injection=enabled enables injection. For revision-based, use istio.io/rev=<revision>. Pod annotation sidecar.istio.io/inject=false disables injection for that pod.
IstioOperator custom configuration
Use istioctl install -f custom.yaml to merge with default profile. Fields include components, meshConfig, values. istioctl profile dump shows effective configuration.
istioctl x precheck
Validates cluster compatibility before installation, checking Kubernetes version and CRD conflicts. Run before install or upgrade to avoid failures.
Uninstall with purge
istioctl uninstall --purge removes all Istio resources including CRDs. Without --purge, CRDs and custom resources remain, allowing reinstall or revision cleanup.
VirtualService routing
Defines HTTP/TCP/TLS routes with match conditions (URI, headers, method, source labels) and destinations with weights. Binds to gateways for ingress traffic.
DestinationRule subsets
Defines subsets of a service using labels, and traffic policies like load balancing, connection pool, outlier detection, and TLS settings for each subset.
Traffic splitting weights
In VirtualService HTTP route, specify multiple destinations with weight values summing to 100. Used for canary releases; weights are relative proportions.
Fault injection
VirtualService HTTP fault field injects delay (fixedDelay, percentage) or abort (httpStatus, percentage) before routing. Used for chaos testing and resilience validation.
ServiceEntry external services
Adds external services to mesh registry with hosts, addresses, ports, location (MESH_EXTERNAL), and resolution (DNS, STATIC, NONE). Required for external access when outboundTrafficPolicy is REGISTRY_ONLY.
Sidecar resource scope
Limits the scope of configuration for proxies by specifying egress hosts and ingress listeners. Reduces memory and config size; applied per namespace or workload selector.
Traffic mirroring
VirtualService HTTP mirror field sends a copy of traffic to another destination. mirrorPercentage controls fraction. Original response is returned to client.
Gateway TLS modes
Gateway server TLS modes: SIMPLE (server certificate), MUTUAL (client certificate verification), PASSTHROUGH (no termination). credentialName references a Kubernetes secret.
PeerAuthentication mTLS mode
Sets mTLS mode: STRICT (reject plaintext), PERMISSIVE (accept both), DISABLE. Applied mesh-wide (root namespace), namespace-wide, or workload-specific.
AuthorizationPolicy actions
Actions: ALLOW, DENY, AUDIT, CUSTOM. Rules match source (principals, namespaces, IP blocks), operation (methods, paths, ports), and conditions. Default deny if any policy applied.
RequestAuthentication JWT validation
Validates JWT tokens with issuer, jwksUri, and audiences. Applied to workloads. Invalid tokens rejected, but requests without tokens allowed unless AuthorizationPolicy requires authentication.
JWT claim-based authorization
AuthorizationPolicy with when conditions on request.auth.claims enables fine-grained access control based on JWT claims. Requires RequestAuthentication.
SPIFFE identity format
Istio issues SPIFFE certificates with URI SAN spiffe://<trust-domain>/ns/<namespace>/sa/<serviceaccount>. Encodes workload identity for mTLS.
AuthorizationPolicy evaluation order
Deny policies evaluated first, then allow. If no allow policies, default allow; if allow policies exist, default deny. Audit policies log but do not enforce.
Egress TLS origination
DestinationRule trafficPolicy tls mode SIMPLE or ISTIO_MUTUAL originates TLS for external services. Use with ServiceEntry to enable secure egress.
Ingress TLS with Gateway
Gateway with TLS mode SIMPLE or MUTUAL terminates TLS using certificate from Kubernetes secret referenced by credentialName in istio-system namespace.
istioctl analyze
Detects configuration issues like conflicting VirtualServices, missing gateways, deprecated fields. Use --all-namespaces and --suppress to filter.
istioctl proxy-status
Shows sync status of Envoy proxies with Istiod: SYNCED, NOT SENT, STALE. Indicates configuration push issues.
istioctl proxy-config
Inspects Envoy configuration: cluster, listener, route, endpoint for a pod. Use -o json for detailed view. Helps diagnose routing and load balancing.
503 no healthy upstream
Common causes: no endpoints, mTLS mismatch (PeerAuthentication), missing ServiceEntry for external hosts. Use istioctl proxy-config endpoint to verify.
Envoy access logs
Enable via meshConfig.accessLogFile=/dev/stdout. Logs show response code, flags, upstream host. Useful for diagnosing routing and failures.
istioctl x describe pod
Summarizes configuration applied to a pod: services, virtualservices, destinationrules, and potential issues. Helps troubleshoot misconfigurations.
Control plane debug logs
Istiod logs at debug level with --log_level=debug. Check for push errors, certificate issues, webhook failures. Use kubectl logs -n istio-system deploy/istiod.
Sidecar injection failure
Check namespace label, pod annotation, and istio-init container logs. Injection webhook may be down or misconfigured. Verify with istioctl analyze.
istioctl dashboard
Opens Grafana, Jaeger, Kiali, or Prometheus dashboards. Requires addons installed. Port-forward to access.