はじめに
Kubernetesで現在のリソースと適用したいマニフェストの差分を確認する方法を紹介します。
差分チェック
現在のリソースとの差分チェックはkubectl diff
を利用します。
ファイルを指定して、現在のリソースとの差分を確認する場合は下記のコマンドになります。
kubectl diff -f <manifest file>
実際に使ってみると下記のようになります。
❯ kubectl diff -f deployment.yml
diff -u -N /var/folders/v7/jvzb8y655l37rx9g_tgmb3p80000gn/T/LIVE-225846615/apps.v1.Deployment.default.myapp /var/folders/v7/jvzb8y655l37rx9g_tgmb3p80000gn/T/MERGED-496287946/apps.v1.Deployment.default.myapp
--- /var/folders/v7/jvzb8y655l37rx9g_tgmb3p80000gn/T/LIVE-225846615/apps.v1.Deployment.default.myapp 2022-02-15 23:06:47.000000000 +0900
+++ /var/folders/v7/jvzb8y655l37rx9g_tgmb3p80000gn/T/MERGED-496287946/apps.v1.Deployment.default.myapp 2022-02-15 23:06:47.000000000 +0900
@@ -6,7 +6,7 @@
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app":"myapp"},"name":"myapp","namespace":"default"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"myapp"}},"template":{"metadata":{"labels":{"app":"myapp"}},"spec":{"containers":[{"image":"nginx","name":"web-container","ports":[{"containerPort":80}],"resources":{"limits":{"cpu":"500m","memory":"128Mi"},"requests":{"cpu":"250m","memory":"64Mi"}}}]}}}}
creationTimestamp: "2022-02-15T14:04:48Z"
- generation: 1
+ generation: 2
labels:
app: myapp
managedFields:
@@ -109,7 +109,7 @@
uid: f483bd8e-7f6a-4298-8253-022e7d32aee8
spec:
progressDeadlineSeconds: 600
- replicas: 3
+ replicas: 5
revisionHistoryLimit: 10
selector:
matchLabels:
@@ -137,8 +137,8 @@
cpu: 500m
memory: 128Mi
requests:
- cpu: 250m
- memory: 64Mi
+ cpu: 500m
+ memory: 128Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
本番クラスタなどに適用する前には、
kubectl diff
で差分を確認するのがいいと思います。