记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。

Jenkins给k8s部署YAML文件传参数方法


一,环境说明。

1,k8s集群。

2,Jenkins流水线部署在k8s环境中。


二,参数问题。

1,Jenkins使用CICD时需要传参数给k8s的YAML文件。

2,有两种方法,如下面的Jenkinsfile内容,只选取一部分。

可以看出来,parameters中有两个参数:APP_NAME,PROJECT_NAME。

另外enviroment中不少参数,其中PROJECT_VERSION参数指向了APP_NAME,这里需要使用双引号。


stage('image-push') {
agent none
steps {
container('base') {
sh 'docker tag ui-web:latest $REGISTRY/$ALIYUNHUB_NAMESPACE/ui-web:SNAPSHOT-$BUILD_NUMBER'
withCredentials([usernamePassword(credentialsId : 'aliyun-id' ,passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,)]) {
sh 'echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin'
sh 'docker push $REGISTRY/$ALIYUNHUB_NAMESPACE/ui-web:SNAPSHOT-$BUILD_NUMBER'
}
}
}
}
environment {
DOCKER_CREDENTIAL_ID = 'aliyun-id'
GITHUB_CREDENTIAL_ID = 'github-id'
KUBECONFIG_CREDENTIAL_ID = 'k8s-demo'
REGISTRY = 'registry.cn-hangzhou.aliyuncs.com'
DOCKERHUB_NAMESPACE = 'ui-web'
GITHUB_ACCOUNT = 'kubesphere'
APP_NAME = 'ui-web'
ALIYUNHUB_NAMESPACE = 'k8sops2021'
PROJECT_VERSION = "${APP_VERSION}"
}

parameters {
string(name: 'APP_VERSION', defaultValue: 'v0.1', description: '项目版本')
string(name: 'PROJECT_NAME', defaultValue: '', description: '构建模块')
}
}



3,再看看k8s的YAML文件写法。

可以看出来,YAML中需要引用 parametes中的参数,只能写成 ${PROJECT_NAME} 这种形式。

YAML中如果要引用 environment中的参数,可以写成 $APP_NAME 这种形式。

containers:
- name: ${PROJECT_NAME}
image: $REGISTRY/$ALIYUNHUB_NAMESPACE/ui-web:SNAPSHOT-$BUILD_NUMBER
ports:
- name: http-80
containerPort: 80
protocol: TCP






转载请标明出处【Jenkins给k8s部署YAML文件传参数方法】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论