我在 Ubuntu VM 中使用 Jenkins 从 Dockerfile 创建了一个 LAMP 映像。现在我想将 LAMP 映像推送到 gcr.io,还想使用该 LAMP 映像将 Nginx pod 部署到项目上的 GKE 集群。
图:1
我使用 Google Kubernetes 引擎插件连接集群,如上图:1。我不明白我需要如何为上图定义 Kubernetes 清单。构建配置时出现以下错误:
tagged gcr.io/xxx-xxx-xxx/lamp-stack:v0
FATAL: /var/lib/jenkins/workspace/LAMP/test.yaml
java.nio.file.NoSuchFileException: /var/lib/jenkins/workspace/LAMP/test.yaml
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219)
at java.base/java.nio.file.Files.newByteChannel(Files.java:370)
at java.base/java.nio.file.Files.newByteChannel(Files.java:421)
at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420)
at java.base/java.nio.file.Files.newInputStream(Files.java:155)
at hudson.FilePath.newInputStreamDenyingSymlinkAsNeeded(FilePath.java:2109)
at hudson.FilePath.read(FilePath.java:2094)
at hudson.FilePath.read(FilePath.java:2086)
at com.google.jenkins.plugins.k8sengine.Manifests.loadFile(Manifests.java:192)
at com.google.jenkins.plugins.k8sengine.Manifests.<init>(Manifests.java:155)
at com.google.jenkins.plugins.k8sengine.Manifests.<init>(Manifests.java:149)
at com.google.jenkins.plugins.k8sengine.Manifests.fromFile(Manifests.java:173)
at com.google.jenkins.plugins.k8sengine.KubernetesEngineBuilder.addMetricsLabel(KubernetesEngineBuilder.java:300)
at com.google.jenkins.plugins.k8sengine.KubernetesEngineBuilder.perform(KubernetesEngineBuilder.java:266)
at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)
at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
at hudson.model.Build$BuildExecution.build(Build.java:197)
at hudson.model.Build$BuildExecution.doRun(Build.java:163)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:514)
at hudson.model.Run.execute(Run.java:1907)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE
答案 0 :(得分:1)
您收到异常 java.nio.file.NoSuchFileException
,因为 Jenkins 是一个独立的基于 Java 的程序。
当尝试访问不存在的文件时会抛出此错误,在本例中为 /var/lib/jenkins/workspace/LAMP/test.yaml
。您必须确保该文件确实存在于该路径中。
您可以查看此 link 以获取有关如何在 Kubernetes Engine 上使用 Jenkins 的更多信息。
要将映像添加到 Container Registry,您必须将映像 docker tag
和 docker push
加入 gcr.io 主机名。您可以在 documentation 中找到操作方法。