Назад | Перейти на главную страницу

kubectl diff на PowerShell?

kubectl может различать конфигурацию (блог, документы).

В Linux это нормально работает (WSL, Ubuntu 18, bash). Это дает мне разумный вывод, подобный следующему.

$ kubectl diff --filename some-resources.yaml
diff -u -N /tmp/LIVE-022965340/apps.v1.Deployment.… /tmp/MERGED-396067851/apps.v1.Deployment.…
--- /tmp/LIVE-022965340/apps.v1.Deployment.…      2020-07-20 17:06:21.444811700 +0200
+++ /tmp/MERGED-396067851/apps.v1.Deployment.…    2020-07-20 17:06:21.470315500 +0200
@@ -6,7 +6,7 @@
     kubectl.kubernetes.io/last-applied-configuration: |
       {"apiVersion":"apps/v1",…
   creationTimestamp: "2020-07-16T15:13:03Z"
-  generation: 1
+  generation: 2
   name: …
   namespace: …
   resourceVersion: "32827467"
@@ -121,7 +121,7 @@
         - chown www-data:www-data /files/ -R;chmod -R 755 /files/; chmod -R g+ws /files/
         command:
         - /bin/bash
-        - -c
+        - -cv
         image: …
         imagePullPolicy: IfNotPresent
         name: init-sites-volume

В PowerShell, kubectl diff не работает (PowerShell 7, Windows 10).

PS > kubectl diff --filename some-resources.yaml
error: failed to run "diff": executable file not found in %PATH%

Кажется, что либо kubectl не могу найти исполняемый файл с именем diff, или он спотыкается diff быть псевдонимом для Compare-Object, который, конечно, имеет совершенно другой синтаксис, чем Linux ' diff.

Возможно ли получить kubectl diff работать на PowerShell? Если да, то какой инструмент сравнения мне следует установить и что следует $env:KUBECTL_EXTERNAL_DIFF=… быть установлен на?

Это можно сделать, установив DiffUtils для Windows. В kubectl diff использует Unix diff программа, поэтому Windows понадобится помощь с этим. Просто:

  • Установите DiffUtils

  • Убедитесь, что папка bin отображается в переменной PATH Win10 (должно выполняться автоматически)

  • Перезагрузите машину

Пожалуйста, дайте мне знать, помогло ли это.