K8s 集群
文章内容
持续集成可简易部署项目到 K8s 集群,步骤如下:
- 获取 Docker 仓库的用户名和密码(CODING 制品库一键创建访问令牌即可获得),录入持续集成的环境变量中;
- 构建 Docker 镜像并上传到仓库;
- 在云计算服务商(比如 腾讯云)创建一个 K8s 集群和 deployment,获得 Kubeconfig,录入 CODING 凭据管理;
- 在持续集成中使用下述
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=coding_support@tencent.com", 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 步甚至更多,如果都写在「持续集成」里难以维护,建议使用「持续部署」。
问题反馈 >
2022-12-07最近更新
感谢反馈有用
感谢反馈没用
在阅读中是否遇到以下问题?*
您希望我们如何改进?*
如果您希望得到回复,请留下您的邮箱地址。