본문 바로가기

VMware TANZU/TKG: Tanzu Kubernetes Grid

Contour L7 Ingress 환경 설정

Kubernetes를 배포하고 운영을 위해서는 Kubernetes networking 요소를 사용하게 됩니다.

 

우리는 기존에 Network TEAM이 존재하고, 이러한 팀을 통해서 Load Balancer(LB)에 대한 L4-L7레이어 트래픽 처리를 위해서 의존 하였습니다.

 

그러나, Kubernetes로 환경으로 전환은 이러한 팀 간의 의존도를 줄이고, 클라우드 운영자 및 개발자의 참여로 즉시 모든 영역에서 애플리케이션이 서비스될 수 있는 형태로 진화 하였습니다.

 

이에 따라서 Kubernetes는 L4 Load Balancer Service와 L7 Ingress Service로 2가지 타입을 분리함으로서 각 마이크로 서비스 구간에 대한 패킷 흐름을 제어하고 있습니다.

 

VMware Tanzu Kubernetes Grid에는 Contour Controller 패키지를 포함하고 있으며, 이 패키지는 Envoy Proxy를 배포하고 구성 제어를 제공하고 있습니다.

 

Contour는 VMware에서 기여하는 공개된 오픈 소스이며, vmware TKG를 사용하지 않더라도 누구나 어떤 Kubernetes platform에서도 이용할 수 있습니다.

 

Contour homepage: https://projectcontour.io/getting-started/

 

Getting Started with Contour

Getting Started with Contour This guide shows how to install Contour in three different ways: using Contour’s example YAMLusing the Helm chart for Contourusing the Contour gateway provisioner (alpha) It then shows how to deploy a sample workload and rout

projectcontour.io

 

Contour는 앞서 언급한 것과 같이 Envoy를 제어하는 controller 입니다. Envoy는 최근 각광 받는 L7 Proxy로서 많은 개발자들이 채택하고 있는 강력한 기능을 지닌 오픈소스 입니다.

 

참조: Contour Architecture

 

 

Envoy는 Service Mesh를 구현할 때에도 유용하게 사용되고 있으나, Contour에서 Service Mesh는 목표가 아니며, 전통적인 미들웨어 역방향 프록시입니다.

 

VMware TKG에서의 Contour 배포는 TKG에서 제공하고 있는 패키지 방식을 사용하게 됩니다. 이러한 패키지는 버전 관리에 용이하며, app 개념으로 배포됨으로서 관리 및 패치를 더욱 용이하게 제공을 하고 있습니다.

 

VMware TKG 1.6 에서의 Ingress control로서의 Contour 배포는 아래 공식 URL을 통해서 확인할 수 있습니다.

https://docs.vmware.com/en/VMware-Tanzu-Kubernetes-Grid/1.6/vmware-tanzu-kubernetes-grid-16/GUID-packages-ingress-contour.html

 

Implement Ingress Control with Contour

 

docs.vmware.com

 

 

Contour 배포에 있어서 설치 전에 사전 환경 파일을 아래와 같은 옵션을 명령줄에 함께 기재하여 정의 할 수 있습니다.

--values-file contour-default-values.yaml

 

공식 페이지를 통해서 해당 contour-default-values.yaml의 설정을 확인할 수 있습니다.

Enovy를 제어하기 위한 일부 환경 값들에 대해서 "configFileContents: {}" 항목을 통해서 정의 할 수 있습니다.

 

예를 들어 아래와 같이 configFileContents: 항목 아래로 yaml 형식에 맞게 요구되는 옵션을 지정합니다.

아래 캡처 화면의 경우 ingress session에 대한 timeout과 x-forward-for에 대한 trusted-hops 수를 변경하는 설정입니다.

 

Contour homepage에서 configuration file에 설정 되는 환경 값에 대해서 확인할 수 있으며, 해당 

https://projectcontour.io/docs/v1.22.1/configuration/

 

Documentation

Contour Configuration Reference Overview There are various ways to configure Contour, flags, the configuration file, as well as environment variables. Contour has a precedence of configuration for contour serve, meaning anything configured in the config fi

projectcontour.io

 

이미 배포된 Contour에 대해서 수정이 필요할 경우에는 해당 configmap을 수정한 후, 해당 namespace의 deployment의 Contour에 대해서 rollout upgrade를 진행합니다.

kubectl get configmap -n tanzu-system-ingress

