MCP HubMCP Hub
스킬 목록으로 돌아가기

setup-service-mesh

pjt222
업데이트됨 2 days ago
9 조회
17
2
17
GitHub에서 보기
디자인aidesign

정보

이 Claude 스킬은 Istio 또는 Linkerd를 배포하고 구성하여 Kubernetes 클러스터에 mTLS 보안, 트래픽 라우팅, 가시성과 같은 서비스 메시 기능을 추가합니다. 마이크로서비스가 애플리케이션 코드 수정 없이 암호화된 통신, 카나리 배포 또는 통합 트래픽 정책을 필요로 할 때 사용하세요. 이 스킬은 설치, 구성 및 모니터링 도구와의 통합을 처리합니다.

빠른 설치

Claude Code

추천
기본
npx skills add pjt222/agent-almanac -a claude-code
플러그인 명령대체
/plugin add https://github.com/pjt222/agent-almanac
Git 클론대체
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/setup-service-mesh

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

設服之網

展而配服之網(Istio 或 Linkerd)以為服間之安通與高之流管。

用時

  • 微服之構需服間加密之通乃用
  • 需細之流控(canary、A/B、流分)乃用
  • 需跨諸服之可察而不改應乃用
  • 於基設級強安策(mTLS、授權)乃用
  • 跨服一致施斷路、重試、超時乃用
  • 需分布之追與服依繪乃用

  • 必要:附管權之 Kubernetes 集
  • 必要:服網之擇(Istio 或 Linkerd)
  • 必要:欲啟服網之命名空
  • 可選:監之棧(Prometheus、Grafana、Jaeger)
  • 可選:自定流管之求
  • 可選:mTLS 之證書權威之配

詳備之配與模板,參 Extended Examples

第一步:裝服網之控面

擇而裝服網之控面。

Istio:

curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.20.2 sh -
istioctl install --set profile=production -y
kubectl get pods -n istio-system

Linkerd:

curl -sL https://run.linkerd.io/install | sh
linkerd check --pre
linkerd install --ha | kubectl apply -f -
linkerd check

立服網之配附資源限與追:

# service-mesh-config.yaml (abbreviated)
spec:
  profile: production
  meshConfig:
    enableTracing: true
  components:
    pilot:
      k8s:
        resources: { requests: { cpu: 500m, memory: 2Gi } }
# See EXAMPLES.md Step 1 for complete configuration

得:控面之 pod 行於 istio-system(Istio)或 linkerd(Linkerd)命名空。istioctl versionlinkerd version 示客與服版合。

敗則:

  • 察集有足之資源(生產至少 4 CPU 核、8GB RAM)
  • 驗 Kubernetes 版兼(察網之文檔)
  • 察日:kubectl logs -n istio-system -l app=istiodkubectl logs -n linkerd -l linkerd.io/control-plane-component=controller
  • 察衝之 CRD:kubectl get crd | grep istiokubectl get crd | grep linkerd

第二步:啟自動之邊車注入

配命名空為自動之邊車代理之注。

Istio:

# Label namespace for automatic injection
kubectl label namespace default istio-injection=enabled
kubectl get namespace -L istio-injection

Linkerd:

# Annotate namespace for injection
kubectl annotate namespace default linkerd.io/inject=enabled

以樣展試邊車注:

# test-deployment.yaml (abbreviated)
apiVersion: apps/v1
kind: Deployment
spec:
  replicas: 2
  template:
    spec:
      containers:
      - name: app
        image: nginx:alpine
# See EXAMPLES.md Step 2 for complete test deployment

施而驗:

kubectl apply -f test-deployment.yaml
kubectl get pods -n default
# Expect 2/2 containers (app + proxy)

得:新 pod 示 2/2 容(應 + 邊車)。describe 之出示 istio-proxy 或 linkerd-proxy 容。日示代理啟成。

敗則:

  • 察命名空之標/注:kubectl get ns default -o yaml
  • 驗變 webhook 活:kubectl get mutatingwebhookconfiguration
  • 察注日:kubectl logs -n istio-system -l app=sidecar-injector(Istio)
  • 人手注以試:kubectl get deploy test-app -o yaml | istioctl kube-inject -f - | kubectl apply -f -

第三步:配 mTLS 之策

啟雙向 TLS 為服間之安通。

Istio:

# mtls-policy.yaml (abbreviated)
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: istio-system
spec:
  mtls:
    mode: STRICT
# See EXAMPLES.md Step 3 for per-namespace and permissive mode examples

Linkerd:

# Linkerd enforces mTLS by default for meshed pods
linkerd viz tap deploy/test-app -n default
# Check for 🔒 (lock) symbol

施而驗:

kubectl apply -f mtls-policy.yaml
# Istio: verify mTLS status
istioctl authn tls-check $(kubectl get pod -n default -l app=test-app -o jsonpath='{.items[0].metadata.name}') -n default

得:諸網之服間連示 mTLS 啟。Istio tls-check 示 STATUS 為「OK」。Linkerd tap 出示 🔒 於諸連。服日無 TLS 之誤。

敗則:

  • 察證書之發:kubectl get certificates -A(cert-manager)
  • 驗 CA 健:kubectl logs -n istio-system -l app=istiod | grep -i cert
  • 先以 PERMISSIVE 模試,後轉至 STRICT
  • 察無邊車之服:kubectl get pods --all-namespaces -o json | jq '.items[] | select(.spec.containers | length == 1) | .metadata.name'

第四步:施流管之則

配智之流路、重試、斷路。

立流管之策:

# traffic-management.yaml (abbreviated)
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
spec:
  http:
  - match:
    - uri: { prefix: /api/v2 }
    route:
    - destination: { host: api-service, subset: v2 }
      weight: 10
    - destination: { host: api-service, subset: v1 }
      weight: 90
    retries: { attempts: 3, perTryTimeout: 2s }
# See EXAMPLES.md Step 4 for complete routing, circuit breaker, and gateway configs

Linkerd 之流分:

apiVersion: split.smi-spec.io/v1alpha2
kind: TrafficSplit
spec:
  service: api-service
  backends:
  - service: api-service-v1
    weight: 900
  - service: api-service-v2
    weight: 100

施而試:

kubectl apply -f traffic-management.yaml
# Test traffic distribution
for i in {1..100}; do curl -s http://api.example.com/api/v2 | grep version; done | sort | uniq -c
# Monitor: istioctl dashboard kiali or linkerd viz dashboard

得:流依所定之權分。斷路於連誤後跳。重試於暫敗發。Kiali/Linkerd 儀表示流之繪。

敗則:

  • 驗目主解:kubectl get svc -n production
  • 察子集標合 pod 標:kubectl get pods -n production --show-labels
  • 察 pilot 日:kubectl logs -n istio-system -l app=istiod
  • 先試無斷路,後增之
  • istioctl analyze 察配:istioctl analyze -n production

第五步:集可察棧

連服網之遙測於監與追之系。

裝可察之附加:

# Istio: Prometheus, Grafana, Kiali, Jaeger
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/addons/prometheus.yaml
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/addons/grafana.yaml
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/addons/kiali.yaml
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.20/samples/addons/jaeger.yaml

# Linkerd
linkerd viz install | kubectl apply -f -
linkerd jaeger install | kubectl apply -f -

配自定指與儀表:

# service-monitor.yaml (abbreviated)
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: istio-mesh-metrics
spec:
  selector: { matchLabels: { app: istiod } }
  endpoints:
  - port: http-monitoring
    interval: 30s
# See EXAMPLES.md Step 5 for Grafana dashboards and telemetry config

訪儀表:

istioctl dashboard grafana  # or: linkerd viz dashboard
istioctl dashboard kiali
istioctl dashboard jaeger

得:儀表示服之拓、請率、延百分、誤率。Jaeger 中分布之追可得。Prometheus 抓網指成。自定指現於查。

敗則:

  • 驗 Prometheus 抓:kubectl get servicemonitor -A
  • 察附加 pod 行:kubectl get pods -n istio-system
  • 察遙測之配:istioctl proxy-config log <pod-name> -n <namespace>
  • 驗網配啟遙測:kubectl get configmap istio -n istio-system -o yaml | grep -A 5 enableTracing
  • 察端口衝若 port-forward 敗

第六步:驗而監網之健

行全健察而設續監。

# Istio validation
istioctl analyze --all-namespaces
istioctl verify-install
istioctl proxy-status

# Linkerd validation
linkerd check
linkerd viz check
linkerd diagnostics policy

# Check proxy sync status
kubectl get pods -n production -o json | \
  jq '.items[] | {name: .metadata.name, proxy: .status.containerStatuses[] | select(.name=="istio-proxy").ready}'

# Monitor control plane health
kubectl get pods -n istio-system -w
kubectl top pods -n istio-system

立健察本與警:

#!/bin/bash
# mesh-health-check.sh (abbreviated)
echo "=== Service Mesh Health Check ==="
kubectl get pods -n istio-system
istioctl analyze --all-namespaces
# See EXAMPLES.md Step 6 for complete health check script and alert configs

得:諸析察過而無警。proxy-status 示諸代理同步。mTLS 察確加密。指示流通。控面 pod 穩於低資源用。

