【发布时间】:2021-10-26 18:21:50
【问题描述】:
我想使用声明式管道在 Jenkins 作业中传递 Kubernetes 密钥和值。
我正在尝试使用 pod 模板读取 k8s 机密值。 配置了 k8s 插件,镜像设置了环境变量。我需要用 k8s 密码覆盖环境值。
K8S-秘密:
spec:
containers:
- env:
- name: K8S-SECRET
valueFrom:
secretKeyRef:
key: USERNAME
name: PASSWORD
Jenkins 流水线:
pipeline {
agent {
kubernetes {
label 'docker'
envVars: [containersecretEnvVar(key: 'USERNAME', value:'PASSWORD')]
}
}
environment {
BRANCH = 'origin/master'
PROJECT_NAME = 'k8s'
}
stages{
stage('print k8s secret'){
steps {
echo "k8s_secret_name: ${env.k8s_secret_name}"
echo "k8s_secret_valie: ${env.k8s_secret_value}"
}
}
}
}
【问题讨论】:
-
您使用的是哪个版本的 Kubernetes,您是如何设置集群的?您是使用裸机安装还是某些云提供商?
-
AWS 上的云提供商。使用最新版本。
-
在管道中使用以下代码 sn-p 获取此错误。
Caused: java.lang.IllegalArgumentException: Could not instantiate {envVars=[@secretEnvVar(key=TOKEN,secretName=foo,secretKey=bar)]} for org.csanchez.jenkins.plugins.kubernetes.ContainerTemplatepodTemplate(inheritFrom: 'docker', containers: [ containerTemplate( envVars: [ secretEnvVar(key: 'TOKEN', secretName: 'foo', secretKey: 'bar') ]) ] ){ node('docker') { stage('test'){ sh "echo ${foo}" } } } -
能否提供准确的版本?请不要使用“最新”一词,因为它不准确。
-
能够修复它。
标签: kubernetes jenkins-pipeline