DevOps DevOps
产品简介
产品安装
快速入门
使用指南
开发指南
FAQ
6.7更新说明
  • 容器镜像准备
  • 容器云集成部署配置
  • 容器云集成
  • 容器云应用部署发布流水线配置
  • 容器云应用部署发布流水线执行

# 容器镜像准备

  • 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的时候就会直接根据协议请求。
    **

  • 配置镜像服务器

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

    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

# 容器云集成部署配置

# 容器云集成

DevOps 集成容器云相关配置请参考 容器云集成 部分

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

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

    add-release-definition-env

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

    release-definition-env-params-configuration

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

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

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

    需特别注意:在部署 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: ${ns}
     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
                 hostPort: ${hostPort}  # 添加 hostPort 映射
               name: ${deployName} # 其值对应发布环境变量中变量名为 deployName 的值
             
     ---
     apiVersion: v1
     kind: Service
     metadata:
       name: ${deployName} # 其值对应发布环境变量中变量名为 deployName 的值
       namespace: ${ns}
       labels:
         app: ${deployName} # 其值对应发布环境变量中变量名为 deployName 的值
     spec:
       selector:
         app: ${deployName} # 其值对应发布环境变量中变量名为 deployName 的值
       type: NodePort
       ports:
       - name: web
         port: ${port} # 其值对应发布环境变量中变量名为 port 的值
         targetPort: web
         nodePort: ${nodePort} # 其值对应发布环境变量中变量名为 nodePort 的值
    

# 容器云应用部署发布流水线执行

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

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

release-pipeline-exec-result-1

release-pipeline-exec-result-2

release-pipeline-exec-result-3

← EOS基于ANT的EPD打包示例说明 企业微信配置 →