1.8. 여러 네임스페이스를 제공하도록 이벤트 리스너 구성
기본 CI/CD 파이프라인을 생성하려면 이 섹션을 건너뛸 수 있습니다. 그러나 배포 전략에 여러 네임스페이스가 포함된 경우 여러 네임스페이스를 제공하도록 이벤트 리스너를 구성할 수 있습니다.
클러스터 관리자는 EvenListener 오브젝트의 재사용 가능성을 높이기 위해 여러 네임스페이스를 제공하는 멀티 테넌트 이벤트 리스너로 구성하고 배포할 수 있습니다.
프로세스
이벤트 리스너에 대한 클러스터 전체 가져오기 권한을 구성합니다.
ClusterRoleBinding및EventListener오브젝트에 사용할 서비스 계정 이름을 설정합니다. 예를 들면el-sa입니다.예시
ServiceAccount.yamlapiVersion: v1 kind: ServiceAccount metadata: name: el-sa ---ClusterRole.yaml파일의규칙섹션에서 모든 이벤트 리스너 배포에 대한 적절한 권한을 클러스터 전체에서 작동하도록 설정합니다.ClusterRole.yaml예kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: el-sel-clusterrole rules: - apiGroups: ["triggers.tekton.dev"] resources: ["eventlisteners", "clustertriggerbindings", "clusterinterceptors", "triggerbindings", "triggertemplates", "triggers"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["configmaps", "secrets"] verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["serviceaccounts"] verbs: ["impersonate"] ...적절한 서비스 계정 이름과 클러스터 역할 이름을 사용하여 클러스터 역할 바인딩을 구성합니다.
ClusterRoleBinding.yaml예apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: el-mul-clusterrolebinding subjects: - kind: ServiceAccount name: el-sa namespace: default roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: el-sel-clusterrole ...
이벤트 리스너의
spec매개변수에 서비스 계정 이름(예:el-sa)을 추가합니다. 이벤트 리스너가 제공하려는 네임스페이스의 이름으로namespaceSelector매개변수를 작성합니다.Example
EventListener.yamlapiVersion: triggers.tekton.dev/v1beta1 kind: EventListener metadata: name: namespace-selector-listener spec: taskRunTemplate: serviceAccountName: el-sa namespaceSelector: matchNames: - default - foo ...필요한 권한(예:
foo-trigger-sa)을 사용하여 서비스 계정을 생성합니다. 트리거를 역할 바인딩에 사용합니다.예시
ServiceAccount.yamlapiVersion: v1 kind: ServiceAccount metadata: name: foo-trigger-sa namespace: foo ...RoleBinding.yaml예apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: triggercr-rolebinding namespace: foo subjects: - kind: ServiceAccount name: foo-trigger-sa namespace: foo roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: tekton-triggers-eventlistener-roles ...적절한 트리거 템플릿, 트리거 바인딩 및 서비스 계정 이름을 사용하여 트리거를 생성합니다.
Trigger.yaml의 예apiVersion: triggers.tekton.dev/v1beta1 kind: Trigger metadata: name: trigger namespace: foo spec: taskRunTemplate: serviceAccountName: foo-trigger-sa interceptors: - ref: name: "github" params: - name: "secretRef" value: secretName: github-secret secretKey: secretToken - name: "eventTypes" value: ["push"] bindings: - ref: vote-app template: ref: vote-app ...