AWS EKS 안에서 LB (Service, Ingress) 생성 및 사용을 위해서는 LB Controller (LBC) 를 설치 해야 한다

 

→ 기본적으로 LBC 가 없어도 LB 생성은 가능하나, AWS 에서 제공하는 ALB 및 추가 옵션들을 사용하기 위해서는 LBC 가 있어야 한다.

→  AWS 에서는 EKS 에내장된 툴을 사용하여 LB 생성 및 사용을 권장하지 않고, 사용자가 LBC 를 설치해서 사용하는것을 권장 한다

 

순서 요약

1. EKS 에 대한 OIDC 생성

2. LBC 생성을 위한 IAM role, policy 생성

3. LBC Install

4. 설치 확인


상세 내용

 

1. EKS 에 대한 OIDC 생성

#export cluster name 수정
export cluster_name=my-cluster
oidc_id=$(aws eks describe-cluster --name $cluster_name --query "cluster.identity.oidc.issuer" --output text | cut -d '/' -f 5)


#OIDC 가 이미 존재 하는지 확인
aws iam list-open-id-connect-providers | grep $oidc_id | cut -d "/" -f4

#OIDC 생성
eksctl utils associate-iam-oidc-provider --cluster $cluster_name --approve

 

2. LBC 생성을 위한 IAM role, policy 생성

#정책 문서 다운로드
curl-O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.5.4/docs/install/iam_policy.json

#정책 생성
aws iam create-policy \
    --policy-name AWSLoadBalancerControllerIAMPolicy \
    --policy-document file://iam_policy.json
    
#Role 생성
#cluster 수정, attach-policy arn 수정
eksctl create iamserviceaccount \
  --cluster=my-cluster \
  --namespace=kube-system \
  --name=aws-load-balancer-controller \
  --role-name AmazonEKSLoadBalancerControllerRole \
  --attach-policy-arn=arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \
  --approve

3. LBC Install

#helm repo 추가 및 업데이트
helm repo add eks https://aws.github.io/eks-charts
helm repo update eks

#helm install
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
  -n kube-system \
  --set clusterName=my-cluster \
  --set serviceAccount.create=false \
  --set serviceAccount.name=aws-load-balancer-controller

4. 설치 확인

kubectl get deployment -n kube-system aws-load-balancer-controller

 

 

'AWS' 카테고리의 다른 글

EKS fargate 생성을 위한 설정  (0) 2023.12.18
AWS EC2 종료 Lambda with EventBridge  (0) 2023.11.28
AWS EC2/RDS Instance 정보 조회 Lambda 코드  (0) 2023.09.24
Route53 라우팅 정책  (0) 2023.08.05
AWS Route53 DNA Type  (0) 2023.07.22

AWS EC2 / RDS 의 인스턴스 정보를 조회하는 boto3 코드

  • 태그값을 지정하여 원하는 태그를 추출 가능

 

import json
import boto3

def lambda_handler(event, context):
    # TODO implement
    ec2_asset()
    rds_asset()


######EC2#####################################################
def ec2_asset():
    ec2 = boto3.client('ec2')   
    #ec2_info = []
    
    describe_ec2_instance = ec2.describe_instances()
    print("################EC2 Instance Info####################")
    for reservation in describe_ec2_instance['Reservations']:
        for instance in reservation['Instances']:
            instance_id = instance['InstanceId']
            instance_type = instance['InstanceType']
            tagName = None
            tagComponent = None
            for instance_Tags in instance['Tags']:
                               
                if instance_Tags['Key'] == 'Name':
                    tagName = instance_Tags['Value']
                    
                
                if instance_Tags['Key'] == 'Component':
                    tagComponent = instance_Tags['Value']
            print(instance_id,"\t", instance_type,"\t", tagName,"\t", tagComponent)    

                

