1. 授权认证
  2. 获取用户个人信息
  3. 项目协同
  4. 代码托管
  5. 持续集成
  6. 制品仓库
  7. 测试管理
  1. 项目协同
  2. 代码仓库
  3. DevOps 实践之旅
  4. 一分钟开始持续集成之旅
  5. 持续部署
  6. 制品库

自动部署到 K8s 集群

功能介绍

持续集成可自动部署项目到 K8s 集群,步骤如下:

  1. 获取 Docker 仓库的用户名和密码(CODING 制品库一键创建访问令牌即可获得),录入持续集成的环境变量中;
  2. 构建 Docker 镜像并上传到仓库;
  3. 在云计算服务商(比如 腾讯云)创建一个 K8s 集群和 deployment,获得 Kubeconfig,录入 CODING 凭据管理;
  4. 在持续集成中使用下述 Jenkinsfile:执行 kubectl 进行部署;

Jenkinsfile

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]],
        userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
      }
    }
    stage('构建') {
      steps {
        echo '构建中...'
        script {
          // 请修改 dockerServer、dockerPath、imageName
          dockerServer = 'codes-farm-docker.pkg.coding.net'
          dockerPath = '/laravel-demo/laravel-docker'
          imageName = "${dockerServer}${dockerPath}/laravel-demo:1.0.0"
          def customImage = docker.build(imageName)

          // 推送 Docker 镜像到仓库
          docker.withRegistry("https://${dockerServer}", CODING_ARTIFACTS_CREDENTIALS_ID) {
            customImage.push()
          }
        }
      }
    }
    stage('部署到 K8s') {
      steps {
        echo '部署中...'
        script {
          // 请修改 credentialsId:填入 k8s 凭据 ID
          withKubeConfig([credentialsId: 'f23cc59c-dfd1-40b9-a12f-2c9b6909e908']) {
            // 使用 kubectl 创建 K8s 密钥:来自环境变量的 DOCKER_USER 和 DOCKER_PASSWORD
            sh(script: "kubectl create secret docker-registry coding --docker-server=${dockerServer} --docker-username=${env.DOCKER_USER} --docker-password=${env.DOCKER_PASSWORD} --docker-email=support@coding.net", returnStatus: true)

            // 使用 kubectl 修改 K8s deployment:指定 Docker 镜像链接和密钥
            // 请修改 laravel-demo、web 为你的 deployment 中的值
            sh "kubectl patch deployment laravel-demo --patch '{\"spec\": {\"template\": {\"spec\": {\"containers\": [{\"name\": \"web\", \"image\": \"${imageName}\"}], \"imagePullSecrets\": [{\"name\": \"coding\"}]}}}}'"
          }
        }
      }
    }
  }
}

截图

CODING 制品库 生成访问令牌

CODING 持续集成 环境变量 DOCKER_USER

腾讯云 容器服务 tke k8s Kubeconfig

CODING 凭据管理 k8s Kubeconfig

腾讯云 容器服务 tke k8s 创建 deployment

上一篇自动部署到 Linux Docker 服务器
最近更新
感谢反馈有用
感谢反馈没用