Kubernetes 实践 第三篇: 基于Gitlab的CI/CD

此系列文章为团队内部的实践总结和培训资料, 去除敏感信息保留公共部分与你们共享. 首先须要你们对Docker和Kubernetes有必定的基础了解, 文章再也不对容器集群是什么的问题进行论述. 着重于怎么作为何. 目标是让有容器相关基础概念的读者参考此系列文章, 可以将手上的程序在Kubernetes中以符合云原生的方式运行起来.html

目录:前端

  1. Kubernetes 实践 第一篇: 程序容器化
  2. Kubernetes 实践 第二篇: 部署应用到集群上
  3. Kubernetes 实践 第三篇: 基于Gitlab的CI/CD
  4. Kubernetes 实践 第四篇: 存储
  5. Kubernetes 实践 第五篇: 配置管理
  6. Kubernetes 实践 第六篇: 日志管理
  7. Kubernetes 实践 第七篇: 微服务链路追踪
  8. Kubernetes 实践 第八篇: Golang 程序完整实现和 Demo
  9. Kubernetes 实践 第九篇: PHP 程序的完整实现和 Demo

12-factors

12-factorsgit

本篇内容刚好吻合十二要素第五条: 构建,发布,运行.docker

配置 Gitlab CI 的 Kubernetes ServiceAccount

建立 ServiceAccount

  1. 建立 gitlab-ci 的 ServiceAccount
    kubectl create sa gitlab-ci
    复制代码
  2. 获取secrete
    kubectl get sa gitlab-ci -o json | jq -r .secrets[].name
    复制代码
  3. 获取 token
    kubectl get secret $secret -o json | jq -r '.data["token"]' | base64 -d
    复制代码
  4. 获取 ca
    kubectl get secret $secret -o json | jq -r '.data["ca.crt"]' | base64 -d
    复制代码

配置 Gitlab CI 的 Variable

在 Gitlab 的 CI 设置中配置相关变量, 在 gitlab ci 任务中调用.json

KUBERNETES_SERVER
KUBE_CA
KUBE_TOKEN
KUBE_SECRETE
复制代码

构建与发布

参考第一篇的内容: Kubernetes 实践 第一篇: 程序容器化. 将程序打包成为 Docker 镜像. 对应的 CI 任务中应该包含构建镜像和推送 registry 镜像到仓库两个工做.后端

build:
  stage: build
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build --build-arg APP_ROOT=$APP_ROOT --build-arg APP_NAME=$APP_NAME -t $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA -t $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest -f Dockerfile .
    - docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA
    - docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
复制代码

其中 build-arg 中的参数根据 Dockerfile 所需的定义肯定.bash

运行

这一步须要将建立好的程序镜像更新到集群的部署上, 咱们使用一个前面配置好的 gitlab 的 ServiceAccount 进行认证操做 Kubernetes. 使用 kubectl set image 命令将新版镜像更新上去.微服务

deploy:
  stage: deploy
  variables:
    IMAGE_NAME: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA
  image: dodocat/kubectl:v1.14.1
  before_script:
    - echo "$KUBE_CA" > ca.crt
    - kubectl config set-cluster development --embed-certs=true --server=$KUBE_URL --certificate-authority=./ca.crt
    - kubectl config set-credentials gitlab --token=$KUBE_TOKEN
    - kubectl config set-context gitlab-development --cluster=development --user=gitlab
    - kubectl config use-context gitlab-development
  script:
    - kubectl set image deployment/$APP_NAME $APP_NAME=$IMAGE_NAME
复制代码

招聘

读书郎教育科技是教育电子行业的头部企业, 当前咱们正在作教育信息化的平台和在线直播教育两个巨大前景的事业. 办公地点在珠海. 如今前端 后端 Android开放招聘, 欢迎志同道合的朋友来和我聊聊.gitlab

招聘主页地址: www.zhipin.com/gongsir/ad0…post

相关文章
相关标签/搜索