# Edit configmap of contour
kubectl edit configmap contour -n tanzu-system-ingress

# Restart deployment of contour
kubectl -n tanzu-system-ingress rollout restart deploy/contour

 

 

배포된 configmap 혹은 사전 환경 값 정의 시 아래 캡쳐된 화면과 같이 contour page에 나와 있는 example yaml 파일을 참고할 수 있습니다.

환경설정 yaml 예제

 

VMware는 TANZU 솔루션을 2020년 초 발표를 하면서 지속적인 기업에서 요구 되는 Kubernetes 환경을 더욱 신속하게 배포하고, 인프라팀이 버전 업데이트 및 패치 관리를 할 수 있도록 수명 관리를 지원하고 있습니다.

이렇게 함으로서 궁극적으로 개발자는 업스트림 쿠버네티스인 TKG를 통한 필요할 경우 자유로운 운영 도구를 설치하여 이용할 수 있음으로 종속성 없는 환경을 통한 앱 개발을 가속화 할 수 있으며, 인프라팀은 보다 쉽게 개발자와 프로덕션 서비스 영역으로 어느 지역에 상관 없이  Kubernetes Cluster를 배포하고, 운영 관리를 할 수 있는 이점을 가지게 됩니다.

 

이는 Tanzu Mission Control(SaaS) UI를 통해서 멀티 클라우드 환경에서의 Kubernetes 클러스터 운영을 보다 쉽게 관리할 수 있도록 제공하여, 클러스터의 수명 주기 관리, 사용자 인증 및 권한 설정, 이미지 스캐닝, 백업 프로세스, 보안 정책 설정등을 보다 쉽게 제공합니다.

 

아래 그림은 Tanzu 솔루션의 K8s runtime 실행 영역으로 Tanzu Kubernetes Grid(TKG)를 나타내고 있습니다.

플랫폼 운영자는 CLI 도구를 이용하여 선언문을 통한 K8s cluster를 Management Cluster와 다수의 Workload Cluster로 분리하여, 개발자 혹은 부서, 서비스 단위로 배포할 수 있습니다. 물론 Management Cluster를 기준으로 분리를 통한 Tenant 형태의 서비스를 가져갈수도 있습니다. 이렇게 함으로서 서로 다른 L4/L7 인입 트래픽을 처리할 수 있도록 제공하여 외부로 노출되는 IP 서비스 영역을 분리시킬 수도 있습니다.

 

VMware TKG는 Tanzu Basic과 Tanzu Standard Edition를 통해서 쉽게 접근할 수 있으며, Multi Cloud 환경으로서 AWS 혹은 Azure를 통한 배포를 하거나, 이미 기존 vSphere 고객은 해당 플랫폼에 배포를 실행할 수 있습니다.

TKG는 다양한 플랫폼 운영에 필요한 오픈소스 도구를 패키지화 하여, 플랫폼 운영자가 시작 단계에서 명령줄을 통한 자동화된 설치를 제공하고 있음으로 추가적인 복잡한 작업 없이 플랫폼별 표준화된 운영 도구를 구성하여 플랫폼 관리에 도움을 제공받을 수 있습니다.

 

여기에는 네트워킹 연결을 위한 Antrea, 메트릭 수집 및 가시화를 위한 프로메테우스 및 그라파나, Container Registry를 Harbor로 cluster내 제공하며, L4 서비스를 위한 NSX Advanced LB(구 Avi)를 TKG용 Free license edition 구성을 통해서 제공, L7 Ingress를 Envoy를 제어하는 Contour controller로 함께 제공, 사용자 인증을 위한 pinniped, 백업 복구를 위한 Velero, ExternalDNS 서비스 등과 같이 플랫폼 운영을 위한 필수 도구를 오픈소스 패키지로 사전 환경 설정을 통해서 제공하며, 필요에 따라 사용자는 선택적 소비를 하거나, 환경 값을 변경할 수 있습니다.

Tanzu Standard Edition에서 위 오픈 소스 도구들에 대한 문제 해결 혹은 버전에 대한 기술 지원을 VMware 기술 지원 서비스 조직에서 제공하고 있습니다. 또한, Standard Edition에는 보안 정책 수립등의 몇 기능을 제외한 플랫폼 운영 관리를 위한 Tanzu Mission Control Standard를 함께 제공 받음으로서 SaaS UI를 통해서 보다 신속하게 플랫폼을 운영하고 가시성을 높일 수 있습니다.