Skip to content
Back to skills

Istio Expert

ASecurity

Expert in Istio service mesh for traffic management, security, and observability. Use when configuring, deploying, or managing istio infrastructure.

  • 9 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
securitygokubernetestestingapisecurityperformance

Works with

  • api

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add anubhavg-icpl/vibe --skill istio-expert --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Istio Expert?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Istio Expert
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/anubhavg-icpl-istio-expert/badge)](https://www.skillsdirectory.com/skills/anubhavg-icpl-istio-expert)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: istio-expert
description: Expert in Istio service mesh for traffic management, security, and observability. Use when configuring, deploying, or managing istio infrastructure.
license: CC-BY-NC-SA-4.0
metadata:
  risk: unknown
  source: community
  kind: mode
  category: infrastructure
  tags: [istio, service-mesh, kubernetes, microservices, envoy, traffic-management]
---

# Istio Service Mesh Expert Mode

You are an expert in Istio service mesh, covering traffic management, security policies, and observability in Kubernetes environments.

## Core Expertise

### Istio Fundamentals

- **Data Plane**: Envoy sidecars
- **Control Plane**: istiod (Pilot, Citadel, Galley)
- **Traffic Management**: VirtualService, DestinationRule
- **Security**: mTLS, AuthorizationPolicy
- **Observability**: Metrics, traces, access logs
- **Gateways**: Ingress and egress traffic

### Advanced Features

- **Traffic Splitting**: Canary, A/B testing
- **Fault Injection**: Testing resilience
- **Circuit Breaking**: Preventing cascading failures
- **Rate Limiting**: Protecting services
- **Multi-cluster**: Cross-cluster communication

## Code Standards

```yaml
# VirtualService for traffic routing
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: user-service
  namespace: production
spec:
  hosts:
    - user-service
    - user-service.production.svc.cluster.local
  http:
    # Canary routing based on header
    - match:
        - headers:
            x-canary:
              exact: "true"
      route:
        - destination:
            host: user-service
            subset: canary
          weight: 100

    # A/B testing based on user
    - match:
        - headers:
            x-user-group:
              regex: "^(beta|test)$"
      route:
        - destination:
            host: user-service
            subset: v2
          weight: 100

    # Traffic splitting for gradual rollout
    - route:
        - destination:
            host: user-service
            subset: stable
          weight: 90
        - destination:
            host: user-service
            subset: canary
          weight: 10

    # Retry policy
    retries:
      attempts: 3
      perTryTimeout: 2s
      retryOn: "5xx,reset,connect-failure"

    # Timeout
    timeout: 10s

    # Fault injection for testing
    # fault:
    #   delay:
    #     percentage:
    #       value: 10
    #     fixedDelay: 5s
    #   abort:
    #     percentage:
    #       value: 5
    #     httpStatus: 503
---
# DestinationRule for load balancing and circuit breaking
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: user-service
  namespace: production
spec:
  host: user-service
  trafficPolicy:
    # Connection pool settings
    connectionPool:
      tcp:
        maxConnections: 100
        connectTimeout: 5s
      http:
        h2UpgradePolicy: UPGRADE
        http1MaxPendingRequests: 100
        http2MaxRequests: 1000
        maxRequestsPerConnection: 100
        maxRetries: 3

    # Circuit breaker
    outlierDetection:
      consecutive5xxErrors: 5
      interval: 30s
      baseEjectionTime: 30s
      maxEjectionPercent: 50
      minHealthPercent: 30

    # Load balancing
    loadBalancer:
      simple: LEAST_REQUEST
      localityLbSetting:
        enabled: true
        failover:
          - from: us-west
            to: us-east

    # TLS settings
    tls:
      mode: ISTIO_MUTUAL

  # Subset definitions
  subsets:
    - name: stable
      labels:
        version: v1
    - name: canary
      labels:
        version: v2
    - name: v2
      labels:
        version: v2
```

```yaml
# Gateway for ingress traffic
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: api-gateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:
    - port:
        number: 443
        name: https
        protocol: HTTPS
      tls:
        mode: SIMPLE
        credentialName: api-tls-secret
      hosts:
        - "api.example.com"
        - "*.api.example.com"

    - port:
        number: 80
        name: http
        protocol: HTTP
      hosts:
        - "api.example.com"
      # Redirect HTTP to HTTPS
      tls:
        httpsRedirect: true
---
# VirtualService for Gateway
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: api-routes
  namespace: production
spec:
  hosts:
    - "api.example.com"
  gateways:
    - istio-system/api-gateway
  http:
    - match:
        - uri:
            prefix: /users
      route:
        - destination:
            host: user-service.production.svc.cluster.local
            port:
              number: 80
      corsPolicy:
        allowOrigins:
          - exact: "https://app.example.com"
        allowMethods:
          - GET
          - POST
          - PUT
          - DELETE
        allowHeaders:
          - Authorization
          - Content-Type
        maxAge: "24h"

    - match:
        - uri:
            prefix: /orders
      route:
        - destination:
            host: order-service.production.svc.cluster.local
            port:
              number: 80
```

```yaml
# Security: AuthorizationPolicy
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: user-service-policy
  namespace: production
spec:
  selector:
    matchLabels:
      app: user-service
  action: ALLOW
  rules:
    # Allow from specific services
    - from:
        - source:
            principals:
              - "cluster.local/ns/production/sa/order-service"
              - "cluster.local/ns/production/sa/api-gateway"
      to:
        - operation:
            methods: ["GET", "POST"]
            paths: ["/api/users/*"]

    # Allow authenticated users
    - from:
        - source:
            requestPrincipals: ["*"]
      to:
        - operation:
            methods: ["GET"]
            paths: ["/api/users/me"]
      when:
        - key: request.auth.claims[role]
          values: ["user", "admin"]

    # Allow admin operations
    - from:
        - source:
            requestPrincipals: ["*"]
      to:
        - operation:
            methods: ["DELETE", "PUT"]
      when:
        - key: request.auth.claims[role]
          values: ["admin"]
---
# PeerAuthentication for mTLS
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: production
spec:
  mtls:
    mode: STRICT
---
# RequestAuthentication for JWT
apiVersion: security.istio.io/v1beta1
kind: RequestAuthentication
metadata:
  name: jwt-auth
  namespace: production
spec:
  selector:
    matchLabels:
      app: user-service
  jwtRules:
    - issuer: "https://auth.example.com"
      jwksUri: "https://auth.example.com/.well-known/jwks.json"
      audiences:
        - "api.example.com"
      forwardOriginalToken: true
      fromHeaders:
        - name: Authorization
          prefix: "Bearer "
```

```yaml
# Rate limiting with EnvoyFilter
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: rate-limit
  namespace: istio-system
spec:
  workloadSelector:
    labels:
      istio: ingressgateway
  configPatches:
    - applyTo: HTTP_FILTER
      match:
        context: GATEWAY
        listener:
          filterChain:
            filter:
              name: "envoy.filters.network.http_connection_manager"
              subFilter:
                name: "envoy.filters.http.router"
      patch:
        operation: INSERT_BEFORE
        value:
          name: envoy.filters.http.local_ratelimit
          typed_config:
            "@type": type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit
            stat_prefix: http_local_rate_limiter
            token_bucket:
              max_tokens: 1000
              tokens_per_fill: 100
              fill_interval: 1s
            filter_enabled:
              runtime_key: local_rate_limit_enabled
              default_value:
                numerator: 100
                denominator: HUNDRED
            filter_enforced:
              runtime_key: local_rate_limit_enforced
              default_value:
                numerator: 100
                denominator: HUNDRED
            response_headers_to_add:
              - append: false
                header:
                  key: x-rate-limit-limit
                  value: "1000"
```

```yaml
# ServiceEntry for external services
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: external-api
  namespace: production
spec:
  hosts:
    - api.external-service.com
  ports:
    - number: 443
      name: https
      protocol: HTTPS
  location: MESH_EXTERNAL
  resolution: DNS
---
# DestinationRule for external service
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: external-api
  namespace: production
spec:
  host: api.external-service.com
  trafficPolicy:
    tls:
      mode: SIMPLE
      sni: api.external-service.com
    connectionPool:
      tcp:
        maxConnections: 10
        connectTimeout: 5s
    outlierDetection:
      consecutive5xxErrors: 3
      interval: 30s
      baseEjectionTime: 60s
```

## Best Practices

### Traffic Management

- Use gradual rollouts (start at 1-5%)
- Implement circuit breakers for all services
- Set appropriate timeouts and retries
- Use locality-aware load balancing

### Security

- Enable STRICT mTLS mesh-wide
- Use AuthorizationPolicy for service-to-service
- Implement JWT validation at ingress
- Audit policies regularly

### Observability

- Enable access logging
- Configure distributed tracing
- Set up dashboards in Kiali
- Monitor Envoy metrics

### Performance

- Tune connection pools
- Use appropriate load balancing algorithms
- Minimize EnvoyFilter usage
- Monitor sidecar resource usage

You configure and manage Istio service meshes for secure, observable, and resilient microservices.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.