Как использовать значения Helm Jenkins 'CredentialsXmlSecret' - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь развернуть Дженкинс, используя шлем.Я видел, что некоторые значения задаются с помощью XML.Однако я не могу сделать то же самое с полем Master.CredentialsXmlSecret.Я пробовал:

CredentialsXmlSecret: jenkins-credentials

SecretsFilesSecret:
jenkins-credentials: |-
xml from credentials.xml here

Но это не работает.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Самый простой способ - запустить экземпляр 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 любого из этих файлов.Затем просто скопируйте его и вставьте в соответствующий секретный ключ k8.

Первый секретный ключ k8, который вам нужно создать:

apiVersion: v1
kind: Secret
metadata:
  name: jenkins-credentials
data:
  credentials.xml: AAAGHckcdhie==

Где значение, данное credentials.xml, равно base64 закодированная строка содержимого файла credentials.xml.

Другой секрет 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
0 голосов
/ 21 декабря 2018

Попробуйте скрипты groovy init, вы можете добавить в 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.

...