2

我正在尝试通过堆栈驱动程序在 GKE 集群上调试 Java 应用程序。我创建了一个 GKE 集群,Allow full access to all Cloud APIs 我正在关注文档:https ://cloud.google.com/debugger/docs/setup/java

这是我的 DockerFile:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} alnt-watchlist-microservice.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/alnt-watchlist-microservice.jar"]

在文档中,它被编写为在 DockeFile 中添加以下行:

RUN  mkdir /opt/cdbg && \
     wget -qO- https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_gce.tar.gz | \
     tar xvz -C /opt/cdbg

RUN java -agentpath:/opt/cdbg/cdbg_java_agent.so 
    -Dcom.google.cdbg.module=tpm-watchlist
    -Dcom.google.cdbg.version=v1
    -jar /alnt-watchlist-microservice.jar

当我构建 DockerFile 时,它​​失败说 tar: invalid magic , tar: short read。

在堆栈驱动程序调试控制台中,它始终显示“未找到已部署的应用程序”。它将显示哪个应用程序?我已经在我的 kubernetes 集群上部署了 2 个服务。

我已经 gcloud debug source gen-repo-info-file --output-directory="WEB-INF/classes/ 在我的项目目录中执行了。

它生成了 source-context.json。创建后,我尝试构建 docker 映像,但失败了。

4

3 回答 3

2

当您部署容器化应用程序时,调试器就可以使用了。您收到No deployed application found错误是因为您的调试器代理无法在 dockerfile 中下载或解压缩。

请检查此讨论以解决tar: invalid magic , tar: short read.错误。

于 2019-11-11T06:22:48.090 回答
1

不幸的是,Alpine 似乎没有定期使用 Debugger 进行测试。这里有一个示例设置可能会对您有所帮助:https ://github.com/GoogleCloudPlatform/cloud-debug-java#alpine-linux

于 2019-11-20T15:11:32.990 回答
0

我解决了这个问题。

首先,您必须使用 java 图像“gcr.io/google-appengine/openjdk”而不是 Alpine 图像。

其次,我没有用逗号分隔入口点(基本上格式错误)

ENTRYPOINT ["java","-agentpath:/opt/cdbg/cdbg_java_agent.so", "-Djava.security.egd=file:/dev/./urandom"  ,"-Dcom.google.cdbg.module=watchlist"]

于 2019-12-02T07:01:16.157 回答