由于一般情况下,我们的生产环境(production)与测试环境或预生产环境不会处于同一个k8s集群,故,这次,会使用一个新的 k8s 集群部署我们的测试示例。
1. 查看 k8s config
$ cat ~/.kube/config
apiVersion: v1
clusters:
...
server: https://192.168.20.82:6443
...
2. 配置环境变量
项目页面 -> 用户设置 -> CI/CD -> 变量
3. 设置 .gitlab-ci.yml
...
deploy_production:
stage: production
image: harbor.xiodi.cn/tools/kubectl:1.14.8
variables:
INGRESS_HOST: production.xiodi.cn
REGISTRY_VERSION: $CI_COMMIT_TAG
tags:
- docker
- host20133-docker
environment:
name: production
url: http://production.xiodi.cn/hello
script:
- export
- cat "$KUBE82_CONFIG" > ~/kube82
- cat ~/kube82
- export KUBECONFIG=~/kube82
- kubectl delete --ignore-not-found=true secret regcred
- kubectl create secret docker-registry regcred --docker-server=$CI_REGISTRY --docker-username=$GITLAB_DEPLOY_USER --docker-password=$GITLAB_DEPLOY_PW
- cat Deploy/kubernetes/deployment-edu-java-spring.yml | envsubst | kubectl apply -f -
- cat Deploy/kubernetes/service-edu-java-spring.yml | envsubst | kubectl apply -f -
- cat Deploy/kubernetes/ingress-edu-java-spring.yml | envsubst | kubectl apply -f -
only:
variables:
- $CI_COMMIT_TAG =~ /^v.*/
创建合并请求:从 dev 合并到 master,创建 v1.0 tag
4. k8s 验证
$ kubectl get pods
$ kubectl get ingress