######RDS#####################################################
def rds_asset():
    rds = boto3.client('rds')
    print("################RDS Instance Info####################")
    describe_rds_instance = rds.describe_db_instances()
    for dbInstances in describe_rds_instance['DBInstances']:
        for instance in dbInstances['DBInstanceIdentifier']:
            instance_zone = dbInstances['AvailabilityZone']
            instance_type = dbInstances['DBInstanceClass']            
            instance_endpoint = dbInstances['Endpoint']['Address']
            instance_engine = dbInstances['Engine']
            instance_enginevesion = dbInstances['EngineVersion']
            
            tagName = None
            tagComponent = None
            for instance_Tags in dbInstances['TagList']:
                if instance_Tags['Key'] == 'Name':
                    tagName = instance_Tags['Value']
                if instance_Tags['Key'] == 'Component':
                    tagComponent = instance_Tags['Value']

        print(tagName ,"\t",tagComponent,"\t", instance_type,"\t", instance_zone, "\t",instance_engine,"\t",instance_enginevesion,"\t",instance_endpoint)

 

 

'AWS' 카테고리의 다른 글

AWS EC2 종료 Lambda with EventBridge  (0) 2023.11.28
AWS EKS LB Controller Install  (0) 2023.09.29
Route53 라우팅 정책  (0) 2023.08.05
AWS Route53 DNA Type  (0) 2023.07.22
AWS Gateway Endpoint  (0) 2023.07.21

ECMP는 equal-cost multi-path routing의 약자로 하나의 목적지로 패킷 라우팅을 수행하면서 여러 개의 경로를 선택하는 라우팅 기법이다. ECMP는 다음 홉에 대한 선택을 단일 라우터로 국한시킬 수 있기 때문에 대부분의 라우팅 프로토콜과 결합하여 사용할 수 있다. ECMP는 다중 경로를 통해 트래픽을 분산시킴으로써 잠재적으로 대역폭의 증가를 가져온다.

 

ECMP는 해시 ECMP 알고리즘과 라우팅 메트릭 계산을 기반으로 동일한 비용의 다음 홉 경로를 식별하고 사용하는 원칙에 따라 트래픽을 라우팅하는 방법입니다. 네트워크는 동일한 비용, 동일한 메트릭 값, 네트워크 비용 및 기본 설정의 여러 최상의 경로를 제공합니다. 그런 다음 라우팅 테이블을 통한 ECMP 프로세스는 라우터 집합, ECMP(동일 비용 다중 경로) 집합을 식별하며 각각은 대상에 대한 동일한 비용 다음 홉 주소입니다. ECMP는 각 라우터가 독립적으로 주소를 지정하는 다음 홉 대상에 대해서만 로컬 홉별 결정을 요구하기 때문에 ECMP와 대부분의 라우팅 프로토콜을 함께 사용할 수 있습니다.

ECMP는 비용이 동일한 여러 최상의 경로에서 트래픽 로드 밸런싱을 통해 대역폭을 크게 늘릴 수 있지만 실제로는 올바른 결정을 내리지 않으면 배포에 문제가 있을 수 있습니다

 

https://ko.wikipedia.org/wiki/ECMP

 

ECMP - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. IEEE 802.1aq 프로토콜을 이용한 ECMP 애니메이션 ECMP는 equal-cost multi-path routing의 약자로 하나의 목적지로 패킷 라우팅을 수행하면서 여러 개의 경로를 선택하는 라

ko.wikipedia.org

 

https://avinetworks.com/glossary/equal-cost-multi-path-routing-ecmp/

 

What is Equal-Cost Multi-Path Routing (ECMP)? | Avi Networks

Learn the definition of Equal-Cost Multi-Path Routing (ECMP) and get answers to FAQs regarding: ECMP load balancing, ECMP routing, and more.

avinetworks.com

 

'AWS > ANS' 카테고리의 다른 글

AWS DX MACsec 설정  (0) 2023.08.06
AWS VPN 터널 시작 옵션  (0) 2023.08.05
AWS Gateway Load Balancer(GWLB)  (0) 2023.07.30
AWS Traffic Mirroring  (0) 2023.07.30
Amazon Route 53 Resolver  (0) 2023.07.16

