開発者ツールとインフラ連携のビジュアル
Kubernetes Cluster — Dev Stack Base Platform Auth Service 3 replicas User Service 5 replicas Order Service 10 replicas Notify Svc 2 replicas Ingress Controller / Service Mesh (Istio)

Kubernetesはマイクロサービスアーキテクチャの実行基盤として事実上の標準となりました。しかし「とりあえずKubernetesを使う」から「Kubernetesで効率的に運用する」へのシフトには、多くの知識と経験が必要です。本記事では、Dev Stack BaseのVP of Engineeringとして培った実践知識をもとに、Kubernetesを活用したマイクロサービス管理のベストプラクティスを解説します。

Kubernetes マイクロサービス設計の基礎

マイクロサービスをKubernetesで管理する際、最初に決定すべきはサービス境界の設計です。各サービスは単一のビジネス機能に責任を持ち、独立してデプロイ可能であることが基本です。

NamespaceはKubernetesのリソース分離の基本単位です。環境(dev/staging/prod)ごと、またはチームごとにNamespaceを分割することで、リソースクォータ管理、RBAC設定、NetworkPolicyによるトラフィック制御が容易になります。

Deployment YAML — マイクロサービスの基本構成YAML
apiVersion: apps/v1
kind: Deployment
metadata:
  name: order-service
  namespace: production
  labels:
    app: order-service
    version: v2.1.0
spec:
  replicas: 3
  selector:
    matchLabels:
      app: order-service
  template:
    spec:
      containers:
      - name: order-service
        image: registry.dsb.io/order-service:v2.1.0
        resources:
          requests:
            cpu: "250m"
            memory: "256Mi"
          limits:
            cpu: "500m"
            memory: "512Mi"
        livenessProbe:
          httpGet:
            path: /health
            port: 8080
          initialDelaySeconds: 30

HPA(Horizontal Pod Autoscaler)の設定

HPAはCPU・メモリ使用率に基づいてPod数を自動調整します。2026年現在、カスタムメトリクスやExternalメトリクス(Prometheusやキューの長さなど)に基づいたHPAが広く使われています。

HPA設定 — カスタムメトリクス対応YAML
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: order-service-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: order-service
  minReplicas: 3
  maxReplicas: 50
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70
  - type: Pods
    pods:
      metric:
        name: order_queue_length
      target:
        type: AverageValue
        averageValue: "100"

サービスメッシュ(Istio)の導入

マイクロサービス数が増加すると、サービス間通信の管理が複雑になります。サービスメッシュ(Istio/Linkerd)を導入することで、mTLS通信の自動設定、トラフィック管理、サーキットブレーカー、詳細なテレメトリ収集を透過的に実現できます。

注意:サービスメッシュはサイドカーコンテナによるリソースオーバーヘッドがあります。eBPFベースのCilium Service Meshへの移行も検討してください。

可観測性(Observability)の実装

Kubernetes環境での可観測性は、メトリクス(Prometheus)、ログ(Loki/Elasticsearch)、トレース(Jaeger/Tempo)の「三本柱」が基本です。OpenTelemetryを活用することで、アプリケーションコードから統一的なテレメトリデータを収集できます。

GitOpsによる宣言的デプロイメント

ArgoCDを使ったGitOpsワークフローでは、Gitリポジトリの状態がKubernetesクラスターの「あるべき姿」を定義します。コード変更がGitにプッシュされると、ArgoCDが自動的に差分を検知し、クラスターに適用します。

実践Tips:よくあるアンチパターン

タイポグラフィと背景デザインのビジュアル要素

関連記事