【发布时间】:2020-03-01 14:49:07
【问题描述】:
目前我正在尝试为 Docker 映像添加版本号或内部版本号以部署在 Kubernetes 集群上。以前我只使用:latest 标签。但是当我使用 latest 标签时,我发现从 Dockerhub 镜像注册表中提取的问题。因此,当我将内部版本号用于我的 docker 映像时,例如 <image-name>:{build-number} 。
应用结构
在我的 Kubernetes 部署中,我使用了部署和服务。我在我的部署文件中定义我的图像存储库,如下所示,
containers:
- name: test-kube-deployment-container
image: samplekubernetes020/testimage:latest
ports:
- name: http
containerPort: 8085
protocol: TCP
在这里,我想将内部版本号与我的图像一起放入部署 YAML 中,而不是最新标签。
- 我可以使用环境变量来保存随机内部版本号,以便像
<image-name>:${buildnumber}一样访问? - 如果我想使用提供随机数的环境变量,如何为环境变量生成随机数?
图像版本实施更新
我修改后的 Jenkinsfile 包含如下步骤,将镜像版本号分配给镜像。但是在更改存储库后我仍然没有得到更新的结果,
我在 Jenkinsfile 中创建了如下步骤
stage ('imagebuild')
{
steps
{
sh 'docker build -f /var/lib/jenkins/workspace/jpipeline/pipeline/Dockerfile -t spacestudymilletech010/spacestudykubernetes /var/lib/jenkins/workspace/jpipeline/pipeline'
sh 'docker login --username=my-username --password=my-password'
sh "docker tag spacestudymilletech010/spacestudykubernetes:latest spacestudymilletech010/spacestudykubernetes:${VERSION}"
sh 'docker push spacestudymilletech010/spacestudykubernetes:latest'
}
}
我的部署 YAML 文件包含如下内容,
containers:
- name: test-kube-deployment-container
image: spacestudymilletech010/spacestudykubernetes:latest
ports:
- name: http
containerPort: 8085
protocol: TCP
困惑
注意:当我检查 dockerhub 仓库时,每次显示最新推送状态
所以我的困惑是:
- 在我的deployment.yaml 文件中拉取最新的图像有什么问题吗?
- 当我在我构建图像并推送的机器上标记图像时出现问题吗?
【问题讨论】:
-
您可以通过 CI/CD 管道轻松完成此操作。尝试使用 CircleCI、Azure devops 等工具
-
@TusharMahajan - 我正在使用 CI/CD 管道。当我定义我的 kubernetes 资源而不是使用 latest tag 时,我需要使用图像内部版本号/版本来从 dockerhub.com 中提取。因为最新标签已经存在图像拉取问题。
-
@DavidMaze - 是的,我已经尝试过使用 Kubernetes Helm 图表。使用 Helm 图表成功部署。但是现在我在做平面kubernetes资源部署研发。在这里,我需要检查没有 helm chart 的部署的可行性。仅使用部署,服务。因为我正在检查随机数如何在我的图像构建中生成和分配。我希望你明白我想要探索什么?请告诉我先生。
-
Plain
kubectl apply没有任何替换功能。
标签: docker kubernetes