4.24_容器云集成部署方案
4.24.1_准备容器镜像
- 配置镜像服务器
进入平台管理 -> 平台配置 -> 服务集成 -> 镜像服务器,点击新增按钮,配置镜像服务器信息
- 项目关联镜像库
进入平台管理 -> 配置管理 -> 镜像库 -> 项目关联,点击关联按钮,配置项目及镜像仓库信息,将镜像仓库与项目进行关联
- 配置代码库
进入项目 -> 代码,点击关联代码库按钮,配置代码库信息
- 添加 Kubernetes 组件
进入项目 -> 设计 -> 组件,点击添加组件按钮,分类选择程序类组件,组件类型选择 kubernetes
- 配置容器镜像构建流水线
进入项目 -> 集成 -> 构建,点击创建构建定义按钮,进行构建流水线信息配置
- 生成容器镜像
点击执行构建按钮,开始构建流水线
等待流水线执行完成后,进行集成 -> 镜像页面,选择所对应的镜像仓库,即可看到生成的容器镜像信息
4.24.2_容器云集成部署配置
- 准备 K8S 证书
进入Linux环境,新建一个目录,并将 kubeconfig 文件,以及写有以下内容的 shell 脚本放置于同一目录中
clientcert=$(grep client-cert ./config |cut -d" " -f 6)
clientkey=$(grep client-key-data ./config |cut -d" " -f 6)
certauth=$(grep certificate-authority-data ./config |cut -d" " -f 6)
echo $clientcert
echo $clientkey
echo $certauth
echo $clientcert | base64 -d > ./client.pem
echo $clientkey | base64 -d > ./client-key.pem
echo $certauth | base64 -d > ./ca.pem
执行脚本,生成 ca.pem、client-key.pem 以及 client.pem 三个证书文件
- 配置 Kubernetes 容器云服务器
进入 DevOps 平台 -> 平台管理 -> 平台配置 -> 服务集成 -> 容器云服务器,点击新增按钮,选择 Kubernetes 类型,配置容器云服务器信息
表单属性 | 属性值 |
---|---|
类型 | Kubernetes |
名称 | 用户自定义 |
地址 | Kubernetes API Server Address |
certificate-authority | 上一步骤中脚本执行生成的 ca.pem 证书文件的内容 |
client-certificate | 上一步骤中脚本执行生成的 client.key.pem 证书文件的内容 |
client-key | 上一步骤中脚本执行生成的 client.pem 证书文件的内容 |
- 添加 Kubernetes 容器云资源
进入项目 -> 部署 -> 资源,点击新建按钮,填写 Kubernetes 容器云资源信息
表单属性 | 属性值 |
---|---|
资源名称 | 用户自定义 |
资源类型 | 容器云 |
容器云类型 | Kubernetes |
容器云 | 上一步骤中新增的 Kubernetes 容器云服务器名称 |
项目名称 | Kubernetes 中的 Namespace |
用户 | Kubernetes 的 kubeconfig 中的 user.name |
kubeconfig | Kubernetes 的 kubeconfig 内容 |
接着,为新增的资源执行连通状态检测操作,当连通状态返回可连通即可。
配置 Kubernetes 容器云应用部署发布流水线
进入项目 -> 部署 -> 发布 -> 点击创建发布定义按钮 -> 配置发布环境 -> 环境部署图 -> 添加发布环境:
- 切换到配置发布环境 -> 变量配置页面,为新增的发布环境添加如下变量
说明 | 变量名称 | 变量值 | 类型 | 是否作为入参 |
---|---|---|---|---|
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 的值
4.24.3_容器云应用部署发布流水线执行
点击发布,开始执行容器云应用部署发布流水线。
以下为流水线执行成功后的效果图: