- Code Repository : GitLab Private Repo
- Image Repository : DockerHub Private Repo
- GitLab Private Repo Clone
- Kaniko를 이용하여 Docker Image Build & DockerHub Private Repo에 Push
- Push한 Image를 이용하여 Deployment & Service를 Eks Cluster에 배포
- Push Event 발생
- WebHook을 통해 Json Payload가 EventListenr에게 전송
- Trigger를 이용하여 Pipeline 실행
├── auth
│ ├── auth-sa.yaml
│ ├── dockerhub
│ │ └── docker-config-se.yaml
│ ├── gitlab
│ │ ├── git-ssl-se.yaml
│ │ ├── gitlab-se.yaml
│ │ └── gitlab-se.yaml.bak
│ └── rbac
│ ├── clusterole.yaml
│ └── clusterrolebind.yaml
├── authapply.sh
├── delete.sh
├── ingress-ttdashboard.yaml
├── pipeline
│ ├── pipeline.yaml
│ └── pipelineRun.yaml
├── setpipeline.sh
├── task
│ ├── gitclone.yaml
│ ├── kaniko.yaml
│ └── kubecommand.yaml
└── trigger
├── auth-trigger
│ ├── role.yaml
│ ├── rolebinding.yaml
│ └── sa-trigger.yaml
├── eventlistener.yaml
├── ingress-trigger.yaml
├── trigerbinding.yaml
└── trigertemplate.yaml
- 전체 파일 구조는 위와 같다
- ingress-ttdashboard.yaml : Tekton DashBoard를 외부 노출하기 위한 Ingress 파일
- authapply.sh : Tekton Pipeline & Trigger를 위한 인증 정보 배포
- setpipeline.sh : Tekton Pipeline & Trigger 배포
- delete.sh : Tekton Pipeline & Trigger 삭제 및 배포한 Deployment & Service 삭제
- auth-sa.yaml : Tekton Pipeline 실행에 사용할 ServiceAccount 파일
- dockerhub/docker-config-se.yaml : DockerHub Private Repo 접근에 필요한 인증 정보를 담은 Secrets 파일. dockerconfig.json 정보를 입력해야 한다
- gitlab/git-ssl-se.yaml : GitLab TLS 인증을 위한 Root CA 인증서 정보를 담은 Secrets 파일. Root CA 인증서 정보를 입력해야 한다
- gitlab/gitlab-secret.yaml : GitLab Private Repo 접근에 필요한 인증 정보를 담은 Secrets 파일. GitLab Username과 AccessToken 정보를 입력해야 한다
- rbac/clusterole.yaml : Kubernetes Cluster에 배포하기 위한 권한 정보를 담은 ClusterRole 파일
- rbac/clusterrolebind.yaml : auth-sa와 clusterole을 Bind 하기 위한 ClusterRoleBinding 파일
- pipeline/pipeline.yaml : 구축한 Pipeline 파일
- pipeline/pipelineRun.yaml : Pipeline을 실행하기 위한 PipelineRun 파일. Trigger 구축 후에는 사용하지 않는다
- task/gitclone.yaml : Git Clone 하기 위한 Task 파일
- task/kaniko.yaml : Image Build & Push 하기 위한 Task 파일
- task/kubecommand.yaml : Kubernetes Cluster에 배포하기 위한 파일
- trigger/auth-trigger/role.yaml : EventListener Pod를 실행하기 위한 권한 정보를 담은 role & ClusterRole 파일
- trigger/auth-trigger/rolebinding.yaml : role과 sa-trigger를 Bind 하기 위한 RoleBinding & ClusterRoleBinding 파일
- trigger/auth-trigger/sa-trigger.yaml : EventListener Pod를 실행하기 위한 ServiceAccount 파일
- trigger/eventlistener.yaml : 외부에서 Event를 받아 Trigger를 작동시키는 EventListener 파일
- trigger/trigerbinding.yaml : Event Data ( Json Payload )와 TriggerTemplate의 파라미터를 매핑하기 위한 TriggerBinding 파일
- trigger/trigertemplate.yaml : 넘겨 받은 파라미터를 이용해 어떤 Pipeline을 실행시킬건지 정의한 TriggerTemplate 파일
- trigger/ingress-trigger.yaml : EventListener를 외부에 노출하기 위한 Ingress 파일