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