Rancher Gitlab Runner CI/CD

Gitlab 添加 Kubernetes集群配置

  1. 获取Kubernetes配置信息
    在这里插入图片描述

  2. Gitlab中添加Kubernetes集群
    config

  • CA Certificate 不需要填写
  • RBAC-enabled clusterGitLab-managed cluster 不要勾选(坑)

.gitlab-ci.yml 示例

image: docker:19.03

services:
   - name: docker:19.03-dind

variables:
   DOCKER_HOST: tcp://docker:2375
   # This will instruct Docker not to start over TLS.
   DOCKER_TLS_CERTDIR: ""

stages:
   - gradle-build
   - docker-build
   #  - review
   - deploy

gradle-build:
   stage: gradle-build
   image: gradle:6.8-jdk8
   cache:
      paths:
         - .gradle/wrapper
         - .gradle/caches
   before_script:
      - export GRADLE_USER_HOME=`pwd`/.gradle
   script:
      - gradle :provider-example-service:build -x test
   artifacts:
      paths:
         - ${PROJECT_JAR_PATH}
   # 只在develop分支生效
   only:
      - develop

docker-build:
   stage: docker-build
   script:
      - docker build -t ${HARBOR_HOST}/${HARBOR_PROJECT}/${CI_PROJECT_NAME}:latest .
      - docker tag ${HARBOR_HOST}/${HARBOR_PROJECT}/${CI_PROJECT_NAME}:latest ${HARBOR_HOST}/${HARBOR_PROJECT}/${CI_PROJECT_NAME}:${CI_PIPELINE_ID}
      - docker login ${HARBOR_HOST} -u ${HARBOR_USERNAME} -p ${HARBOR_PASSWORD}
      - docker push ${HARBOR_HOST}/${HARBOR_PROJECT}/${CI_PROJECT_NAME}:latest
      - docker push ${HARBOR_HOST}/${HARBOR_PROJECT}/${CI_PROJECT_NAME}:${CI_PIPELINE_ID}

kubernetes-deploy:
   stage: deploy
   image:
      name: bitnami/kubectl:1.2
   environment:
      name: development
      kubernetes:
         namespace: ${KUBE_NAMESPACE}
   script:
      - |
         cat deployment.yaml | \
         sed -e "s@{{POD_PORT}}@${PROJECT_PORT}@g" \
             -e "s@{{POD_NAME}}@${CI_PROJECT_NAME}@g" \
             -e "s@{{NAMESPACE}}@${KUBE_NAMESPACE}@g" \
             -e "s@{{IMAGE}}@${HARBOR_HOST}/${HARBOR_PROJECT}/${CI_PROJECT_NAME}:${CI_PIPELINE_ID}@g" \
             -e "s@{{IMAGE_PULL_SECRETS}}@${IMAGE_PULL_SECRETS}@g" | \
         kubectl apply -f -
  • environment: name需与Gitlab中创建的Kubernetes cluster Environment scope相同

deployment.yaml 示例

apiVersion: v1
kind: Service
metadata:
   name: {{POD_NAME}}
   namespace: {{NAMESPACE}}
spec:
   selector:
      app: {{POD_NAME}}
   type: ClusterIP
   ports:
      - name: {{POD_PORT}}tcp{{POD_PORT}}1
        port: {{POD_PORT}}
        protocol: TCP
        targetPort: {{POD_PORT}}
---
apiVersion: apps/v1
kind: Deployment
metadata:
   name: {{POD_NAME}}
   namespace: {{NAMESPACE}}
   labels:
      app: {{POD_NAME}}
spec:
   replicas: 1
   selector:
      matchLabels:
         app: {{POD_NAME}}
   strategy:
      rollingUpdate:
         maxSurge: 1
         maxUnavailable: 0
      type: RollingUpdate
   template:
      metadata:
         labels:
            app: {{POD_NAME}}
      spec:
         containers:
            - image: {{IMAGE}}
              imagePullPolicy: Always
              name: {{POD_NAME}}
              ports:
                 - containerPort: {{POD_PORT}}
                   name: {{POD_PORT}}tcp{{POD_PORT}}1
                   protocol: TCP
         dnsPolicy: ClusterFirst
         imagePullSecrets:
            - name: {{IMAGE_PULL_SECRETS}}
         restartPolicy: Always

  • 环境变量配置
    环境变量配置
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值