이 주제에서는 인그레스 게이트웨이가 사전 설치된 상태로 제공되는 Cloud Service Mesh를 설치하는 방법을 보여줍니다. Cloud Service Mesh에서는 인그레스 컨트롤러가 필요한 경우 배포에 대해 Kubernetes 인그레스 리소스를 구성할 수 있습니다. 이 주제에서는 샘플 배포 및 인그레스 리소스를 구성하는 방법을 보여주는 예시를 제공합니다.
Cloud Service Mesh 설치는 다음 두 가지로 주요 단계로 구성됩니다.
- Cloud Service Mesh 고객 관리 컨트롤 플레인 및 인그레스 게이트웨이의 특정 버전 설치
- 네임스페이스에 버전 라벨로 라벨 지정 및 사이드카 프록시 삽입을 위해 워크로드 다시 배포
인그레스 컨트롤러를 사용하는 인그레스 객체만 필요한 경우에는 사이드카 프록시를 워크로드 포드에 삽입할 필요가 없습니다. 하지만 Cloud Service Mesh에서 제공하는 보안 이점이 필요하고 트래픽 라우팅 기능을 사용해야 할 경우에는 사이드카 프록시를 삽입해야 합니다.
시작하기 전에
GKE on AWS를 사용하기 전에 다음 작업을 수행했는지 확인합니다.
- 기본 요건을 완료합니다.
- 관리 서비스를 설치합니다.
- 사용자 클러스터를 만듭니다.
- Cloud Console을 사용하여 클러스터에 연결의 단계에 따라 Connect에 클러스터를 등록합니다.
- Google Cloud에서 워크로드 아이덴티티를 사용하도록 클러스터를 구성합니다.
사용자 클러스터가 인터넷으로의 아웃바운드 액세스를 제한한 경우 다음과 같은 컨테이너 저장소 도메인에 대한 액세스를 허용합니다.
docker.io
quay.io
anthos-aws
디렉터리에서anthos-gke
를 사용하여 컨텍스트를 사용자 클러스터로 전환합니다.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
CLUSTER_NAME을 사용자 클러스터 이름으로 바꿉니다.
Anthos Service Mesh 설치
Cloud Service Mesh 설치의 단계를 따릅니다.
예시 배포 만들기
이 섹션에서는 샘플 애플리케이션을 설치하고 이에 대해 인그레스 엔드포인트를 만듭니다.
hello-app
의 배포를 만들고 배포의 ClusterIP를 만듭니다. 다음 YAML을hello-app.yaml
파일에 복사합니다.apiVersion: apps/v1 kind: Deployment metadata: labels: app: hello-app name: hello-app spec: selector: matchLabels: app: hello-app replicas: 3 template: metadata: labels: app: hello-app spec: containers: - name: hello image: "gcr.io/google-samples/hello-app:2.0" --- apiVersion: v1 kind: Service metadata: labels: app: hello-app name: hello-app spec: type: ClusterIP selector: app: hello-app ports: - protocol: TCP port: 8080 targetPort: 8080
kubectl apply
로 클러스터에 YAML을 적용합니다.env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f hello-app.yaml
샘플 애플리케이션에 대해 Kubernetes 인그레스를 만듭니다. 다음 YAML을
hello-app-ingress.yaml
파일에 복사합니다.apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: istio labels: app: hello-app name: hello-app spec: rules: - host: http: paths: - backend: serviceName: hello-app servicePort: 8080
kubectl apply
로 구성을 적용하여 인그레스를 만듭니다.env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f hello-app-ingress.yaml
kubectl get svc
로 게이트웨이 상태를 확인합니다.env HTTPS_PROXY=http://localhost:8118 \ kubectl get ingress hello-app
ADDRESS
필드에는 ELB 도메인 이름이 있어야 합니다.ADDRESS
가pending
으로 유지되면 VPC 및 서브넷 라벨 지정을 확인합니다.호스트 및 포트를 조합하여 인그레스 게이트웨이 URL을 확인할 수 있습니다. 게이트웨이 URL을 가져오려면 다음 명령어를 실행합니다.
export INGRESS_URL=$(env HTTPS_PROXY=http://localhost:8118 \ kubectl get ingress hello-app -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') echo "Your hello-app Ingress URL is: http://"$INGRESS_URL
마지막 명령어는 인그레스의 엔드포인트를 출력합니다.
공개 인그레스를 만들었으면
http://$INGRESS_URL/
로 이동하여curl
에서hello-app
기본 웹페이지를 확인할 수 있습니다.curl $INGRESS_URL/
삭제
kubectl delete
를 사용하여 hello-app
구성요소를 삭제합니다.
env HTTPS_PROXY=http://localhost:8118 \
kubectl delete -f hello-app.yaml &&\
kubectl delete -f hello-app-ingress.yaml
Cloud Service Mesh를 삭제하려면 Cloud Service Mesh 제거를 참조하세요.
다음 단계
다음에 대해 자세히 알아보기