К основному содержанию
скилл CX Codex

ai-inference-service-mesh — скилл для Claude Code: mesh для AI-трафика

Скилл для управления трафиком инференса через Istio и Linkerd: mTLS, канареечные релизы, политики доступа и защита GPU-сервисов.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add BagelHole/DevOps-Security-Agent-Skills --skill ai-inference-service-mesh -a claude-code
Открыть на GitHub

Что делает ai-inference-service-mesh

Скилл даёт агенту готовые шаблоны Istio и Linkerd для восточно-западного трафика между микросервисами инференса. Внутри — манифесты PeerAuthentication, AuthorizationPolicy, ServiceEntry, VirtualService и DestinationRule. Агент применяет их к вашему кластеру: включает строгий mTLS между шлюзом, ретривером, реранкером и моделью, настраивает канареечный сплит 90/10 и circuit breaking для дорогих GPU-бэкендов.

Перед началом нужен установленный Istio с профилем default и namespace с включённой инъекцией sidecar. Скилл показывает команды istioctl install, создание namespace ai-inference и проверку через istioctl verify-install. Без работающего Istio манифесты просто не применятся — это первое, что стоит проверить.

Для внешних API вроде api.openai.com и models.anthropic.com есть ServiceEntry с TLS и ограничением egress по хостам. Отдельно описан retry budget для стриминговых запросов: долгий таймаут и отказ от повторов на /v1/stream. Скилл подойдёт, если вы уже держите инференс в Kubernetes и хотите управлять трафиком без правок в коде приложений.

Какие задачи решает

  • включить строгий mTLS между сервисами инференса
  • раскатить новую версию модели канареечным сплитом 90/10
  • ограничить egress только одобренными API-эндпоинтами
  • защитить GPU-бэкенды от каскадных отказов через circuit breaking
  • раздать права на model-server по service account

Примеры запросов агенту

  • Настрой строгий mTLS для namespace ai-inference и разреши plaintext только на порту метрик 9090
  • Сделай VirtualService для model-server с канареечным сплитом 90/10 между v1-stable и v2-experimental
  • Добавь ServiceEntry и DestinationRule для api.openai.com с TLS и лимитом 50 соединений

Как установить ai-inference-service-mesh

1Через Skills CLI (Vercel)

npx skills add BagelHole/DevOps-Security-Agent-Skills --skill ai-inference-service-mesh -a claude-code

2Вручную: положить файлы

~/.claude/skills/ai-inference-service-mesh/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/ai-inference-service-mesh/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора127

azure-monitor-audit Настраивает аудит подписки Azure через Monitor, Log Analytics и журнал действий. Помогает собирать логи для SOC 2, HIPAA, PCI DSS и ISO 27001. CX Codex +1 313установок saas-security-posture Скилл для аудита и ужесточения SaaS-инструментов компании: SSO, OAuth-гранты, теневой IT, админские аккаунты в Slack, GitHub, Google Workspace и AWS. CX Codex +1 314установок datadog Настраивает агент Datadog, сбор логов, APM-трейсинг и метрики для сервисов и баз данных. Пригодится при развёртывании единого мониторинга инфраструктуры. CX Codex +1 312установок firebase-app-platform Скилл помогает агенту собирать бэкенд на Firebase: Auth, Firestore, Cloud Functions и Hosting. Пригодится, когда нужен бэкенд без своего сервера. CX Codex +1 313установок vector-database-ops Скилл для развёртывания и настройки векторных баз: Qdrant, Weaviate, pgvector, Pinecone. Пригодится, когда RAG или семантический поиск уходят в прод. CX Codex +1 310установок mac-mini-llm-lab Готовит Mac mini на Apple Silicon к роли автономного сервера нейросетей: настраивает Ollama, MLX, автозапуск через launchd и удалённый доступ. CX Codex +1 309установок cloudformation Скилл для развёртывания AWS-ресурсов через CloudFormation: стеки, change sets, вложенные стеки и drift detection. CX Codex +1 310установок multi-tenant-llm-hosting Скилл помогает спроектировать общий хостинг LLM для нескольких команд или клиентов: изоляция тенантов, квоты, биллинг и защита от шумных соседей. CX Codex +1 309установок