MAC 보안 (MACsec) 은 데이터 기밀성, 데이터 무결성 및 데이터 원본 신뢰성을 제공하는 IEEE 표준입니다. MACsec을 지원하는AWS Direct Connect 연결을 사용하여 회사 데이터 센터에서 해당AWS Direct Connect 위치로 데이터를 암호화할 수 있습니다. 데이터 센터 및AWS 리전으로 흐르는 모든 데이터는 데이터 센터를 떠나기 전에 물리적 계층에서 자동으로 암호화됩니다.

다음 다이어그램에서는 전용 연결과 온프레미스 리소스 모두 MACsec을 지원해야 합니다. 전용 연결을 통해 데이터 센터로 또는 데이터 센터로부터 이동하는 레이어 2 트래픽은 암호화됩니다.

 

  • MAC 보안 (MACsec) — 데이터 기밀성, 데이터 무결성 및 데이터 원본 신뢰성을 제공하는 IEEE 802.1 계층 2 표준입니다. .
  • MACsec 비밀 키 — 고객 온프레미스 라우터와 해당AWS Direct Connect 위치의 연결 포트 간에 MACsec 연결을 설정하는 사전 공유 키입니다. 키는 사용자가 제공하고 디바이스에 프로비저닝한 CKN/CAK 쌍을AWS 사용하여 연결이 끝날 때 디바이스에서 생성됩니다.
  • 연결 키 이름 (CKN)  연결성 연결 키 (CAK) — 이 쌍의 값은 MACsec 비밀 키를 생성하는 데 사용됩니다. 페어 값을 생성하여 연결에 연결하고AWS Direct Connect 연결이 끝날 때 에지 디바이스에 프로비저닝합니다.AWS Direct Connect
    • must_encrypt : 암호화 모드를 이 값으로 설정하면 암호화가 중단되면 연결이 끊어집니다.
    • should_encrypt : 경우 갑작스러운 패킷 손실을 방지하기
    • no_encrypt : 암호화 없음

 

MACsec 생성 과정

1단계: 연결 생성
2단계: 링크 집계 그룹 (LAG) 생성
3단계: CKN/CAK를 연결 또는 LAG와 연결
4단계: 온프레미스 라우터 구성
5단계: (선택 사항) CKN/CAK와 연결 또는 LAG 간의 연결 제거

 

https://docs.aws.amazon.com/ko_kr/directconnect/latest/UserGuide/MACsec.html

 

Security - AWS Direct Connect

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

'AWS > ANS' 카테고리의 다른 글

ECMP(equal-cost multi-path routing) 라우팅  (0) 2023.08.06
AWS VPN 터널 시작 옵션  (0) 2023.08.05
AWS Gateway Load Balancer(GWLB)  (0) 2023.07.30
AWS Traffic Mirroring  (0) 2023.07.30
Amazon Route 53 Resolver  (0) 2023.07.16

