gpt4 book ai didi

jenkins - 带有Kubernetes的Jenkins Workflow CD

转载 作者:行者123 更新时间:2023-12-02 12:08:56 25 4
gpt4 key购买 nike

要澄清的是,这不是在Kubernetes中运行Jenkins的问题,而是关于从Jenkins部署到Kubernetess的问题。

我最近决定使用Jenkins(以及工作流/管道插件)来协调我们的交付过程。目前,我正在使用命令式样式按如下进行部署:

stage 'Deploy to Integ'
// Clean up old releases
sh "kubectl delete svc,deployment ${serviceName} || true"
def cmd = """kubectl run ${serviceName} --image=${dockerRegistry}/${serviceName}:${env.BUILD_NUMBER} --replicas=2 --port=${containerPort} --expose --service-overrides='{ "spec": { "type": "LoadBalancer" }}' """
// execute shell for the command above
sh cmd

这很有效,因为 ${env.BUILD_NUMBER}在整个管道中都保持不变,这使我很容易确保所部署的版本在整个过程中都是相同的。我的问题是我想使用声明性方法,因为它不可扩展,并且我想使用VCS中的定义。

不幸的是,声明性方法带来了负面影响,即需要在Yaml中明确声明要部署的镜像版本。解决此问题的一种方法可能是使用 latest标记,但这有其自身的风险。例如,假设我要将 latest部署到生产环境,而新版本将被标记为 latest。新的 latest可能尚未通过测试。

我可以通过编程方式更改文件,但这感觉很笨拙,并且无法帮助 checkout 文件的开发人员了解最新的情况。

您做了什么来解决这个问题?我是否缺少明显的东西?您正在使用什么工作流程?

最佳答案

在我的Yaml文件(server.origin.yml)中,将图片设置为image-name:$BUILD_NUMBER
然后我运行:envsubst < ./server.origin.yml > ./server.yml此命令将用环境变量的值替换字符串$BUILD_NUMBER

关于jenkins - 带有Kubernetes的Jenkins Workflow CD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38504940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com