Похожие

service-mesh-observability Seth Hobson Скилл помогает настроить наблюдаемость service mesh: метрики, трассировки и визуализацию связей между сервисами. Пригодится для разбора задержек и настройки SLO. CX Codex 10 300установок linkerd-patterns Seth Hobson Помогает настроить Linkerd в Kubernetes: от mTLS и политик трафика до canary-развёртываний и связи между кластерами. Пригодится, когда вы внедряете service mesh или разбираетесь с его конфигурацией. CX Codex 10 200установок gke-inference официальный google Готовит Kubernetes-манифесты для AI/ML-инференса на GKE и помогает выбрать модельный профиль и ускоритель для нового сервинга. CX Codex 6 791установок microservices-patterns manutej Скилл по микросервисам: service mesh, circuit breakers, маршрутизация трафика и Istio. Пригодится, когда сервисы падают каскадом или нужен канареечный релиз. CX Codex +1 446установок tao-run-inference-service NVIDIA Corporation Скилл развёртывает микросервис инференса моделей NVIDIA TAO в контейнере и останавливает его. Пригодится для работы с контрольными точками и отправки запросов к эндпоинту. CX Codex +1 1 600установок machine-learning-engineer VoltAgent Community Субагент помогает разворачивать, оптимизировать и обслуживать ML-модели в production. Подходит для задач инференса, масштабирования и мониторинга. 431установок

Рядом в теме «DevOps и инфраструктура»

Всё по теме «DevOps и инфраструктура» →

Вопросы о ai-inference-service-mesh

Как установить ai-inference-service-mesh в Claude?

Выполните npx skills add BagelHole/DevOps-Security-Agent-Skills --skill ai-inference-service-mesh -a claude-code. Скилл появится в ~/.claude/skills/ai-inference-service-mesh/SKILL.md.

Что делает ai-inference-service-mesh?

Даёт агенту шаблоны Istio и Linkerd для управления трафиком инференса: mTLS, авторизация по service account, канареечные релизы, circuit breaking и ограничение egress.

Что нужно для работы скилла?

Установленный Istio с профилем default и namespace с включённой инъекцией sidecar. Скилл приводит команды istioctl install и проверку через istioctl verify-install.

Исходный текст

SKILL.md · MIT
---
name: ai-inference-service-mesh
description: Use service mesh patterns for AI inference traffic management, mTLS, canary releases, policy enforcement, and cross-cluster resilience.
license: MIT
metadata:
  author: devops-skills
  version: "1.0"
---

# AI Inference Service Mesh

Apply Istio/Linkerd mesh controls to secure and optimize east-west AI traffic across inference microservices.

## Why Mesh for AI

- Enforce mTLS between gateway, retriever, reranker, and model services
- Apply fine-grained traffic policies without app code changes
- Run progressive delivery for model-serving backends
- Observe latency hops for retrieval + generation chains
- Route inference requests by model version, tenant, or priority tier
- Protect expensive GPU-backed services from cascading failures

## Prerequisites

```bash
# Install Istio with production profile
istioctl install --set profile=default \
  --set meshConfig.accessLogFile=/dev/stdout \
  --set meshConfig.defaultConfig.holdApplicationUntilProxyStarts=true

# Label inference namespace for sidecar injection
kubectl create namespace ai-inference
kubectl label namespace ai-inference istio-injection=enabled

# Verify installation
istioctl verify-install
istioctl analyze -n ai-inference
```

## Core Patterns

### mTLS Strict Mode Cluster-Wide

