此系列文章为团队内部的实践总结和培训资料, 去除敏感信息保留公共部分与你们共享. 首先须要你们对Docker和Kubernetes有必定的基础了解, 文章再也不对容器集群是什么的问题进行论述. 着重于怎么作和为何. 目标是让有容器相关基础概念的读者参考此系列文章, 可以将手上的程序在Kubernetes中以符合云原生的方式运行起来.html
目录:前端
12-factorsgit
本篇内容刚好吻合十二要素第五条: 构建,发布,运行.docker
kubectl create sa gitlab-ci
复制代码
kubectl get sa gitlab-ci -o json | jq -r .secrets[].name
复制代码
kubectl get secret $secret -o json | jq -r '.data["token"]' | base64 -d
复制代码
kubectl get secret $secret -o json | jq -r '.data["ca.crt"]' | base64 -d
复制代码
在 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