PowerShell 上的 kubectl diff?

PowerShell 上的 kubectl diff?

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出错,当然其语法与 Linux 的 非常不同。diffCompare-Objectdiff

是否可以kubectl diff使用 PowerShell 进行工作?如果可以,我应该安装哪个 diff-tool 以及应该$env:KUBECTL_EXTERNAL_DIFF=…将其设置为什么?

答案1

可以通过安装适用于 Windows 的 DiffUtilskubectl diff使用的是 Unixdiff程序,因此 Windows 需要一些帮助。简单来说:

  • 安装 DiffUtils

  • 确保 bin 文件夹已映射到你的 Win10 PATH 变量中(应该自动完成)

  • 重启机器

如果有帮助的话请告诉我。

相关内容