```yaml
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: istio-system
spec:
  mtls:
    mode: STRICT
---
# Namespace-level override if needed for gradual rollout
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: ai-inference-mtls
  namespace: ai-inference
spec:
  mtls:
    mode: STRICT
  portLevelMtls:
    # gRPC inference port
    8081:
      mode: STRICT
    # Prometheus metrics port - allow plaintext scraping
    9090:
      mode: PERMISSIVE
```

### AuthorizationPolicy Per Service Account

```yaml
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: model-server-access
  namespace: ai-inference
spec:
  selector:
    matchLabels:
      app: model-server
  action: ALLOW
  rules:
  - from:
    - source:
        principals:
        - "cluster.local/ns/ai-inference/sa/api-gateway"
        - "cluster.local/ns/ai-inference/sa/orchestrator"
    to:
    - operation:
        methods: ["POST"]
        paths: ["/v1/predict", "/v1/embeddings", "/v2/models/*/infer"]
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: deny-external-to-retriever
  namespace: ai-inference
spec:
  selector:
    matchLabels:
      app: vector-retriever
  action: DENY
  rules:
  - from:
    - source:
        notNamespaces: ["ai-inference"]
```

### Egress Policy for Approved Model Endpoints

```yaml
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: openai-api
  namespace: ai-inference
spec:
  hosts:
  - api.openai.com
  ports:
  - number: 443
    name: https
    protocol: TLS
  resolution: DNS
  location: MESH_EXTERNAL
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: openai-api-tls
  namespace: ai-inference
spec:
  host: api.openai.com
  trafficPolicy:
    tls:
      mode: SIMPLE
    connectionPool:
      http:
        h2UpgradePolicy: UPGRADE
      tcp:
        maxConnections: 50
---
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: restrict-egress
  namespace: ai-inference
spec:
  action: ALLOW
  rules:
  - to:
    - operation:
        hosts:
        - "api.openai.com"
        - "models.anthropic.com"
        - "*.blob.core.windows.net"
```

## Traffic Management

### VirtualService for A/B Model Testing

```yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: model-server
  namespace: ai-inference
spec:
  hosts:
  - model-server
  http:
  # Route by header for explicit model version selection
  - match:
    - headers:
        x-model-version:
          exact: "v2-experimental"
    route:
    - destination:
        host: model-server
        subset: v2-experimental
    timeout: 120s
  # Route by header for A/B test cohort
  - match:
    - headers:
        x-ab-cohort:
          exact: "treatment"
    route:
    - destination:
        host: model-server
        subset: v2-experimental
      weight: 100
    timeout: 120s
  # Default traffic split: 90/10 canary
  - route:
    - destination:
        host: model-server
        subset: v1-stable
      weight: 90
    - destination:
        host: model-server
        subset: v2-experimental
      weight: 10
    timeout: 60s
    retries:
      attempts: 2
      perTryTimeout: 30s
      retryOn: unavailable,resource-exhausted
```

### DestinationRule with Subsets

```yaml
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: model-server
  namespace: ai-inference
spec:
  host: model-server
  trafficPolicy:
    connectionPool:
      http:
        h2UpgradePolicy: UPGRADE
        maxRequestsPerConnection: 100
      tcp:
        maxConnections: 200
        connectTimeout: 5s
    loadBalancer:
      simple: LEAST_REQUEST
  subsets:
  - name: v1-stable
    labels:
      version: v1
    trafficPolicy:
      connectionPool:
        http:
          maxRequestsPerConnection: 50
  - name: v2-experimental
    labels:
      version: v2
    trafficPolicy:
      connectionPool:
        http:
          maxRequestsPerConnection: 20
```

### Circuit Breaking for Inference Backends

