apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
✅ よく使う補足項目
livenessProbe / readinessProbe:ヘルスチェック
command / args:起動コマンド変更
terminationGracePeriodSeconds:終了前の猶予時間
dnsPolicy:PodのDNS設定(通常は ClusterFirst)
🧩 各セクションの項目と説明
1. apiVersion, kind, metadata
| 項目 | 例 | 説明 |
|---|
apiVersion | apps/v1 | Deploymentで固定。 |
kind | Deployment | リソースの種類。 |
metadata.name | my-app | Deploymentの名前。 |
metadata.labels | app: my-app | ラベルはServiceや他リソースと紐づけるのに使う。 |
2. spec(Deployment本体)
| 項目 | 例 | 説明 |
|---|
replicas | 3 | Podをいくつ起動するか。 |
selector.matchLabels | app: my-app | Podを識別するラベル。templateのラベルと一致させる。 |
strategy.type | RollingUpdate | デプロイ戦略。Recreateも可。 |
minReadySeconds | 10 | PodがReadyになったとみなすまでの待機秒数。 |
revisionHistoryLimit | 5 | ロールバックできる世代数の上限。 |
3. spec.template(Podテンプレート)
metadata(Podのラベル)
yamlコピーする編集するmetadata:
labels:
app: my-app
spec(Podの中身)
yamlコピーする編集するspec:
containers:
4. spec.template.spec.containers
| 項目 | 例 | 説明 |
|---|
name | my-container | コンテナ名(ユニーク) |
image | nginx:1.21 | 使用するDockerイメージ |
ports.containerPort | 80 | コンテナがリッスンするポート |
env | name: DB_HOST, value: db | 環境変数の設定 |
resources | requests, limits | CPUやメモリの制限 |
volumeMounts | mountPath: /data | ボリュームのマウント先 |
5. コンテナ外の補助設定(オプション)
| 項目 | 例 | 説明 |
|---|
volumes | emptyDir, persistentVolumeClaim など | Podレベルのボリューム定義 |
initContainers | 定義はcontainersと同様 | メイン起動前に動く初期化処理 |
imagePullSecrets | secret名を指定 | プライベートレジストリ用 |
affinity / nodeSelector | region: east など | ノード配置制御(分散や同居) |
securityContext | runAsUser: 1000 | 非root実行の強制など |
スケール機能とはreplicasの数値を変える
ロールアウト機能
コメントを残す