Introduction to deployments
- 단일 환경 또는 지역으로 제한된 배포에서는 다양한 비즈니스 및 기술 문제가 발생할 수 있음
- 최대 리소스 문제
- 제한적 지리적 범위 문제
- 제한된 가용성 문제
- 공급업체 종속 문제
- 유연하지 않은 리소스 문제
- 이기종 배포는 일반적으로 특정 기술 또는 운영 요구 사항을 해결하기 위해 둘 이상의 별개의 인프라 환경 또는 지역을 연결
이를 위해 프로그래밍 방식의 결정론적 프로세스와 절차를 사용해 설계해야 함
- 다중 클라우드 배포
- 온프레미스 데이터 프론팅
- CI/CD 프로세스
Get the sample code for this lab
- 기본 컴퓨팅 영역 설정
- 컨테이너 및 배포를 만들고 실행하기 위한 샘플 코드 가져오기
- 5개의 노드가 있는 클러스터 생성
Learn about the deployment object
- 배포 개체 살펴보기
- 옵션을 사용해 배포 모든 필드 살펴보기
- 옵션을 사용해 배포 개체의 구조 이해하기
Create a deployment
- auth 배포 구성 파일 업데이트
vi 편집기를 사용하며 i를 눌러 컨테이너 섹션의 이미지를 변경한 후 Esc를 누르고 :wq를 눌러 파일 저장
- auth 배포 구성 파일 검사
배포 구성 파일을 살펴보면 배포에서 하나의 복제본을 생성하고 auth 컨테이너 버전 1.0.0을 사용하는 것을 볼 수 있음
또한 replicas 필드에 지정된 수를 변경하여 포드 수를 확장할 수 있음
- auth 배포 개체 생성
- auth 배포 개체 생성 확인
- auth 배포용 ReplicaSet 생성
- auth 배포의 일부로 생성된 포드 확인
ReplicaSet이 생성될 때 Kubernetes에 의해 단일 포드가 생성됨
- auth 배포를 위한 서비스 생성
- hello 배포 개체와 서비스 생성
- frontend 배포 개체와 서비스 생성
frontend 배포 개체의 경우 frontend에 대한 ConfigMap도 생성
- 외부 IP를 파악하여 컬링하여 frontend와 상호 작용
출력 템플릿 기능을 사용해 curl을 한 줄짜리로도 만들 수 있음
- 배포를 확장하기 위한 spec.replicas 필드를 살펴보기
- 복제본 필드 업데이트하기
배포가 업데이트되면 Kubernetes는 연결된 ReplicaSet을 자동으로 업데이트하고 새 포드를 시작해 총 포드 수를 5로 만듦
- 5개의 hello 포드가 실행 중인지 확인
- hello 복제본을 축소
- 3개의 hello 포드가 실행 중인지 확인
Rolling update
- 배포는 롤링 업데이트 매커니즘을 통해 이미지를 새 버전으로 업데이트하는 것을 지원
- Deployment가 새 버전으로 업데이트되면 새 ReplicaSet을 생성하고
이전 ReplicaSet의 복제본이 감소함에 따라 새 ReplicaSet의 복제본 수를 천천히 늘림
- hello 배포 업데이트하기 위해 편집하여 hello 배포 컨테이너 섹션에서 이미지를 변경하고 저장하기
편집기에서 저장하면 업데이트된 배포가 클러스터에 저장되고 Kubernetes가 롤링 업데이트를 시작
- Kubernetes가 생성하는 새로운 ReplicaSet 참조하기
- 출시 기록에서 새 복제본 항목 보기
- 실행 중인 롤아웃에서 문제가 감지되면 일시 중지하여 업데이트 중지하기
- 출시 기록에서 현재 상태 확인
- 포드에서 현재 상태 직접 확인
- 롤아웃 계속하기
롤아웃이 일시 중지되어 일부 포드는 새 버전이고 일부 포드는 이전 버전이므로 명령하여 롤아웃을 계속하기
- 새 버전에서 버그가 감지되었을 때 조사한 다음 제대로 수정된 버전을 릴리즈하기 위해 이전 버전으로 롤백하기
- 기록에서 롤백 확인
- 모든 포드가 이전으로 롤백되었는지 확인하기
Canary deployments
- 사용자의 하위 집합을 사용해 프로덕션에서 새 배포를 테스트하려는 경우 카나리아 배포를 사용
- 카나리아 배포를 사용하면 소규모 사용자 하위 집합에 대한 변경 사항을 릴리즈하여 새 릴리즈와 관련된 위험을 완화
- 카나리아 배포는 새 버전이 포함된 별도의 배포, 정상적인 안정적인 배포, 카나리아 배포를 모두 대상으로 하는 서비스로 구성
- 새 버전에 대한 새 카나리아 배포 검사
- 카나리리 배포 생성
- 카나리아 배포 생성 확인
- 카나리아 배포 확인
일부 요청이 hello 1.0.0에서 제공되는 작은 하위 집합이 2.0.0에서 제공되는 것을 볼 수 있음
Blue-green deployments
- 새 버전이 완전히 배포된 후에만 해당 새 버전을 가리키도록 로드 밸런서를 수정할 때 블루-그린 배포를 사용
- Kubernetes는 두 개의 개별 배포를 생성해 하나는 이전 파란색 버전용이고 하나는 새 그린 버전용
파란색 버전에 대한 기본 배포를 사용하고 배포는 라우터 역할을 하는 서비스를 통해 액세스함
새로운 그린 버전이 실행되고 나면 서비스를 업데이트하여 해당 버전을 사용하도록 전환
- 기존은 블루 배포와 일치하도록 서비스 업데이트
- 새 버전에 대한 새로운 그린 배포 검사
그린 배포는 버전 레이블과 이미지 경로를 업데이트하는 것을 볼 수 있음
- 그린 배포 생성
- 그린 배포가 생성되면 현재 버전 1.0.0이 여전히 사용 중인지 확인
- 새 버전을 가리키도록 서비스 업데이트
- 그린 배포를 사용하는지 확인
- 블루 배포를 가리키도록 서비스 업데이트
블루 배포가 계속 실행되는 동안에는 서비스를 이전 버전으로 롤백할 수 있음
- 롤백 성공 확인
올바른 버전인 블루 배포가 사용 중인지 확인
'Cloud > GCP' 카테고리의 다른 글
[Cloud Skills Boost] Kubernetes in Google Cloud - 목차 (0) | 2022.07.08 |
---|---|
[Cloud Skills Boost] Kubernetes Engine에서 Jenkins로 지속적 배포 (0) | 2022.07.08 |
[Cloud Skills Boost] Kubernetes를 통한 클라우드 조정 (0) | 2022.07.05 |
[Cloud Skills Boost] Kubernetes Engine (0) | 2022.07.02 |
[Cloud Skills Boost] Docker 소개 (0) | 2022.07.01 |