4.24_容器云集成部署方案

4.24.1_准备容器镜像

  • 配置镜像服务器

进入平台管理 -> 平台配置 -> 服务集成 -> 镜像服务器,点击新增按钮,配置镜像服务器信息

image-repository-configuration

  • 项目关联镜像库

进入平台管理 -> 配置管理 -> 镜像库 -> 项目关联,点击关联按钮,配置项目及镜像仓库信息,将镜像仓库与项目进行关联

project-relate-image-repository-configuration

  • 配置代码库

进入项目 -> 代码,点击关联代码库按钮,配置代码库信息

relate-code-repository

  • 添加 Kubernetes 组件

进入项目 -> 设计 -> 组件,点击添加组件按钮,分类选择程序类组件,组件类型选择 kubernetes

k8s-component-configuration

  • 配置容器镜像构建流水线

进入项目 -> 集成 -> 构建,点击创建构建定义按钮,进行构建流水线信息配置

docker-image-build-pipeline-configuration-1

docker-image-build-pipeline-configuration-2

docker-image-build-pipeline-configuration-3

docker-image-build-pipeline-configuration-4

docker-image-build-pipeline-configuration-5

  • 生成容器镜像

点击执行构建按钮,开始构建流水线

等待流水线执行完成后,进行集成 -> 镜像页面,选择所对应的镜像仓库,即可看到生成的容器镜像信息

integration-image-page

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

shell-script-content

执行脚本,生成 ca.pem、client-key.pem 以及 client.pem 三个证书文件

shell-script-exec-result

  • 配置 Kubernetes 容器云服务器

进入 DevOps 平台 -> 平台管理 -> 平台配置 -> 服务集成 -> 容器云服务器,点击新增按钮,选择 Kubernetes 类型,配置容器云服务器信息

integration-container-cloud-server-configuration

表单属性 属性值
类型 Kubernetes
名称 用户自定义
地址 Kubernetes API Server Address
certificate-authority 上一步骤中脚本执行生成的 ca.pem 证书文件的内容
client-certificate 上一步骤中脚本执行生成的 client.key.pem 证书文件的内容
client-key 上一步骤中脚本执行生成的 client.pem 证书文件的内容
  • 添加 Kubernetes 容器云资源

进入项目 -> 部署 -> 资源,点击新建按钮,填写 Kubernetes 容器云资源信息

kubernetes-container-cloud-resource-configuration

表单属性 属性值
资源名称 用户自定义
资源类型 容器云
容器云类型 Kubernetes
容器云 上一步骤中新增的 Kubernetes 容器云服务器名称
项目名称 Kubernetes 中的 Namespace
用户 Kubernetes 的 kubeconfig 中的 user.name
kubeconfig Kubernetes 的 kubeconfig 内容

接着,为新增的资源执行连通状态检测操作,当连通状态返回可连通即可。

test-resource-connectivity-action

  • 配置 Kubernetes 容器云应用部署发布流水线

  • 进入项目 -> 部署 -> 发布 -> 点击创建发布定义按钮 -> 配置发布环境 -> 环境部署图 -> 添加发布环境:

add-release-definition-dev

  1. 切换到配置发布环境 -> 变量配置页面,为新增的发布环境添加如下变量

release-definition-env-params-configuration

说明 变量名称 变量值 类型 是否作为入参
Kubernetes中的服务之间访问的端口 port 8080 常量
应用名称 deployName springboot-demo 常量
外部机器可访问的端口 nodePort 32515 常量
  1. 配置 Kubernetes 容器云应用部署原子任务

点击新增 kubernetes容器云应用部署原子任务,进行相关配置:

kubernetes-container-cloud-app-deploy-stage-configuration-1

kubernetes-container-cloud-app-deploy-stage-configuration-2

需特别注意:

在部署 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 的值
  1. Kubernetes 应用服务发现部署配置

新增 Kubernetes YAML 部署原子任务,配置资源和 YAML 信息。

kubernetes-container-cloud-app-svc-configuration

其中 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_容器云应用部署发布流水线执行

点击发布,开始执行容器云应用部署发布流水线。

以下为流水线执行成功后的效果图:

release-pipeline-exec-result-1

release-pipeline-exec-result-2

release-pipeline-exec-result-3

results matching ""

    No results matching ""