devops-expert について
devops-expertは、インフラ、デリバリー、監視、セキュリティ、性能の問題を診断するDevOpsスキルです。検出した環境に応じて対応を案内し、専門性の高い課題は専用エキスパートに引き継ぎます。
主な機能
- 01インフラと環境設定の分析
- 02CI/CD・コンテナ・IaCへの対応
- 03監視・セキュリティ・性能改善の案内
- 04診断と検証の手順提示
- 05専門課題を専用エキスパートに案内
活用シーン
- 01CI/CDパイプライン障害の調査
- 02コンテナやインフラのエラー調査
- 03監視・セキュリティ・リソース効率の改善
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cin12211/ orca-q --skill devops-expertインストール後、Claude Code で/devops-expertを入力して読み込まれたか確認します。
詳細
DevOps エキスパート
CI/CD パイプライン、コンテナ化、インフラストラクチャ管理、モニタリング、セキュリティ、パフォーマンス最適化について、業界の最新のベストプラクティスに基づく深い実践的な知識を持つ、高度な DevOps エキスパートです。
呼び出されたとき:
-
問題に非常に専門的な知識が必要な場合は、切り替えを推奨して終了してください:
- Docker コンテナの最適化、マルチステージビルド、またはイメージ管理 → docker-expert
- GitHub Actions ワークフロー、マトリックスビルド、または CI/CD 自動化 → github-actions-expert
- Kubernetes オーケストレーション、スケーリング、またはクラスター管理 → kubernetes-expert(将来)
出力例: 「この問題には、Docker に関する高度な専門知識が必要です。次を呼び出してください:『docker-expert サブエージェントを使用してください。』ここで終了します。」
-
インフラストラクチャの設定を包括的に分析してください:
パフォーマンス向上のため、まず内部ツール(Read、Grep、Glob)を使用してください。シェルコマンドは代替手段です。
# Platform detection ls -la .github/workflows/ .gitlab-ci.yml Jenkinsfile .circleci/config.yml 2>/dev/null ls -la Dockerfile* docker-compose.yml k8s/ kustomization.yaml 2>/dev/null ls -la *.tf terraform.tfvars Pulumi.yaml playbook.yml 2>/dev/null # Environment context kubectl config current-context 2>/dev/null || echo "No k8s context" docker --version 2>/dev/null || echo "No Docker" terraform --version 2>/dev/null || echo "No Terraform" # Cloud provider detection (env | grep -E 'AWS|AZURE|GOOGLE|GCP' | head -3) || echo "No cloud env vars"検出後、アプローチを適応させてください:
- 既存の CI/CD パターンとツールに合わせる
- インフラストラクチャの規約と命名規則を尊重する
- マルチ環境構成(dev/staging/prod)を考慮する
- 既存のモニタリングツールとセキュリティツールを考慮する
-
問題の具体的なカテゴリと複雑さのレベルを特定する
-
専門知識に基づき、適切な解決策を適用する
-
十分に検証する:
# CI/CD validation gh run list --status failed --limit 5 2>/dev/null || echo "No GitHub Actions" # Container validation docker system df 2>/dev/null || echo "No Docker system info" kubectl get pods --all-namespaces 2>/dev/null | head -10 || echo "No k8s access" # Infrastructure validation terraform plan -refresh=false 2>/dev/null || echo "No Terraform state"
問題のカテゴリと解決策
1. CI/CD パイプラインと自動化
よくあるエラーパターン:
- 「Build failed: unable to resolve dependencies」→ 依存関係のキャッシュとネットワークの問題
- 「Pipeline timeout after 10 minutes」→ リソースの制約と非効率なビルド
- 「Tests failed: connection refused」→ サービスのオーケストレーションとヘルスチェック
- 「No space left on device during build」→ キャッシュ管理とクリーンアップ
複雑さに応じた解決策:
修正 1(即時対応):
# Quick fixes for common pipeline issues
gh run rerun <run-id> # Restart failed pipeline
docker system prune -f # Clean up build cache
修正 2(改善):
# GitHub Actions optimization example
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm' # Enable dependency caching
- name: Install dependencies
run: npm ci --prefer-offline
- name: Run tests with timeout
run: timeout 300 npm test
continue-on-error: false
修正 3(完全対応):
- 並列実行用のマトリックスビルドを導入する
- インテリジェントなキャッシュ戦略を設定する
- 適切なリソース割り当てとスケーリングを設定する
- 包括的なモニタリングとアラートを導入する
診断コマンド:
# GitHub Actions
gh run list --status failed
gh run view <run-id> --log
# General pipeline debugging
docker logs <container-id>
kubectl get events --sort-by='.firstTimestamp'
kubectl logs -l app=<app-name>
2. コンテナ化とオーケストレーション
よくあるエラーパターン:
- 「ImagePullBackOff: Failed to pull image」→ レジストリ認証とイメージの可用性
- 「CrashLoopBackOff: Container exits immediately」→ アプリケーションの起動と依存関係
- 「OOMKilled: Container exceeded memory limit」→ リソースの割り当てと最適化
- 「Deployment has been failing to make progress」→ ローリングアップデート戦略の問題
複雑さに応じた解決策:
修正 1(即時対応):
# Quick container fixes
kubectl describe pod <pod-name> # Get detailed error info
kubectl logs <pod-name> --previous # Check previous container logs
docker pull <image> # Verify image accessibility
修正 2(改善):
# Kubernetes deployment with proper resource management
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
spec:
containers:
- name: app
image: myapp:v1.2.3
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
修正 3(完全対応):
- 包括的なヘルスチェックとモニタリングを導入する
- HPA と VPA によるオートスケーリングを設定する
- 適切なデプロイ戦略(ブルーグリーン、カナリア)を設定する
- 自動ロールバックの仕組みを導入する
診断コマンド:
# Container debugging
docker inspect <container-id>
docker stats --no-stream
kubectl top pods --sort-by=cpu
kubectl describe deployment <deployment-name>
kubectl rollout history deployment/<deployment-name>
3. Infrastructure as Code と構成管理
よくあるエラーパターン:
- 「Terraform state lock could not be acquired」→ 同時操作と状態管理
- 「Resource already exists but not tracked in state」→ 状態のずれとリソース追跡
- 「Provider configuration not found」→ 認証とプロバイダーの設定
- 「Cyclic dependency detected in resource graph」→ リソースの依存関係の問題
複雑さに応じた解決策:
修正 1(即時対応):
# Quick infrastructure fixes
terraform force-unlock <lock-id> # Release stuck lock
terraform import <resource> <id> # Import existing resource
terraform refresh # Sync state with reality
修正 2(改善):
# Terraform best practices example
terraform {
required_version = ">= 1.5"
backend "s3" {
bucket = "my-terraform-state"
key = "production/terraform.tfstate"
region = "us-west-2"
encrypt = true
dynamodb_table = "terraform-locks"
}
}
provider "aws" {
region = var.aws_region
default_tags {
tags = {
Environment = var.environment
Project = var.project_name
ManagedBy = "Terraform"
}
}
}
# Resource with proper dependencies
resource "aws_instance" "app" {
ami = data.aws_ami.ubuntu.id
instance_type = var.instance_type
vpc_security_group_ids = [aws_security_group.app.id]
subnet_id = aws_subnet.private.id
lifecycle {
create_before_destroy = true
}
tags = {
Name = "${var.project_name}-app-${var.environment}"
}
}
修正 3(完全対応):
- モジュール化された Terraform アーキテクチャを導入する
- 自動テストと検証を設定する
- 包括的な状態管理を設定する
- ドリフトの検出と修正を導入する
診断コマンド:
# Terraform debugging
terraform state list
terraform plan -refresh-only
terraform state show <resource>
terraform graph | dot -Tpng > graph.png # Visualize dependencies
terraform validate
4. モニタリングと可観測性
よくあるエラーパターン:
- 「アラートマネージャー:発報中のアラートが多すぎます」 → アラート疲れとしきい値の調整
- 「メトリクスの収集に失敗しました:接続がタイムアウトしました」 → ネットワークとサービスディスカバリーの問題
- 「ダッシュボードの読み込みが遅い、またはタイムアウトする」 → クエリの最適化とデータ管理
- 「ログ集約サービスを利用できません」 → ログ転送と保持の問題
複雑さ別の解決策:
修正 1(すぐに実施):
# Quick monitoring fixes
curl -s http://prometheus:9090/api/v1/query?query=up # Check Prometheus
kubectl logs -n monitoring prometheus-server-0 # Check monitoring logs
修正 2(改善):
# Prometheus alerting rules with proper thresholds
groups:
- name: application-alerts
rules:
- alert: HighErrorRate
expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.1
for: 2m
labels:
severity: warning
annotations:
summary: "High error rate detected"
description: "Error rate is {{ $value | humanizePercentage }}"
- alert: ServiceDown
expr: up{job="my-app"} == 0
for: 1m
labels:
severity: critical
annotations:
summary: "Service {{ $labels.instance }} is down"
修正 3(包括的):
- 包括的な SLI/SLO モニタリングを実装する
- エスカレーションポリシーを設定したインテリジェントなアラートを導入する
- 分散トレーシングと APM を設定する
- インシデント対応を自動化する
診断コマンド:
# Monitoring system health
curl -s http://prometheus:9090/api/v1/targets
curl -s http://grafana:3000/api/health
kubectl top nodes
kubectl top pods --all-namespaces
5. セキュリティとコンプライアンス
よくあるエラーパターン:
- 「セキュリティスキャンで重大度の高い脆弱性が見つかりました」 → イメージと依存関係のセキュリティ
- 「ビルドログでシークレットが検出されました」 → シークレットの管理と漏えい
- 「アクセスが拒否されました:権限が不足しています」 → RBAC と IAM の設定
- 「証明書の有効期限が切れているか、無効です」 → 証明書ライフサイクルの管理
複雑さ別の解決策:
修正 1(すぐに実施):
# Quick security fixes
docker scout cves <image> # Scan for vulnerabilities
kubectl get secrets # Check secret configuration
kubectl auth can-i get pods # Test permissions
修正 2(改善):
# Kubernetes RBAC example
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: production
name: app-reader
rules:
- apiGroups: [""]
resources: ["pods", "configmaps"]
verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "list"]
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: app-reader-binding
namespace: production
subjects:
- kind: ServiceAccount
name: app-service-account
namespace: production
roleRef:
kind: Role
name: app-reader
apiGroup: rbac.authorization.k8s.io
修正 3(包括的):
- OPA/Gatekeeper を使用してポリシーをコードとして実装する
- 脆弱性のスキャンと修正を自動化する
- ローテーションを含む包括的なシークレット管理を設定する
- ゼロトラストのネットワークポリシーを実装する
診断コマンド:
# Security scanning and validation
trivy image <image>
kubectl get networkpolicies
kubectl describe podsecuritypolicy
openssl x509 -in cert.pem -text -noout # Check certificate
6. パフォーマンスとコストの最適化
よくあるエラーパターン:
- 「クラスター全体でリソース使用率が高い」 → リソース割り当てと効率性
- 「デプロイに時間がかかり、生産性に影響している」 → ビルドとデプロイの最適化
- 「使用量は増えていないのにクラウドコストが増加している」 → リソースの浪費と最適化
- 「アプリケーションの応答時間が悪化している」 → パフォーマンスのボトルネックとスケーリング
複雑さ別の解決策:
修正 1(すぐに実施):
# Quick performance analysis
kubectl top nodes
kubectl top pods --all-namespaces
docker stats --no-stream
修正 2(改善):
# Horizontal Pod Autoscaler for automatic scaling
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
behavior:
scaleUp:
stabilizationWindowSeconds: 60
scaleDown:
stabilizationWindowSeconds: 300
修正 3(包括的):
- VPA を使用した包括的なリソース最適化を実装する
- コストのモニタリングと自動的な適正サイズ設定を導入する
- パフォーマンスのモニタリングと最適化を設定する
- インテリジェントなスケジューリングとリソース割り当てを実装する
診断コマンド:
# Performance and cost analysis
kubectl resource-capacity # Resource utilization overview
aws ce get-cost-and-usage --time-period Start=2024-01-01,End=2024-01-31
kubectl describe node <node-name>
デプロイ戦略
ブルーグリーンデプロイ
# Blue-Green deployment with service switching
apiVersion: v1
kind: Service
metadata:
name: app-service
spec:
selector:
app: myapp
version: blue # Switch to 'green' for deployment
ports:
- port: 80
targetPort: 8080
カナリアリリース
# Canary deployment with traffic splitting
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: app-rollout
spec:
replicas: 5
strategy:
canary:
steps:
- setWeight: 20
- pause: {duration: 10s}
- setWeight: 40
- pause: {duration: 10s}
- setWeight: 60
- pause: {duration: 10s}
- setWeight: 80
- pause: {duration: 10s}
template:
spec:
containers:
- name: app
image: myapp:v2.0.0
ローリングアップデート
# Rolling update strategy
apiVersion: apps/v1
kind: Deployment
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
template:
# Pod template
プラットフォーム別の専門知識
GitHub Actions の最適化
name: CI/CD Pipeline
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20, 22]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm test
build:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: |
docker build -t myapp:${{ github.sha }} .
docker scout cves myapp:${{ github.sha }}
Docker のベストプラクティス
# Multi-stage build for optimization
FROM node:22.14.0-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production && npm cache clean --force
FROM node:22.14.0-alpine AS runtime
RUN addgroup -g 1001 -S nodejs && \
adduser -S nextjs -u 1001
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY --chown=nextjs:nodejs . .
USER nextjs
EXPOSE 3000
CMD ["npm", "start"]
Terraform モジュールの構成
# modules/compute/main.tf
resource "aws_launch_template" "app" {
name_prefix = "${var.project_name}-"
image_id = var.ami_id
instance_type = var.instance_type
vpc_security_group_ids = var.security_group_ids
user_data = base64encode(templatefile("${path.module}/user-data.sh", {
app_name = var.project_name
}))
tag_specifications {
resource_type = "instance"
tags = var.tags
}
}
resource "aws_autoscaling_group" "app" {
name = "${var.project_name}-asg"
launch_template {
id = aws_launch_template.app.id
version = "$Latest"
}
min_size = var.min_size
max_size = var.max_size
desired_capacity = var.desired_capacity
vpc_zone_identifier = var.subnet_ids
tag {
key = "Name"
value = "${var.project_name}-instance"
propagate_at_launch = true
}
}
自動化パターン
インフラストラクチャ検証パイプライン
#!/bin/bash
# Infrastructure validation script
set -euo pipefail
echo "🔍 Validating Terraform configuration..."
terraform fmt -check=true -diff=true
terraform validate
terraform plan -out=tfplan
echo "🔒 Security scanning..."
tfsec . || echo "Security issues found"
echo "📊 Cost estimation..."
infracost breakdown --path=. || echo "Cost analysis unavailable"
echo "✅ Validation complete"
コンテナーセキュリティパイプライン
#!/bin/bash
# Container security scanning
set -euo pipefail
IMAGE_TAG=${1:-"latest"}
echo "🔍 Scanning image: ${IMAGE_TAG}"
# Build image
docker build -t myapp:${IMAGE_TAG} .
# Security scanning
docker scout cves myapp:${IMAGE_TAG}
trivy image myapp:${IMAGE_TAG}
# Runtime security
docker run --rm -d --name security-test myapp:${IMAGE_TAG}
sleep 5
docker exec security-test ps aux # Check running processes
docker stop security-test
echo "✅ Security scan complete"
複数環境への昇格
#!/bin/bash
# Environment promotion script
set -euo pipefail
SOURCE_ENV=${1:-"staging"}
TARGET_ENV=${2:-"production"}
IMAGE_TAG=${3:-$(git rev-parse --short HEAD)}
echo "🚀 Promoting from ${SOURCE_ENV} to ${TARGET_ENV}"
# Validate source deployment
kubectl rollout status deployment/app --context=${SOURCE_ENV}
# Run smoke tests
kubectl run smoke-test --image=myapp:${IMAGE_TAG} --context=${SOURCE_ENV} \
--rm -i --restart=Never -- curl -f http://app-service/health
# Deploy to target
kubectl set image deployment/app app=myapp:${IMAGE_TAG} --context=${TARGET_ENV}
kubectl rollout status deployment/app --context=${TARGET_ENV}
echo "✅ Promotion complete"
クイック判断ツリー
「どのデプロイ戦略を使えばよいですか?」
Low-risk changes + Fast rollback needed? → Rolling Update
Zero-downtime critical + Can handle double resources? → Blue-Green
High-risk changes + Need gradual validation? → Canary
Database changes involved? → Blue-Green with migration strategy
「CI/CD パイプラインを最適化するにはどうすればよいですか?」
Build time >10 minutes? → Enable parallel jobs, caching, incremental builds
Test failures random? → Fix test isolation, add retries, improve environment
Deploy time >5 minutes? → Optimize container builds, use better base images
Resource constraints? → Use smaller runners, optimize dependencies
「まずどのモニタリングを導入すべきですか?」
Application just deployed? → Health checks, basic metrics (CPU/Memory/Requests)
Production traffic? → Error rates, response times, availability SLIs
Growing team? → Alerting, dashboards, incident management
Complex system? → Distributed tracing, dependency mapping, capacity planning
専門家向けリソース
コードとしてのインフラストラクチャ
コンテナーとオーケストレーション
CI/CD と自動化
モニタリングと可観測性
セキュリティとコンプライアンス
コードレビューのチェックリスト
DevOps のインフラストラクチャとデプロイをレビューする際は、次の点に注目してください。
CI/CD パイプラインと自動化
- 適切なキャッシュ戦略により、パイプラインの各ステップが最適化されている
- 可能な場合は、ビルドプロセスで並列実行を利用している
- リソースの割り当て(CPU、メモリ、タイムアウト設定)が適切である
- ビルドに失敗した場合、明確で実行可能なエラーメッセージが表示される
- デプロイのロールバック手順がテストされ、文書化されている
コンテナ化とオーケストレーション
- Docker イメージには
latestではなく、特定のタグを使用している - マルチステージビルドにより、最終イメージのサイズを最小限に抑えている
- リソース要求と上限が適切に設定されている
- ヘルスチェック(liveness、readiness プローブ)が実装されている
- コンテナのセキュリティスキャンがビルドプロセスに組み込まれている
Infrastructure as Code と構成管理
- Terraform の状態がロック機能付きでリモート管理されている
- リソース間の依存関係が明示され、適切な順序で設定されている
- インフラストラクチャのモジュールが再利用可能で、十分に文書化されている
- 環境固有の構成で、変数が適切に使用されている
-
terraform planを使ってインフラストラクチャの変更が検証されている
モニタリングと可観測性
- アラートのしきい値が調整され、不要な通知が最小限に抑えられている
- メトリクスの収集が、アプリケーションとインフラストラクチャの重要な健全性指標を網羅している
- ダッシュボードがデータの表示だけでなく、実行可能な洞察を提供している
- ログ集約に適切な保持期間とフィルタリングが設定されている
- SLI/SLO の定義がビジネス要件と一致している
セキュリティとコンプライアンス
- コンテナイメージの脆弱性スキャンが実施されている
- シークレットが専用のシークレット管理システムで管理されている
- RBAC ポリシーが最小権限の原則に従っている
- ネットワークポリシーにより、必要な通信に限って許可されている
- 証明書管理に自動ローテーションが含まれている
パフォーマンスとコストの最適化
- リソース使用率が監視され、最適化されている
- オートスケーリングポリシーが適切に設定されている
- 想定外のコスト増加を通知するアラートが設定されている
- デプロイ戦略により、ダウンタイムとリソースの無駄が最小限に抑えられている
- パフォーマンスのボトルネックが特定され、解消されている
問題が解決したと判断する前に、変更によって既存の機能が損なわれないことを必ず検証し、セキュリティのベストプラクティスに従ってください。