Kubernetes Skaffold调试缺少带有Helm部署的JAVA_工具_选项

Kubernetes Skaffold调试缺少带有Helm部署的JAVA_工具_选项,kubernetes,skaffold,google-cloud-code,Kubernetes,Skaffold,Google Cloud Code,如果我正确理解这里的文档 如果我尝试使用“skaffold debug”或IntelliJ“在Kubernetes上开发”并进行调试来运行K8s项目,skaffold必须在我的K8s部署/服务文件中插入jdwp的额外端口和带有JAVA_工具_选项的环境变量。这对我来说是不可能的 我正在使用一个头盔图表来部署我的k8s工件,我看不到任何地方配置了这些东西(这里也提到过) 如果我手动配置部署\服务YAML,为jdwp插入端口5005,为jdwp插入环境变量JAVA_TOOL_选项,为jdwp插入端

如果我正确理解这里的文档

如果我尝试使用“skaffold debug”或IntelliJ“在Kubernetes上开发”并进行调试来运行K8s项目,skaffold必须在我的K8s部署/服务文件中插入jdwp的额外端口和带有JAVA_工具_选项的环境变量。这对我来说是不可能的

我正在使用一个头盔图表来部署我的k8s工件,我看不到任何地方配置了这些东西(这里也提到过)

如果我手动配置部署\服务YAML,为jdwp插入端口5005,为jdwp插入环境变量JAVA_TOOL_选项,为jdwp插入端口forward 5005,那么我可以远程连接到进程并进行调试,但Skafold无法自行管理它(它甚至没有尝试,我在日志中没有看到JAVA_TOOL_选项)

可能是,它不理解我正在运行一个JVM项目,或者可能是,当我使用“Helm create”创建Helm项目时,有几个yaml文件(configmap.yaml、deployment.yaml、hpa.yaml、ingres.yaml、service.yaml、serviceCount.yaml),它无法找到要操作的正确文件

如果我也理解正确,将要调试的部署/pod必须具有以下注释:

debug.cloud.google.com/config

我在部署中唯一看到的是以下内容-

ide: idea
ideVersion: 2021.1.1.0.0
ijPluginVersion: unknown
skaffold.dev/run-id: d2420cca-f212-4349-b078-41f36ed51bd5
知道这里出了什么问题吗


实际上,部署功能正常,我的Pod报告就绪性检查正常,但从skaffold/intellij开始没有调试。

在@posthumecaver的掌舵图和阻止skaffold配置映像的
skaffold.yaml
之间存在一些不匹配。我将在这里总结这些发现,以方便那些偶然发现这篇文章的人

@posthumecaver使用Skafold的头盔支撑。这要求
skaffold.yaml
和舵图使用公共键来引用图像。Helm中有三种方法用于参考图像:

完全限定名(默认) Skafold将配置Helm,将一个键设置为完全标记的图像参考

skaffold.yaml
设置:

build:
  artifacts:
    - image: gcr.io/my-project/my-image
deploy:
  helm:
    releases:
      - name: my-chart
        chartPath: helm
        artifactOverrides:
          img: gcr.io/my-project/my-image
build:
  artifacts:
    - image: gcr.io/my-project/my-image
deploy:
  helm:
    releases:
      - name: my-chart
        chartPath: helm
        artifactOverrides:
          img: gcr.io/my-project/my-image
        imageStrategy:
          helm: {}
build:
  artifacts:
    - image: gcr.io/my-project/my-image
deploy:
  helm:
    releases:
      - name: my-chart
        chartPath: helm
        artifactOverrides:
          img: gcr.io/my-project/my-image
        imageStrategy:
          helm:
            explicitRegistry: true
图表模板:

image: "{{.Values.img}}"
image: "{{.Values.img.repository}}:{{.Values.img.tag}}"
image: "{{.Values.img.registry}}/{{.Values.img.repository}}:{{.Values.img.tag}}"
值.yaml
(请注意,Skaffold会覆盖此值):

斯卡福尔德将调用

helm install <chart> <chart-path> --set-string img=gcr.io/my-project/my-image:generatedTag@sha256:digest
helm install <chart> <chart-path> --set-string img.repository=gcr.io/my-project/my-image,img.tag=generatedTag@sha256:digest
helm install <chart> <chart-path> --set-string img.registry=gcr.io,img.repository=my-project/my-image,img.tag=generatedTag@sha256:digest
图表模板:

image: "{{.Values.img}}"
image: "{{.Values.img.repository}}:{{.Values.img.tag}}"
image: "{{.Values.img.registry}}/{{.Values.img.repository}}:{{.Values.img.tag}}"
值.yaml
(请注意,Skaffold会覆盖这些值):

斯卡福尔德将调用

helm install <chart> <chart-path> --set-string img=gcr.io/my-project/my-image:generatedTag@sha256:digest
helm install <chart> <chart-path> --set-string img.repository=gcr.io/my-project/my-image,img.tag=generatedTag@sha256:digest
helm install <chart> <chart-path> --set-string img.registry=gcr.io,img.repository=my-project/my-image,img.tag=generatedTag@sha256:digest
图表模板:

image: "{{.Values.img}}"
image: "{{.Values.img.repository}}:{{.Values.img.tag}}"
image: "{{.Values.img.registry}}/{{.Values.img.repository}}:{{.Values.img.tag}}"
值.yaml
(请注意,Skaffold会覆盖这些值):

斯卡福尔德将调用

helm install <chart> <chart-path> --set-string img=gcr.io/my-project/my-image:generatedTag@sha256:digest
helm install <chart> <chart-path> --set-string img.repository=gcr.io/my-project/my-image,img.tag=generatedTag@sha256:digest
helm install <chart> <chart-path> --set-string img.registry=gcr.io,img.repository=my-project/my-image,img.tag=generatedTag@sha256:digest
helm安装——设置字符串img.registry=gcr.io,img.repository=my project/my image,img.tag=generatedTag@sha256:摘要

您是否正在部署由Skaffold构建的映像<代码>调试仅标记生成的映像,以避免影响系统级或基础结构级容器,如侧车等。您使用的基本映像是什么?(我将在Skaffold调试文档中添加一个疑难解答部分。)是的,映像是通过Skaffold和JiB构建的,我的基本映像是“采用OpenJDK/openjdk8:jdk8u282-b08-slim”,因此映像定义了一个
JAVA\u VERSION
环境变量,这应该足以导致JVM识别器。请您运行
skaffold debug-v debug
以启用详细日志记录并将日志附加到此处,好吗?以下是skaffold debug日志,首先是thx提示,当我在票据中对我的PoC项目进行更改时,它起作用了。不幸的是,我的现实生活项目与PoC有点不同。它是一个多模块Helm项目的一部分,我想调试这个项目,引用另一个Helm图表中的configmap。因此,当我尝试安装完整的头盔图表并尝试调试副头盔图表时,skaffold再次无法操纵JAVA_工具_选项,我将创建一个模拟这种情况的PoC变体,您能检查一下并告诉我可以为它做些什么吗?此外,我正在使用JAVA_工具_选项设置“-Xms512M-Xmx512M”不幸的是,当Skafold用“-agentlib:jdwp=transport=dt_socket,server=y,address=5005,suspend=n,quiet=y”替换JAVA_TOOL_选项时,它会完全忽略内存设置并覆盖这些设置。它会将以前的值附加到调试值中吗?