Code Stream 관리자 또는 개발자는 Code Stream 및 VMware Tanzu Kubernetes Grid Integrated Edition(이전 이름: VMware Enterprise PKS)을 사용하여 소프트웨어 애플리케이션 배포를 Kubernetes 클러스터로 자동화할 수 있습니다. 이 사용 사례에서는 애플리케이션의 릴리스를 자동화하는 데 사용할 수 있는 다른 방법을 설명합니다.
이 사용 사례에서는 두 단계가 포함된 파이프라인을 생성하고 Jenkins를 사용하여 애플리케이션을 구축하고 배포합니다.
- 첫 번째 단계는 개발을 위한 단계입니다. 이 단계에서는 Jenkins를 사용하여 코드를 GitHub 저장소의 분기에서 풀한 후 구축하고 테스트하고 게시합니다.
- 두 번째 단계는 배포를 위한 단계입니다. 이 단계에서는 파이프라인이 애플리케이션을 Kubernetes 클러스터에 배포할 수 있도록 주요 사용자의 승인이 필요한 사용자 작업을 실행합니다.
파이프라인 업무 공간에서 Kubernetes API 끝점을 사용하는 경우 Code Stream은 CI(지속적 통합) 작업 또는 사용자 지정 작업을 실행하는 데 필요한 Kubernetes 리소스(예: ConfigMap, Secret 및 포드)를 생성합니다. Code Stream은 NodePort를 사용하여 컨테이너와 통신합니다.
파이프라인 실행 간에 데이터를 공유하려면 영구 볼륨 할당을 제공해야 합니다. 그러면 Code Stream은 영구 볼륨 할당을 컨테이너에 마운트하여 데이터를 저장하고 후속 파이프라인 실행에 사용합니다.
Code Stream 파이프라인 업무 공간은 지속적 통합 작업 및 사용자 지정 작업을 위해 Docker 및 Kubernetes를 지원합니다.
업무 공간 구성에 대한 자세한 내용은 파이프라인 작업 공간 구성에서 참조하십시오.
파이프라인이 애플리케이션 구축, 테스트, 게시 및 배포를 수행할 수 있도록 개발 도구, 배포 인스턴스 및 파이프라인 YAML 파일이 준비되어 있어야 합니다. 파이프라인은 Kubernetes 클러스터의 개발 및 운영 인스턴스에 애플리케이션을 배포합니다.
애플리케이션 릴리스를 자동화하는 기타 방법:
- Jenkins를 사용하여 애플리케이션을 구축하는 대신 Code Stream 기본 빌드 기능 및 Docker 빌드 호스트를 사용할 수 있습니다.
- 애플리케이션을 Kubernetes 클러스터에 배포하는 대신 AWS(Amazon Web Services) 클러스터에 배포할 수 있습니다.
Code Stream 기본 구축 기능 및 Docker 호스트 사용에 대한 자세한 내용은 다음을 참조하십시오.
사전 요구 사항
- 배포할 애플리케이션 코드가 작동하는 GitHub 저장소에 있는지 확인합니다.
- 작동하는 Jenkins 인스턴스가 있는지 확인합니다.
- 작동하는 이메일 서버가 있는지 확인합니다.
- 이메일 서버에 연결하는 이메일 끝점을 Code Stream에서 생성합니다.
- 파이프라인이 애플리케이션을 배포할 Kubernetes 클러스터 2개(개발 및 운영)를 AWS(Amazon Web Services)에 설정합니다.
- GitHub 저장소에 파이프라인의 YAML 코드가 포함되어 있는지, 또는 환경의 메타데이터와 규격을 정의하는 YAML 파일이 포함되어 있는지 확인합니다.
프로시저
결과
축하합니다! 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: codestream namespace: ${input.GIT_BRANCH_NAME} labels: app: codestream spec: ports: - port: 80 selector: app: codestream tier: frontend type: LoadBalancer --- apiVersion: extensions/v1 kind: Deployment metadata: name: codestream namespace: ${input.GIT_BRANCH_NAME} labels: app: codestream spec: selector: matchLabels: app: codestream tier: frontend strategy: type: Recreate template: metadata: labels: app: codestream tier: frontend spec: containers: - name: codestream image: cas.jfrog.io/codestream:${input.GIT_BRANCH_NAME}-${Dev.PublishApp.output.jobId} ports: - containerPort: 80 name: codestream imagePullSecrets: - name: jfrog
다음에 수행할 작업
소프트웨어 애플리케이션을 운영 Kubernetes 클러스터에 배포하려면 위의 단계를 다시 수행하면서 운영 클러스터를 선택하십시오.
Code Stream과 Jenkins의 통합에 대한 자세한 내용은 Code Stream과 Jenkins를 통합하는 방법 항목을 참조하십시오.