Kubernetes Deploymentベストプラクティスチェックリスト
Kubernetes Deploymentマニフェストの包括的なチェックリスト。リソース制限、プローブ、セキュリティコンテキスト、イメージタグ、ラベル、レプリカ設定をカバー。
Best Practices
詳細な説明
完全なDeploymentチェックリスト
適切に設定されたKubernetes Deploymentは多くのベストプラクティスに従います。以下はすべてのバリデーターチェックに合格するリファレンスマニフェストです。
リファレンスマニフェスト
apiVersion: apps/v1
kind: Deployment
metadata:
name: production-app
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/version: "3.1.0"
app.kubernetes.io/component: server
app.kubernetes.io/managed-by: kubectl
spec:
replicas: 3
selector:
matchLabels:
app.kubernetes.io/name: myapp
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/version: "3.1.0"
spec:
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 2000
containers:
- name: app
image: myregistry.io/myapp:3.1.0
ports:
- containerPort: 8080
name: http
resources:
requests:
cpu: 200m
memory: 256Mi
limits:
cpu: 1000m
memory: 512Mi
livenessProbe:
httpGet:
path: /healthz
port: http
initialDelaySeconds: 15
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: http
initialDelaySeconds: 5
periodSeconds: 5
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
チェックリスト
| チェック | ステータス | 備考 |
|---|---|---|
| 安定版APIバージョン | apps/v1 | 非推奨ではない |
| metadata.name | あり | DNS互換名 |
| metadata.labels | あり | Kubernetes推奨ラベル |
| 固定イメージタグ | 3.1.0 | :latestではない |
| リソースリクエスト | 設定済み | スケジューリング用 |
| リソース制限 | 設定済み | 保護用 |
| Livenessプローブ | 設定済み | 障害時の自動再起動 |
| Readinessプローブ | 設定済み | トラフィック管理 |
| runAsNonRoot | true | セキュリティベストプラクティス |
| レプリカ > 1 | 3 | 高可用性 |
| ローリングアップデート戦略 | 設定済み | ダウンタイムなしデプロイ |
ラベル規約
Kubernetesは以下の標準ラベルを推奨しています:
app.kubernetes.io/name: アプリケーション名app.kubernetes.io/version: アプリケーションバージョンapp.kubernetes.io/component: アーキテクチャ内のコンポーネントapp.kubernetes.io/managed-by: リソースを管理するツール
ユースケース
新しいDeploymentマニフェストを作成する際や既存のものを監査する際のリファレンスとして使用。Kubernetes設定品質のチーム標準として機能。