我们正在K8s上启动一个新的Jenkins示例,并决定使用Helm来简化过程。现在,我们遇到了JCASC和Helm的问题,正如这里所解释的那样。
根据上面链接的文档,您应该能够从命令行包含多个文件,然后将其转换并放置到CASC文件的位置,/var/jenkins_home/casc_congigs
下面是命令应该看起来像:
helm install jenkins -n sandbox-dev -f jenkins-values.yaml -f values_welcome_message.yaml $chart
字符串
我阅读并尝试了Provide external yaml file to JCasC configScripts的答案,但到目前为止,没有任何工作。
我创建了一个系统消息YAML文件:
jenkins:
controller:
JCasC:
configScripts:
welcome-message: |
jenkins:
systemMessage: Welcome to our CI\CD server. This Jenkins is configured and managed 'as code'.
型
JCASC的主值文件配置如下:
JCasC:
enabled: true
defaultConfig: true
configUrls: []
# - https://acme.org/jenkins.yaml
# Remote URL:s for configuration files.
configScripts: {}
# welcome-message: |
# jenkins:
# systemMessage: Welcome to our CI\CD server. This Jenkins is configured and managed 'as code'.
型
请注意,欢迎消息的内联配置脚本已被注解掉。
我这样执行安装:
helm install jenkins -n sandbox-dev -f jenkins-values.yaml -f values_welcome_message.yaml $chart
型
额外的YAML文件不会上传到/var/jenkins_home/casc_configs
目录。
如果我更改初始值文件以取消注解欢迎消息的配置并执行安装,则所有工作都将正常进行,并创建额外的配置文件(无需尝试上传额外的YAML文件)。
jenkins@jenkins-0:/$ ls -la /var/jenkins_home/casc_configs/
total 12
drwxrwsrwx. 2 root jenkins 67 Nov 27 20:49 .
drwxrwsrwx. 14 root jenkins 4096 Nov 27 20:49 ..
-rw-r--r--. 1 jenkins jenkins 2446 Nov 27 20:33 jcasc-default-config.yaml
-rw-r--r--. 1 jenkins jenkins 105 Nov 27 20:49 welcome-message.yaml
型
我错过了什么?为什么我共享的安装命令中的附加文件没有上传values_welcome_message.yaml
?我的初始值YAML设置不正确吗?还是有其他原因?
1条答案
按热度按时间xytpbqjk1#
原来这里给出的说明并不像它们应该的那样清楚。外部文件被上传和合并,它们只是没有合并到正确的地方。
最重要的是,当您为JCASC包含外部文件时,必须考虑values.yaml文件的结构。在所示的说明中,您可以创建这样的外部文件,例如:
字符串
就像我对欢迎消息YAML所做的那样:
型
事实证明,所示的结构是错误的。
为了解决这个问题,我对Helm安装进行了一次空运行,并将调试输出发送到一个文件中:
型
检查输出,我发现第二个文件已经包含在合并中,但信息不在
JCASC:
属性下的正确位置:型
但它确实出现在输出中,其基础级别是Jenkins:
型
如果查看原始值.yaml,您会发现文档的基本级别是控制器所在的位置。显示JCASC属性的折叠是
controller:
的子项,而不是jenkins: controller:
的子项型
为了使外部JCASC文件正确,它们必须遵循相同的模式。删除
Jenkins:
父文件可以做到这一点(注意控制器与JCASC属性的关系:型
另一次试运行后的输出显示了外部文件是否在正确的层次结构中工作的属性:
型