📂
Amazon EKS
  • Amazon EKS
  • 워크스페이스 생성하기
    • Cloud9 IDE 환경 구성
    • IAM 역할 생성
    • SSH & CMK Key 생성하기
  • EKS 클러스터 구축
    • EKS 클러스터 만들기
  • 쿠버네티스 대시보드 배포
    • Kubernetes 공식 대시보드 배포
  • 마이크로서비스 배포
    • 예제 애플리케이션 배포
    • 서비스 스케일(Scaling)
    • 애플리케이션 정리하기
  • 애플리케이션 배포 - Helm
    • HELM 설치
    • Helm으로 Nginx 배포
    • Helm을 사용하여 마이크로서비스 배포
    • 정리하기
  • 리소스 관리 - POD 배치
    • NodeSelector
    • Affinity and Anti-affinity
    • 더 실용적인 사용 사례
    • 정리하기
  • 리소스 관리 - Health Checks
    • Liveness 프로브 구성
    • Readiness 프로브 구성
    • 정리하기
  • 리소스 관리 - AutoScaling
    • HPA 구성하기
    • CA 구성하기
    • 정리하기
  • 네트워킹 - 서비스 노출
    • 서비스와 애플리케이션 연결
    • 서비스에 접근하기
    • 서비스 노출
    • Ingress
    • Ingress Controller
    • 정리하기
  • 네트워크 - Calico 정책
    • Calico 설치하기
    • Stars Policy Demo
    • 정리하기
  • Updating 권한설정 - RBAC
    • 테스트 POD 설치
    • 사용자 생성 및 맵핑
    • 역할과 바인딩
    • 정리하기
  • Updating 권한설정 - IAM 그룹
    • IAM Role, Group & User 생성하기
    • RBAC 설정하기
    • EKS 엑세스 테스트
    • 정리하기
  • Updating 권한설정 - Service account
    • OIDC 자격 증명 공급자 생성하기
    • IAM 역할 생성 및 지정
    • 샘플 POD 배포
    • 정리하기
  • Updating - 네트워크 - POD Security Group
    • SG 생성하기
    • RDS 생성하기
    • CNI 구성하기
    • SG 정책
    • Pod 배포하기
    • 정리하기
  • Updating - 모니터링 - Prometheus and Grafana
    • Prometheus 배포하기
    • Grafana 배포하기
    • 정리하기(Optional)
  • Updating 모니터링 - X-Ray
    • X-Ray DaemonSet 배포하기
    • 샘플 마이크로서비스 배포
    • X-Ray console 확인
    • 정리하기(Optional)
  • Updating 모니터링 - Container Insights
    • 사전 준비
    • Container Insights 구성하기
    • 부하 테스트
    • Container Insights 확인하기
    • 정리하기(Optional)
  • Updating CD - Gitops with Flux
    • 사전 준비
    • Codepipeline
    • EKS에 배포
    • 정리하기
  • Updating Argo Rollouts
  • Updating Service Mesh - AWS App Mesh
    • Fargate 및 OBSERVABILITY 구성
    • Product Catalog App 배포
    • APP MESH 설치
    • Porting to APP MESH
    • Virtual Gateway 구성
    • Canary
    • Observability
  • Updating 버전 업그레이드 - EKS Cluster
    • Upgrade EKS control Plane
    • Upgrade EKS CORE ADD-ONs
    • Upgrade Managed Node Group
Powered by GitBook
On this page

Was this helpful?

  1. Updating Service Mesh - AWS App Mesh

APP MESH 설치

PreviousProduct Catalog App 배포NextPorting to APP MESH

Last updated 3 years ago

Was this helpful?

이 실습은 오픈 소스 를 설치하고 사용하는 과정을 안내합니다. AWS App Mesh Controller for K8s는 Kubernetes 클러스터에 대한 리소스를 관리하고 Kubernetes Pod에 사이드카를 주입하는 데 도움이 되는 컨트롤러입니다.

컨트롤러는 Mesh, VirtualNode, VirtualService, VirtualRouter, VirtualGateway 및 GatewayRoute와 같은 CRD(사용자 지정 리소스)를 유지관리합니다. App Mesh 컨트롤러를 사용할 때 service 및 deployment와 같은 기본 Kubernetes 리소스를 관리하는 것과 동일한 방법으로 Kubernetes API를 통해 VirtualService 및 VirtualNode와 같은 App Mesh 사용자 지정 리소스를 관리합니다.

