쿠버네티스 클러스터로 어플리케이션을 배포하는 방법을 정리
- https://rancher.com/docs/rancher/v2.6/en/quick-start-guide/workload/
- 쿠버네티스 클러스터에 배포하는 방법은 2.5 이전 버전까지는 Multi-cluster Apps(다중 클러스터 애플) 이 사용 되었으나 이후 버전부터는 Fleet 을 사용하여 배포됨
- GitOps 의 개념에 대해 알아보고 Rnacher 와 Gitlab 을 통한 CI/CD 를 수행함
- Fleet 을 통해 다중 클러스터에 앱을 배포하는 방법을 알아봄
- https://rancher.com/docs/rancher/v2.6/en/deploy-across-clusters/fleet/
- https://fleet.rancher.io/
Rancher 공식 Doc 에서는 Ingress 방식과 NodePort 방식 2가지 배포 방법을 지원한다.
- NodePort:NodePort 서비스는 서비스에 외부 트래픽을 직접 보낼 수 있는 가장 원시적인(primitive) 방법이다. 이름에서 암시하듯이, NodePort는 모든 Node(VM)에 특정 포트를 열어 두고, 이 포트로 보내지는 모든 트래픽을 서비스로 포워딩한다.
- Ingress: 위의 예와는 다르게, Ingress는 서비스의 한 종류가 아니다. 여러 서비스들 앞에서 “스마트 라우터(smart router)” 역할을 하거나 클러스터의 진입점(entrypoint) 역할을 한다.
여러 능력을 가진 Ingress 컨트롤러 타입이 있어서, Ingress 하나만으로 여러 가지 일을 할 수 있다.
워크로드란? 애플리케이션을 배포하는 데 필요한 다른 파일 및 정보와 함께 포드를 포함하는 개체
Rancher hello world 를 배포하는 워크로드를 수행
응용프로그램이 실행되고 다른 서비스가 연결 될 수 있도록 노출
Cluster Management 메뉴 진입하여 대상 cluster 의 explore 버튼 click
Cluster > Projects/Namespaces 메뉴로 진입하여 default project 선택
Deployments 생성 후 Deployments 내의 pod 를 온전한 서비스로 이용하기 위해서는 포드를 외부로 노출해서 사용자들이 접근하거나 다른 디플로이먼트의 포드들이 내부적으로 접근하게 해야 하는데 이것을 가능하게 하는 것이 서비스라고 불리우는 쿠버네티스의 오브젝트 이다.
서비스는 고유의 도메인 이름을 부여하고 여러개의 포드에 접근할 때 요청을 분산하는 Load Balancer 기능을 수행, 클라우드 플랫폼의 로드 밸런서, 클러스터 노드의 포트 등을 통해 포드를 외부로 노출.
kubernets 서비스
사용자가 생성하지 않아도 기본적으로 생성되는 서비스로 포드 내부에서 쿠버네티스의 API 접근하기 위한 서비스
서비스의 종류
ClusterIP 쿠버네티스 내부에서만 포드들에 접근할 때 사용. 외부로 포들르 노출하지 않기 때문에 쿠버네티스 클러스터 내부에서만 사용되는 포드에 적합
Nodeport 포드에 접근할 수 있는 포트를 클러스터의 모든 노드에 동일하게 개방. 외부에서 포드에 접근할 수 있는 서비스 타입. 접근 가능한 포트를 랜덤이지만 특정 포트로 접근 가능하도록 설정 가능
Load Balancing 클라우드 플랫폼에서 제공하는 로드 밸런서를 동적으로 프로비저닝해 포드에 연결. NodePort 타입과 마찬가지로 외부에서 포드에 접근할 수 있는 서비스 타입. 일반적으로 AWS, GCP 등과 같은 클라우드 플랫폼 환경에서만 사용 가능
Ingress Object
참고자료