AWS Route53에는 다양한 라우팅 정책이 존재한며, 적절한 정책을 선택하여 시스템설계를 해야 한다.

 

  1. 단순 라우팅 정책(Simple routing policy) - 도메인에 대해 특정 기능을 수행하는 하나의 리소스만 있는 경우(예: example.com 웹 사이트의 콘텐츠를 제공하는 하나의 웹 서버)에 사용합니다. 단순 라우팅을 사용하여 프라이빗 호스팅 영역에서 레코드를 생성할 수 있습니다.
    • Route 53 라우팅 없이 표준 DNS 레코드를 구성
  2. 장애 조치 라우팅 정책(Failover routing policy) - 액티브-패시브 장애 조치를 구성하려는 경우에 사용합니다. 장애 조치 라우팅을 사용하여 프라이빗 호스팅 영역에서 레코드를 생성할 수 있습니다.
    • 특정 리소스가 정상일 경우 해당 리소스로 트래픽을 라우팅하고 첫 번째 리소스가 비정상일 경우 다른 리소스로 트래픽을 라우팅합니다
  3. 지리 위치 라우팅 정책(Geolocation routing policy) - 사용자의 위치에 기반하여 트래픽을 라우팅하려는 경우에 사용합니다. 지리적 위치 라우팅을 사용하여 프라이빗 호스팅 영역에서 레코드를 생성할 수 있습니다.
    • 사용자의 지리 위치, 즉 DNS 쿼리가 발생하는 위치를 기반으로 트래픽을 제공하는 리소스를 선택할 수 있습니다
  4. 지리 근접 라우팅 정책(Geoproximity routing policy) - 리소스의 위치를 기반으로 트래픽을 라우팅하고 필요에 따라 한 위치의 리소스에서 다른 위치의 리소스로 트래픽을 보내려는 경우에 사용합니다.
    • 사용자와 리소스의 지리적 위치를 기반으로 트래픽을 리소스로 라우팅할 수 있습니다. 또는 바이어스라고 하는 값을 지정하여 해당 리소스로 라우팅하는 트래픽의 양을 늘리거나 줄일 수도 있습니다
  5. 지연 시간 라우팅 정책 - 여러 AWS 리전에 리소스가 있고 최상의 지연 시간을 제공하는 리전으로 트래픽을 라우팅하려는 경우에 사용합니다. 지연 시간 라우팅을 사용하여 프라이빗 호스팅 영역에서 레코드를 생성할 수 있습니다.
    • AWS 리전에서 호스팅된다면, 사용자들의 요청을 지연 시간이 가장 낮은 AWS 리전에서 처리함으로써 최종 사용자를 위해 성능을 향상시킬 수 있습니다.
  6. IP 기반 라우팅 정책 - 사용자의 위치에 기반하여 트래픽을 라우팅하고 트래픽이 시작되는 IP 주소가 있는 경우에 사용합니다.
    • 네트워크, 애플리케이션 및 클라이언트에 대한 이해를 바탕으로 DNS 라우팅을 미세 조정하여 최종 사용자를 위한 최상의 DNS 라우팅을 사용
  7. 다중 응답 라우팅 정책(Multivalue answer routing policy) - Route 53이 DNS 쿼리에 무작위로 선택된 최대 8개의 정상 레코드로 응답하게 하려는 경우에 사용합니다. 다중 값 응답 라우팅을 사용하여 프라이빗 호스팅 영역에서 레코드를 생성할 수 있습니다.
    • DNS 쿼리에 대해 다수의 값(예: 웹 서버의 IP 주소)을 반환하도록 구성할 수 있습니다. 다중값은 거의 모든 레코드에 대해 지정할 수 있지만, 다중값 응답 라우팅을 사용하면 각 리소스의 상태를 확인할 수도 있으므로 Route 53은 정상 리소스의 값만 반환
  8. 가중치 기반 라우팅 정책(Weighted routing policy) - 사용자가 지정하는 비율에 따라 여러 리소스로 트래픽을 라우팅하려는 경우에 사용합니다. 가중치 라우팅을 사용하여 프라이빗 호스팅 영역에서 레코드를 생성할 수 있습니다.
    • 다수의 리소스를 단일 도메인 이름(example.com) 또는 하위 도메인 이름(acme.example.com)과 연결하고 각 리소스로 라우팅되는 트래픽 비율을 선택

 

 

'AWS' 카테고리의 다른 글

AWS EKS LB Controller Install  (0) 2023.09.29
AWS EC2/RDS Instance 정보 조회 Lambda 코드  (0) 2023.09.24
AWS Route53 DNA Type  (0) 2023.07.22
AWS Gateway Endpoint  (0) 2023.07.21
AWS 특정 트래픽 헬스체크 알람생성 방법  (0) 2023.07.16

+ Recent posts