# 容器镜像准备
Jenkins运行环境安装docker服务
可自行下载安装docker,也可下载docker离线包,使用命令
yum localinstall *.rpm
安装。docker安装完以后会在系统中自动创建docker的group组
Jenkins启动用户添加到Docker组
将 Jenkins 启动用户添加到 Docker 组并确保 Jenkins 可以调用 Docker 命令:
确保您已经安装并正确配置了 Docker。
打开终端或命令提示符,以管理员身份登录到 Jenkins 所在的服务器。
找到 Jenkins 启动用户的主目录。默认情况下,Jenkins 启动用户的主目录是 /home/jenkins。
将 Jenkins 启动用户添加到 Docker 组。在终端中执行以下命令:
sudo usermod -aG docker jenkins(这里jenkins可以替换成其他你所用的jenkins服务启动用户)
使用其他用户可按情况修改命令。
这里可以直接su到Jenkins启动用户,输入docker命令 如 docker ps -a 测试一下用户是否有docker执行权限。
重新启动 Jenkins 服务,以使更改生效。
docker配置daemon.json
Docker的daemon.json配置文件是用于配置Docker守护进程的配置文件。通过修改daemon.json文件,可以配置Docker守护进程的行为和特性。
daemon.json位置为/etc/docker/daemon.json以下是一个示例的daemon.json文件内容:
{ "debug": true, "data-root": "/path/to/data", "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"], "insecure-registries": ["myregistry.example.com"], "labels": ["foo=bar", "version=1.0"], "experimental": true, "features": { "buildkit": true } }
属性说明:
debug: 设置为true时,Docker守护进程将输出更多的调试信息。
data-root: 指定Docker守护进程的数据根目录。这是Docker存储镜像、容器和其他数据的默认位置。
hosts: 指定Docker守护进程监听的地址和端口。您可以指定多个地址和端口,用逗号分隔。
insecure-registries: 指定不受信任的注册表地址列表。在生产环境中,建议只使用受信任的注册表地址,这里可以填写私库地址。
labels: 指定Docker守护进程的标签列表。这些标签可以用于过滤和搜索容器。
experimental: 设置为true时,启用实验性功能。
features: 包含其他特定于功能的配置选项。在上面的示例中,我们启用了buildkit功能。
请注意,daemon.json文件的配置选项是可选的,您可以根据需要添加或修改配置选项。编辑完daemon.json文件后,保存并关闭文件。然后,重新启动Docker守护进程以应用新的配置。
**
注意事项:
{
"insecure-registries": ["https://your-insecure-registry.com"]
}
insecure-registries里可以直接配置上协议头,这样dockerfile里配置From的时候就会直接根据协议请求。
**配置镜像服务器
进入平台管理 -> 平台配置 -> 服务集成 -> 镜像服务器,点击新增按钮,配置镜像服务器信息
项目关联镜像库
进入平台管理 -> 配置管理 -> 镜像库 -> 项目关联,点击关联按钮,配置项目及镜像仓库信息,将镜像仓库与项目进行关联
配置代码库
进入项目 -> 代码,点击关联代码库按钮,配置代码库信息
添加 Kubernetes 组件
进入项目 -> 设计 -> 组件,点击添加组件按钮,分类选择程序类组件,组件类型选择 kubernetes
配置容器镜像构建流水线
进入项目 -> 集成 -> 构建,点击创建构建定义按钮,进行构建流水线信息配置
生成容器镜像
点击执行构建按钮,开始构建流水线。
当流水线执行完成后,进入集成 -> 镜像页面,选择所对应的镜像仓库,即可看到生成的容器镜像信息。
# 容器云集成部署配置
# 容器云集成
DevOps 集成容器云相关配置请参考 容器云集成 部分
# 容器云应用部署发布流水线配置
进入项目 -> 部署 -> 发布 -> 点击创建发布定义按钮 -> 配置发布环境 -> 环境部署图 -> 添加发布环境
切换到配置发布环境 -> 变量配置页面,为新增的发布环境添加如下变量
说明 变量名称 变量值 类型 是否作为入参 Kubernetes中的服务之间访问的端口 port 8080 常量 否 应用名称 deployName springboot-demo 常量 否 外部机器可访问的端口 nodePort 32515 常量 否 配置 Kubernetes 容器云应用部署原子任务
点击新增 kubernetes容器云应用部署原子任务,进行相关配置
需特别注意:在部署 YAML 表单属性的内容里,必须在 yaml.metadata 或 yaml.spec.template.metadata 中声明 app 和 release 两个属性,详情请见如下
apiVersion: apps/v1 kind: Deployment metadata: labels: release: ${pipelineContext.releaseInstanceName} # 此处必填,内容固定!!! app: ${deployName} # 此处必填!!!其值对应发布环境变量中变量名为 deployName 的值 name: ${deployName} # 其值对应发布环境变量中变量名为 deployName 的值 namespace: wyq-test spec: selector: matchLabels: app: ${deployName} # 其值对应发布环境变量中变量名为 deployName 的值 replicas: 1 template: metadata: labels: release: ${pipelineContext.releaseInstanceName} # 此处必填,内容固定!!! app: ${deployName} # 此处必填!!!其值对应发布环境变量中变量名为 deployName 的值 spec: containers: - image: ${componentArtifactUrl} # 此处容器镜像这么填即可,会自动获取镜像信息中所选的镜像URL imagePullPolicy: Always ports: - containerPort: ${port} # 其值对应发布环境变量中变量名为 port 的值 protocol: TCP name: web name: ${deployName} # 其值对应发布环境变量中变量名为 deployName 的值
Kubernetes 应用服务发现部署配置
新增 Kubernetes YAML 部署原子任务,配置资源和 YAML 信息
其中 YAML 内容如下:
--- apiVersion: v1 kind: Service metadata: name: ${deployName} # 其值对应发布环境变量中变量名为 deployName 的值 namespace: wyq-test labels: app: ${deployName} # 其值对应发布环境变量中变量名为 deployName 的值 spec: selector: app: ${deployName} # 其值对应发布环境变量中变量名为 deployName 的值 type: NodePort ports: - name: web port: ${port} # 其值对应发布环境变量中变量名为 port 的值 targetPort: web nodePort: ${nodePort} # 其值对应发布环境变量中变量名为 nodePort 的值
# 容器云应用部署发布流水线执行
点击发布,开始执行容器云应用部署发布流水线。
以下为流水线执行成功后的效果图: