【发布时间】:2021-06-28 13:08:01
【问题描述】:
我有一个带有单个托管节点组的 EKS 集群设置,它包含两个(worker ec2 VM)。我在 k8s 集群中部署了 Jenkins,它已经启动并运行,没有任何问题。
注意:在 Jenkins - 配置系统 - 云 - k8 规范 - Kubernetes URL - 我将我的主地址放置在我的 EKS 集群运行的地方 Kubernetes 控制平面在 https://eksendpoint.eu-central-1.eks.amazonaws.com 运行,并且连接测试也成功。
接下来,当我运行 Jenkins 构建创建 Jenkins 构建 pod 并且构建完成后,Jenkins 构建 pod 也会自动终止。
注意:在 Jenkins 中,我只有单节点主节点,没有辅助节点。当 jenkins 文件使用下面的代码创建 Docker 映像并且图像成功标记为基于我的代码时。
现在的问题是在构建 Docker 映像之后,我应该在哪里获取 Docker 映像以部署到我的 k8s 环境中。注意:我没有使用任何 Docker 注册表容器来上传我的 Docker 镜像,在这种情况下我如何获取我的 Docker 镜像。
stage('Build Docker Image') {
container('docker') {
echo 'docker'
sh "docker build --network=host -t myimage:mytag ."
sh 'pwd'
sh 'ls -lrt'
sh 'docker images'
sh 'hostname'
}
}
Jenkins 日志输出
[Pipeline] sh
+ docker images
+ grep devops
myimage/mytag build-12345 8b1c58dcc39d 3 seconds ago 583MB
[Pipeline] sh
+ hostname
worker23cc8b1c0-c6b0-415b-b0e9-f23186ca39e8-xsm58-z7wmk
【问题讨论】:
-
您必须标记您的图像并将其推送到您的 EKS 集群可以访问的 docker 注册表(例如 Amazon ECR)。然后,您必须在您的 k8s 集群中将凭证注册到您的 ECR。 Jenkins 在其“本地”注册表中构建映像,因此您的 EKS 集群可能不知道该注册表。
标签: docker jenkins kubernetes