tencent cloud

文档反馈

K8s 集群

最后更新时间:2023-12-29 11:44:51
    本文为您介绍如何通过持续集成将项目发布至 K8s 集群。

    前提条件

    设置 CODING 持续集成中构建环境前,您的腾讯云账号需要开通 CODING DevOps 服务。

    进入项目

    1. 登录 CODING 控制台,单击团队域名进入 CODING 使用页面。
    2. 单击页面右上角的
    
    ,进入项目列表页面,单击项目图标进入目标项目。
    3. 进入左侧菜单栏的持续集成功能。
    持续集成可简易部署项目到 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\\"}]}}}}'"
    }
    }
    }
    }
    }
    }

    提醒

    K8s 部署包括5步甚至更多,如果都写在持续集成里难以维护,建议使用 持续部署
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持