敗則:

  • istioctl analyze 之具體患
  • 察各 pod 之代理日:kubectl logs <pod> -c istio-proxy -n <namespace>
  • 驗網策不阻網之流
  • 察控面之誤日:kubectl logs -n istio-system deploy/istiod --tail=100
  • 重啟患代理:kubectl rollout restart deploy/<deployment> -n <namespace>

  • 控面 pod 行而健(istiod/linkerd-controller)
  • 邊車注入諸應 pod(2/2 容)
  • mTLS 啟而行(以 tls-check/tap 驗)
  • 流管之則正路請(以 curl 試驗)
  • 斷路於重敗跳(以注故試)
  • 可察儀表示指(Grafana/Kiali/Linkerd Viz)
  • Jaeger 捕樣請之分布之追
  • istioctl analyze/linkerd check 無配警
  • 代理同步示諸代理同步
  • 服間之通加密(於日/儀表驗)

  • 資源耗:服網每 pod 加 100-200MB 為邊車。確集有足。於注配設宜資源限
  • 配衝:同主多 VirtualService 致未定之為。每主用單 VirtualService 附多 match 條件
  • 證書過期:mTLS 證書自輪而 CA 根需管。以 kubectl get certificate -A 監過期而設警
  • 邊車未注:命名空標前所立之 pod 無邊車。必再立:kubectl rollout restart deploy/<name> -n <namespace>
  • DNS 解之患:服網截 DNS。跨命名空之呼用全限名(service.namespace.svc.cluster.local)
  • 端口名之求:Istio 求端口名循 protocol-name 之模(如 http-web、tcp-db)。無名之端默為 TCP 透
  • 漸展所求:勿於生產立啟 STRICT mTLS。遷時用 PERMISSIVE 模,驗諸服皆網,後轉 STRICT
  • 可察之耗:百分百追採致性能患。生產用 1-10%:網配 sampling: 1.0
  • Gateway vs VirtualService 之惑:Gateway 配入(負載均衡),VirtualService 配路。外流二者皆需
  • 版兼:確網版兼於 Kubernetes 版。Istio 支 n-1 小版,Linkerd 常支末三 Kubernetes 版

  • configure-ingress-networking — Gateway 配補網入
  • deploy-to-kubernetes — 與服網行之應展模
  • setup-prometheus-monitoring — 為網指之 Prometheus 集
  • manage-kubernetes-secrets — mTLS 之證書管
  • enforce-policy-as-code — 與網授權並行之 OPA 策

GitHub 저장소

pjt222/agent-almanac
경로: i18n/wenyan/skills/setup-service-mesh
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

executing-plans

디자인

executing-plans 스킬은 검토 체크포인트가 포함된 통제된 배치로 실행할 완전한 구현 계획이 있을 때 사용합니다. 이 스킬은 계획을 불러와 비판적으로 검토한 후, 소규모 배치(기본값 3개 작업)로 작업을 실행하면서 각 배치 사이에 진행 상황을 아키텍트 검토를 위해 보고합니다. 이를 통해 내재된 품질 관리 체크포인트를 갖춘 체계적인 구현이 보장됩니다.

스킬 보기

requesting-code-review

디자인

이 스킬은 코드 변경 사항을 요구 사항에 따라 분석하기 위해 코드 리뷰어 하위 에이전트를 호출합니다. 작업 완료 후, 주요 기능 구현 후, 또는 메인 브랜치에 병합하기 전에 사용해야 합니다. 이 리뷰는 현재 구현체와 원래 계획을 비교하여 문제를 조기에 발견하는 데 도움이 됩니다.

스킬 보기

connect-mcp-server

디자인

이 스킬은 개발자들이 HTTP, stdio 또는 SSE 전송 방식을 통해 MCP 서버를 Claude Code에 연결하는 포괄적인 가이드를 제공합니다. GitHub, Notion 및 사용자 정의 API와 같은 외부 서비스를 통합하기 위한 설치, 구성, 인증 및 보안을 다룹니다. MCP 통합 설정, 외부 도구 구성 또는 Claude의 모델 컨텍스트 프로토콜 작업 시 활용하세요.

스킬 보기

web-cli-teleport

디자인

이 스킬은 작업 분석을 기반으로 개발자가 Claude Code 웹 인터페이스와 CLI 인터페이스 중 선택할 수 있도록 돕고, 두 환경 간 원활한 세션 텔레포트를 가능하게 합니다. 웹, CLI 또는 모바일 환경 전환 시 세션 상태와 컨텍스트를 관리하여 워크플로를 최적화합니다. 다양한 단계에서 서로 다른 도구가 필요한 복잡한 프로젝트에 사용하세요.

스킬 보기