无法在 Camel K 容器内创建存储库
Unable to create repository inside Camel K container
我在 kubernetes 集群中安装了 camel-k,其中有一条路径可以检查 git 存储库,如下所示。
// camel-k: language=java dependency=camel-git
import org.apache.camel.builder.RouteBuilder;
public class Gitlab extends RouteBuilder {
@Override
public void configure() throws Exception {
from("git:///tmp/config-service?remotePath=https://xxx&branchName=master&type=branch&username=xxx&password=xxx")
.transform().constant("checked-out").to("log:info");
}
}
但这给出了以下权限错误。当登录到 pod 并尝试在部署目录中创建文件或文件夹时,会出现权限错误。有什么方法可以使用 Traits 或任何其他方法在容器内设置用户吗?
2020-10-06 11:31:46.667 ERROR [main] SystemReader - Creating XDG_CONFIG_HOME directory /deployments/?/.config failed
java.nio.file.AccessDeniedException: /deployments/?
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:90) ~[?:?]
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[?:?]
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) ~[?:?]
at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389) ~[?:?]
at java.nio.file.Files.createDirectory(Files.java:689) ~[?:?]
at java.nio.file.Files.createAndCheckIsDirectory(Files.java:796) ~[?:?]
at java.nio.file.Files.createDirectories(Files.java:782) ~[?:?]
解决这个问题有两个部分。
首先要解决 XDG_CONFIG_HOME
问题,您可以为集成设置一个环境变量,例如:
kamel run -e XDG_CONFIG_HOME=/tmp/.config Gitlab.java
其次,camel-git 消费者只能在现有的 Git 存储库上执行简单的任务,例如列出分支、标签和提交。要克隆存储库,您需要使用像这样的生产者:
to(git:///tmp/config-service?remotePath=https://github.com/apache/camel-k.git&branchName=master&operation=clone")
我在 kubernetes 集群中安装了 camel-k,其中有一条路径可以检查 git 存储库,如下所示。
// camel-k: language=java dependency=camel-git
import org.apache.camel.builder.RouteBuilder;
public class Gitlab extends RouteBuilder {
@Override
public void configure() throws Exception {
from("git:///tmp/config-service?remotePath=https://xxx&branchName=master&type=branch&username=xxx&password=xxx")
.transform().constant("checked-out").to("log:info");
}
}
但这给出了以下权限错误。当登录到 pod 并尝试在部署目录中创建文件或文件夹时,会出现权限错误。有什么方法可以使用 Traits 或任何其他方法在容器内设置用户吗?
2020-10-06 11:31:46.667 ERROR [main] SystemReader - Creating XDG_CONFIG_HOME directory /deployments/?/.config failed
java.nio.file.AccessDeniedException: /deployments/?
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:90) ~[?:?]
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[?:?]
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) ~[?:?]
at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389) ~[?:?]
at java.nio.file.Files.createDirectory(Files.java:689) ~[?:?]
at java.nio.file.Files.createAndCheckIsDirectory(Files.java:796) ~[?:?]
at java.nio.file.Files.createDirectories(Files.java:782) ~[?:?]
解决这个问题有两个部分。
首先要解决 XDG_CONFIG_HOME
问题,您可以为集成设置一个环境变量,例如:
kamel run -e XDG_CONFIG_HOME=/tmp/.config Gitlab.java
其次,camel-git 消费者只能在现有的 Git 存储库上执行简单的任务,例如列出分支、标签和提交。要克隆存储库,您需要使用像这样的生产者:
to(git:///tmp/config-service?remotePath=https://github.com/apache/camel-k.git&branchName=master&operation=clone")