컨트롤러는 Kubernetes 개체를 모니터링하며 App Mesh 리소스가 생성되거나 변경될 때 이러한 변경 사항을 AWS App Mesh에 반영합니다. App Mesh 리소스 사양은 App Mesh 컨트롤러 프로젝트에서 제공하는 CRD(사용자 지정 리소스 정의)를 사용하여 수행됩니다. 이러한 사용자 지정 리소스는 아래 App Mesh API 개체에 매핑됩니다.

어플리케이션의 Pod가 Mesh에 연결되려면 오픈 소스 프록시 컨테이너가 포드 내에 사이드카 컨테이너로 실행되어야 합니다. 이렇게 하면 AWS App Mesh가 제어하는 데이터 영역이 설정됩니다. 따라서 Product Catalog App 배포의 각 포드 내에서 Emply 컨테이너를 실행해야 합니다. App Mesh는 기본 마이크로서비스로의 모든 ingress 와 egress 트래픽에 대한 Envoy sidecar 컨테이너를 사용합니다.

컨트롤러는 애플리케이션 포드에 Envoy 프록시 컨테이너를 만들고 주입하는 것과 같은 일상적인 App Mesh 작업을 처리합니다. 자동 sidecar injection 은 네임스페이스 단위로 webhook를 활성화함으로써 제어됩니다.

제품 카탈로그 애플리케이션 서비스는 아래 App Mesh 구성을 사용하며, 이를 생성하는 방법에 대해 자세히 알아보겠습니다.

1. App Mesh 설치

EKS Charts 레포지토리를 추가하여 AWS App Mesh를 설치합니다.

helm repo add eks https://aws.github.io/eks-charts

네임스페이스 appmesh-system 을 생성하고 OIDC 와 IRSA(IAM for Service Account) 를 생성합니다.

# Create the namespace
kubectl create ns appmesh-system

# Install the App Mesh CRDs
kubectl apply -k "github.com/aws/eks-charts/stable/appmesh-controller//crds?ref=master"

# Create your OIDC identity provider for the cluster
eksctl utils associate-iam-oidc-provider \
  --cluster eksworkshop-eksctl \
  --approve

# Download the IAM policy for AWS App Mesh Kubernetes Controller
curl -o controller-iam-policy.json https://raw.githubusercontent.com/aws/aws-app-mesh-controller-for-k8s/master/config/iam/controller-iam-policy.json

# Create an IAM policy called AWSAppMeshK8sControllerIAMPolicy
aws iam create-policy \
    --policy-name AWSAppMeshK8sControllerIAMPolicy \
    --policy-document file://controller-iam-policy.json

# Create an IAM role for the appmesh-controller service account
eksctl create iamserviceaccount --cluster eksworkshop-eksctl \
    --namespace appmesh-system \
    --name appmesh-controller \
    --attach-policy-arn arn:aws:iam::$ACCOUNT_ID:policy/AWSAppMeshK8sControllerIAMPolicy  \
    --override-existing-serviceaccounts \
    --approve

App Mesh 컨트롤러를 appmesh-system 네임스페이스에 설치합니다.

helm upgrade -i appmesh-controller eks/appmesh-controller \
    --namespace appmesh-system \
    --set region=$AWS_REGION \
    --set serviceAccount.create=false \
    --set serviceAccount.name=appmesh-controller \
    --set tracing.enabled=true \
    --set tracing.provider=x-ray

Controller 버전이 v1.0.0 이상인지 확인합니다.

kubectl get deployment appmesh-controller \
    -n appmesh-system \
    -o json  | jq -r ".spec.template.spec.containers[].image" | cut -f2 -d ':'

App Mesh의 모든 CRD가 생성되었는지 확인합니다.

kubectl get crds | grep appmesh

모든 리소스가 appmesh-system 네임스페이스 내에 생성되었는지 확인합니다.

kubectl -n appmesh-system get all          

App Mesh를 설치하기 위해서 가 설치되어 있어야 합니다.

AWS App Mesh Controller for Kubernetes
AWS App Mesh
Mesh
VirtualService
VirtualNode
VirtualRouter
VirtualGateway
GatewayRoute
Envoy
Helm Chart