公共配置已经完毕,现在我们开始配置服务的流水线。

每一条流水线由2个部分构成:

Services in Kubernetes

1. Eventlistener

配置部署内容如下:

apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
metadata:
  # 服务名,Kubernertes会自动生成服务 el-service-name
  name: service-name
spec:
  # 指定生成pipelinerun的sa
  serviceAccountName: cicd-sa
  triggers:
    - name: cicd
      interceptors:
        - gitlab:
            secretRef:
              secretName: gitlab-secret
              secretKey: secretToken
            eventTypes:
              - Push Hook
      # 定义params
      bindings:
        # 指定binding
        - name: triggerbinding
          ref: cicd
        # 手动定义params
        - name: custombinding
          spec:
            params:
              - name: pathToDockerFile
                value: Dockerfile
              - name: appName
                value: service-name
      # 指定template
      template:
        name: cicd

2. Ingress

部署内容如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  # 定义名称
  name: service-name
spec:
  rules:
  # 定义域名,要保证Gitlab可访问此域名,且域名指向Kubernetes中
  - host: service-name.el.spex.top
    http:
      paths:
      - backend:
          # 后端服务为刚刚定义的eventlistener
          serviceName: el-service-name
          # 默认端口为8080
          servicePort: 8080

这样我们就配置好在Kubernetes中的内容了,接下来需要在Gitlab中定义Webhook。

Gitlab

1. Webhook

选择Gitlab仓库 → Settings →Webhooks新建Webhook。