如何使用 Helm Jenkins 值 'CredentialsXmlSecret'
How to use Helm Jenkins Values 'CredentialsXmlSecret'
我正在尝试使用 helm 部署 Jenkins。我看到一些值是用 XML 设置的。但是,我不能以与 Master.CredentialsXmlSecret 字段相同的方式进行操作。我试过:
CredentialsXmlSecret: jenkins-credentials
SecretsFilesSecret:
jenkins-credentials: |-
xml from credentials.xml here
但是不行。
尝试 groovy 初始化脚本,您可以像这样添加 helm 值:
InitScripts:
01-passwords: |-
import com.cloudbees.plugins.credentials.impl.*;
import com.cloudbees.plugins.credentials.*;
import com.cloudbees.plugins.credentials.domains.*;
String keyfile = "/tmp/key"
Credentials c = (Credentials) new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL,java.util.UUID.randomUUID().toString(), "description", "user", "password")
def ksm1 = new CertificateCredentialsImpl.FileOnMasterKeyStoreSource(keyfile)
Credentials ck1 = new CertificateCredentialsImpl(CredentialsScope.GLOBAL,java.util.UUID.randomUUID().toString(), "description", "password", ksm1)
def ksm2 = new CertificateCredentialsImpl.UploadedKeyStoreSource(keyfile)
Credentials ck2 = new CertificateCredentialsImpl(CredentialsScope.GLOBAL,java.util.UUID.randomUUID().toString(), "description", "password", ksm2)
SystemCredentialsProvider.getInstance().getStore().addCredentials(Domain.global(), c)
SystemCredentialsProvider.getInstance().getStore().addCredentials(Domain.global(), ck1)
SystemCredentialsProvider.getInstance().getStore().addCredentials(Domain.global(), ck2)
配置中的此脚本,在您的 jenkins 中创建凭据和设置。
最简单的事情是启动一个 Jenkins 实例,按照我想要的方式配置它,exec
到它(例如,kubectl exec -it {my-jenkins-pod} /bin/bash
),cd
到 /var/jenkins_home
, 只需抓取适当的文件并对它们进行 base64 编码。
在这种情况下,适当的文件是:
/var/jenkins_home/credentials.xml
/var/jenkins_home/secrets/master.key
/var/jenkins_home/secrets/hudson.util.Secret
例如,您可以 base64 -w 0 credentials.xml
获取任何这些文件的 base64 编码内容。然后直接复制粘贴到合适的k8s secret即可。
您需要创建的第一个 k8s secret 是:
apiVersion: v1
kind: Secret
metadata:
name: jenkins-credentials
data:
credentials.xml: AAAGHckcdhie==
其中 credentials.xml
的值是 credentials.xml 文件内容的 base64
编码字符串。
您需要创建的另一个 k8s 秘密是:
apiVersion: v1
kind: Secret
metadata:
name: jenkins-secrets-secret
data:
master.key: AAAdjkdfjicki+
hudson.util.Secret: AAAidjciud=
然后在你的 values.yaml
:
CredentialsXmlSecret: jenkins-credentials
SecretsFilesSecret: jenkins-secrets-secret
编辑:自 Apr 22, 2019 版本 1.00 起,名称约定已更改
感谢ythdelmar,在评论中指出,现在
credentialsXmlSecret: jenkins-credentials
secretsFilesSecret: jenkins-secrets-secret
没有首字母。
我正在尝试使用 helm 部署 Jenkins。我看到一些值是用 XML 设置的。但是,我不能以与 Master.CredentialsXmlSecret 字段相同的方式进行操作。我试过:
CredentialsXmlSecret: jenkins-credentials
SecretsFilesSecret:
jenkins-credentials: |-
xml from credentials.xml here
但是不行。
尝试 groovy 初始化脚本,您可以像这样添加 helm 值:
InitScripts:
01-passwords: |-
import com.cloudbees.plugins.credentials.impl.*;
import com.cloudbees.plugins.credentials.*;
import com.cloudbees.plugins.credentials.domains.*;
String keyfile = "/tmp/key"
Credentials c = (Credentials) new UsernamePasswordCredentialsImpl(CredentialsScope.GLOBAL,java.util.UUID.randomUUID().toString(), "description", "user", "password")
def ksm1 = new CertificateCredentialsImpl.FileOnMasterKeyStoreSource(keyfile)
Credentials ck1 = new CertificateCredentialsImpl(CredentialsScope.GLOBAL,java.util.UUID.randomUUID().toString(), "description", "password", ksm1)
def ksm2 = new CertificateCredentialsImpl.UploadedKeyStoreSource(keyfile)
Credentials ck2 = new CertificateCredentialsImpl(CredentialsScope.GLOBAL,java.util.UUID.randomUUID().toString(), "description", "password", ksm2)
SystemCredentialsProvider.getInstance().getStore().addCredentials(Domain.global(), c)
SystemCredentialsProvider.getInstance().getStore().addCredentials(Domain.global(), ck1)
SystemCredentialsProvider.getInstance().getStore().addCredentials(Domain.global(), ck2)
配置中的此脚本,在您的 jenkins 中创建凭据和设置。
最简单的事情是启动一个 Jenkins 实例,按照我想要的方式配置它,exec
到它(例如,kubectl exec -it {my-jenkins-pod} /bin/bash
),cd
到 /var/jenkins_home
, 只需抓取适当的文件并对它们进行 base64 编码。
在这种情况下,适当的文件是:
/var/jenkins_home/credentials.xml
/var/jenkins_home/secrets/master.key
/var/jenkins_home/secrets/hudson.util.Secret
例如,您可以 base64 -w 0 credentials.xml
获取任何这些文件的 base64 编码内容。然后直接复制粘贴到合适的k8s secret即可。
您需要创建的第一个 k8s secret 是:
apiVersion: v1
kind: Secret
metadata:
name: jenkins-credentials
data:
credentials.xml: AAAGHckcdhie==
其中 credentials.xml
的值是 credentials.xml 文件内容的 base64
编码字符串。
您需要创建的另一个 k8s 秘密是:
apiVersion: v1
kind: Secret
metadata:
name: jenkins-secrets-secret
data:
master.key: AAAdjkdfjicki+
hudson.util.Secret: AAAidjciud=
然后在你的 values.yaml
:
CredentialsXmlSecret: jenkins-credentials
SecretsFilesSecret: jenkins-secrets-secret
编辑:自 Apr 22, 2019 版本 1.00 起,名称约定已更改
感谢ythdelmar,在评论中指出,现在
credentialsXmlSecret: jenkins-credentials
secretsFilesSecret: jenkins-secrets-secret
没有首字母。