```yaml
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: model-server-circuit-breaker
  namespace: ai-inference
spec:
  host: model-server
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 100
        connectTimeout: 10s
      http:
        http1MaxPendingRequests: 50
        http2MaxRequests: 200
        maxRequestsPerConnection: 10
        maxRetries: 3
    outlierDetection:
      consecutive5xxErrors: 3
      interval: 15s
      baseEjectionTime: 30s
      maxEjectionPercent: 50
      minHealthPercent: 30
      splitExternalLocalOriginErrors: true
---
# Separate circuit breaker for the vector retriever
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: vector-retriever-circuit-breaker
  namespace: ai-inference
spec:
  host: vector-retriever
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 300
      http:
        http1MaxPendingRequests: 200
        http2MaxRequests: 500
    outlierDetection:
      consecutive5xxErrors: 5
      interval: 10s
      baseEjectionTime: 15s
      maxEjectionPercent: 30
```

### Retry Budget for Streaming Requests

```yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: streaming-inference
  namespace: ai-inference
spec:
  hosts:
  - model-server
  http:
  # Streaming endpoint: no retries, long timeout
  - match:
    - uri:
        prefix: /v1/stream
    route:
    - destination:
        host: model-server
        subset: v1-stable
    timeout: 300s
    retries:
      attempts: 0
  # Embeddings endpoint: safe to retry, short timeout
  - match:
    - uri:
        prefix: /v1/embeddings
    route:
    - destination:
        host: model-server
        subset: v1-stable
    timeout: 15s
    retries:
      attempts: 3
      perTryTimeout: 5s
      retryOn: 5xx,reset,connect-failure,retriable-status-codes
```

## Resilience

### Locality-Aware Routing

```yaml
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: model-server-locality
  namespace: ai-inference
spec:
  host: model-server
  trafficPolicy:
    loadBalancer:
      localityLbSetting:
        enabled: true
        distribute:
        - from: "us-east-1/us-east-1a/*"
          to:
            "us-east-1/us-east-1a/*": 80
            "us-east-1/us-east-1b/*": 20
        failover:
        - from: us-east-1
          to: us-west-2
    outlierDetection:
      consecutive5xxErrors: 3
      interval: 10s
      baseEjectionTime: 30s
```

## Observability

```yaml
# Telemetry resource for custom metrics on inference services
apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
  name: inference-telemetry
  namespace: ai-inference
spec:
  metrics:
  - providers:
    - name: prometheus
    overrides:
    - match:
        metric: REQUEST_DURATION
        mode: CLIENT_AND_SERVER
      tagOverrides:
        model_name:
          operation: UPSERT
          value: "request.headers['x-model-name']"
        tenant_id:
          operation: UPSERT
          value: "request.headers['x-tenant-id']"
  tracing:
  - providers:
    - name: zipkin
    randomSamplingPercentage: 10.0
```

### Kiali Dashboard Check

```bash
# Port-forward Kiali
kubectl port-forward svc/kiali -n istio-system 20001:20001 &

# Verify mesh health via API
curl -s http://localhost:20001/kiali/api/namespaces/ai-inference/health | jq .

# Check proxy sync status
istioctl proxy-status -n ai-inference

# Debug a specific pod sidecar config
istioctl proxy-config routes deploy/model-server -n ai-inference -o json
istioctl proxy-config cluster deploy/model-server -n ai-inference
```

## Pitfalls to Avoid

- Aggressive timeouts that break streaming responses -- set 300s+ for generation endpoints
- Blanket retries that amplify expensive generation calls -- disable retries on non-idempotent routes
- Missing identity boundaries between tenant-facing and internal services
- Forgetting to exempt health check and metrics ports from strict mTLS
- Setting outlier ejection too aggressively on small pools (maxEjectionPercent too high)
- Not using `holdApplicationUntilProxyStarts` causing race conditions on startup

## Related Skills

- [service-mesh](../service-mesh/) - Foundational mesh concepts
- [llm-gateway](../llm-gateway/) - North-south API gateway controls
- [opentelemetry](../../../devops/observability/opentelemetry/) - End-to-end tracing and metrics

© devops-skills · MIT · BagelHole/DevOps-Security-Agent-Skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой