Automation Pipelines에서 Kubernetes 클러스터에 애플리케이션의 릴리스를 자동화하는 방법
Automation Pipelines
에서 Kubernetes 클러스터에 애플리케이션의 릴리스를 자동화하는 방법Automation Pipelines
관리자 또는 개발자는 Automation Pipelines
및 VMware Tanzu Kubernetes Grid Integrated Edition(이전 이름: VMware Enterprise PKS)을 사용하여 소프트웨어 애플리케이션 배포를 Kubernetes 클러스터로 자동화할 수 있습니다. 이 사용 사례에서는 애플리케이션의 릴리스를 자동화하는 데 사용할 수 있는 다른 방법을 설명합니다.
- 배포할 애플리케이션 코드가 작동하는 GitHub 저장소에 있는지 확인합니다.
- 작동하는 Jenkins 인스턴스가 있는지 확인합니다.
- 작동하는 이메일 서버가 있는지 확인합니다.
- 이메일 서버에 연결하는 이메일 끝점을Automation Pipelines에서 생성합니다.
- 파이프라인이 애플리케이션을 배포할 Kubernetes 클러스터 2개(개발 및 운영)를 AWS(Amazon Web Services)에 설정합니다.
- GitHub 저장소에 파이프라인의 YAML 코드가 포함되어 있는지, 또는 환경의 메타데이터와 규격을 정의하는 YAML 파일이 포함되어 있는지 확인합니다.
이 사용 사례에서는 두 단계가 포함된 파이프라인을 생성하고 Jenkins를 사용하여 애플리케이션을 구축하고 배포합니다.
- 첫 번째 단계는 개발을 위한 단계입니다. 이 단계에서는 Jenkins를 사용하여 코드를 GitHub 저장소의 분기에서 풀한 후 구축하고 테스트하고 게시합니다.
- 두 번째 단계는 배포를 위한 단계입니다. 이 단계에서는 파이프라인이 애플리케이션을 Kubernetes 클러스터에 배포할 수 있도록 주요 사용자의 승인이 필요한 사용자 작업을 실행합니다.
파이프라인 업무 공간에서 Kubernetes API 끝점을 사용하는 경우
Automation Pipelines
은 CI(지속적 통합) 작업 또는 사용자 지정 작업을 실행하는 데 필요한 Kubernetes 리소스(예: ConfigMap, Secret 및 포드)를 생성합니다. Automation Pipelines
은 NodePort를 사용하여 컨테이너와 통신합니다.파이프라인 실행 간에 데이터를 공유하려면 영구 볼륨 할당을 제공해야 합니다. 그러면
Automation Pipelines
은 영구 볼륨 할당을 컨테이너에 마운트하여 데이터를 저장하고 후속 파이프라인 실행에 사용합니다.Automation Pipelines
파이프라인 업무 공간은 지속적 통합 작업 및 사용자 지정 작업을 위해 Docker 및 Kubernetes를 지원합니다. 업무 공간 구성에 대한 자세한 내용은 파이프라인 작업 공간 구성에서 참조하십시오.

파이프라인이 애플리케이션 구축, 테스트, 게시 및 배포를 수행할 수 있도록 개발 도구, 배포 인스턴스 및 파이프라인 YAML 파일이 준비되어 있어야 합니다. 파이프라인은 Kubernetes 클러스터의 개발 및 운영 인스턴스에 애플리케이션을 배포합니다.

애플리케이션 릴리스를 자동화하는 기타 방법:
- Jenkins를 사용하여 애플리케이션을 구축하는 대신Automation Pipelines기본 빌드 기능 및 Docker 빌드 호스트를 사용할 수 있습니다.
- 애플리케이션을 Kubernetes 클러스터에 배포하는 대신 AWS(Amazon Web Services) 클러스터에 배포할 수 있습니다.
Automation Pipelines
기본 구축 기능 및 Docker 호스트 사용에 대한 자세한 내용은 다음을 참조하십시오. - Automation Pipelines에서 을 클릭하여, GitHub 저장소에서 코드를 풀하기 위해 파이프라인에서 사용할 Jenkins 끝점을 생성합니다.
- Kubernetes 끝점을 생성하려면새 끝점을 클릭합니다.
- 개발 Kubernetes 클러스터용 끝점을 생성합니다.
- 운영 Kubernetes 클러스터용 끝점을 생성합니다.Kubernetes 클러스터의 URL은 포트 번호를 포함하거나 포함하지 않을 수 있습니다.예를 들면 다음과 같습니다.https://10.111.222.333:6443https://api.kubernetesserver.fa2c1d78-9f00-4e30-8268-4ab81862080d.k8s-user.com
- 애플리케이션의 컨테이너(예: Wordpress)를 개발 Kubernetes 클러스터에 배포하는 파이프라인을 생성하고 파이프라인의 입력 속성을 설정합니다.
- 파이프라인을 트리거할 커밋 코드를 파이프라인이 GitHub에서 인식할 수 있게 하려면 파이프라인에서입력탭을 클릭하고속성 자동 삽입을 선택합니다.
- GIT_COMMIT_ID라는 속성을 추가하고 옆에 있는 별 모양을 클릭합니다.파이프라인 실행 시 Git 트리거가 반환하는 커밋 ID가 표시됩니다.
- 파이프라인 성공 또는 실패 시 이메일을 전송하는 알림을 추가합니다.
- 파이프라인에서알림탭을 클릭하고추가를 클릭합니다.
- 파이프라인 실행이 완료되었을 때 이에 대한 이메일 알림을 추가하려면이메일을 선택한 후완료를 선택합니다. 그런 다음 이메일 서버를 선택하고 이메일 주소를 입력한 후저장을 클릭합니다.
- 파이프라인 실패에 대한 또 다른 이메일 알림을 추가하려면실패를 선택하고저장을 클릭합니다.
- 파이프라인에 개발 단계를 추가하고, 애플리케이션을 구축, 테스트 및 게시하는 작업을 추가합니다. 그런 다음 각 작업을 검증합니다.
- 애플리케이션을 구축하려면 Jenkins 끝점을 사용하고 Jenkins 서버에서 구축 작업을 실행하는 Jenkins 작업을 추가합니다. 그런 다음 파이프라인이 코드를 풀할 수 있도록${input.GIT_BRANCH_NAME}형식으로 Git 분기를 입력합니다.
- 애플리케이션을 테스트하려면 동일한 Jenkins 끝점을 사용하고 Jenkins 서버에서 테스트 작업을 실행하는 Jenkins 작업을 추가합니다. 그런 다음 동일한 Git 분기를 입력합니다.
- 애플리케이션을 게시하려면 동일한 Jenkins 끝점을 사용하고 Jenkins 서버에서 게시 작업을 실행하는 Jenkins 작업을 추가합니다. 그런 다음 동일한 Git 분기를 입력합니다.
- 파이프라인에 배포 단계를 추가한 다음 애플리케이션 배포에 대한 승인을 요청하는 작업과 Kubernetes 클러스터에 애플리케이션을 배포하는 또 다른 작업을 추가합니다. 그런 다음 각 작업을 검증합니다.
- 애플리케이션 배포에 대한 승인을 요청하려면 '사용자 작업' 작업을 추가하고, 승인을 해야 하는 사용자의 이메일 주소를 추가한 다음 메시지를 입력합니다. 그런 다음이메일 보내기를 사용하도록 설정합니다.
- 애플리케이션을 배포하려면 Kubernetes 작업을 추가합니다. 그런 다음 Kubernetes 작업 속성에서 개발 Kubernetes 클러스터를 선택하고생성작업을 선택한 다음로컬 정의페이로드 소스를 선택합니다. 그런 다음 로컬 YAML 파일을 선택합니다.
- Automation Pipelines이 Git 트리거를 사용하도록 하는 Git Webhook를 추가합니다. Git Webhook는 개발자가 코드를 커밋하면 파이프라인을 트리거합니다.
- 파이프라인을 테스트하려면 GitHub 저장소로 이동하여 애플리케이션 YAML 파일을 업데이트한 다음 변경 내용을 커밋합니다.
- Automation Pipelines에 커밋이 표시되는지 확인합니다.
- 파이프라인 트리거를 찾아봅니다.
- 파이프라인 대시보드의 최근에 성공한 변경 내용 영역에서 GIT_COMMIT_ID를 찾습니다.
- 파이프라인 코드를 확인하고, 변경 내용이 표시되는지 확인합니다.
축하합니다! Kubernetes 클러스터에 소프트웨어 애플리케이션의 배포를 자동화했습니다.
Kubernetes 클러스터에 애플리케이션을 배포하는 예시 파이프라인 YAML
이 예시에 사용된 파이프라인 유형의 경우 YAML은 다음 코드와 유사합니다.
apiVersion: v1 kind: Namespace metadata: name: ${input.GIT_BRANCH_NAME} namespace: ${input.GIT_BRANCH_NAME} --- apiVersion: v1 data: .dockercfg: eyJzeW1waG9ueS10YW5nby1iZXRhMi5qZnJvZy5pbyI6eyJ1c2VybmFtZSI6InRhbmdvLWJldGEyIiwicGFzc3dvcmQiOiJhRGstcmVOLW1UQi1IejciLCJlbWFpbCI6InRhbmdvLWJldGEyQHZtd2FyZS5jb20iLCJhdXRoIjoiZEdGdVoyOHRZbVYwWVRJNllVUnJMWEpsVGkxdFZFSXRTSG8zIn19 kind: Secret metadata: name: jfrog namespace: ${input.GIT_BRANCH_NAME} type: kubernetes.io/dockercfg --- apiVersion: v1 kind: Service metadata: name: pipelines namespace: ${input.GIT_BRANCH_NAME} labels: app: pipelines spec: ports: - port: 80 selector: app: pipelines tier: frontend type: LoadBalancer --- apiVersion: extensions/v1 kind: Deployment metadata: name: pipelines namespace: ${input.GIT_BRANCH_NAME} labels: app: pipelines spec: selector: matchLabels: app: pipelines tier: frontend strategy: type: Recreate template: metadata: labels: app: pipelines tier: frontend spec: containers: - name: pipelines image: cas.jfrog.io/pipelines:${input.GIT_BRANCH_NAME}-${Dev.PublishApp.output.jobId} ports: - containerPort: 80 name: pipelines imagePullSecrets: - name: jfrog
소프트웨어 애플리케이션을 운영 Kubernetes 클러스터에 배포하려면 위의 단계를 다시 수행하면서 운영 클러스터를 선택하십시오.
Automation Pipelines
과 Jenkins의 통합에 대한 자세한 내용은 Automation Pipelines과 Jenkins를 통합하는 방법 항목을 참조하십시오.