Today Keys : VPC, endpoint, privatelink, private, link, 엔드포인트, 서비스, 게이트웨이, 인터페이스, interface,NLB


Private Link

VPC Endpoint는 게이트웨이 형식과 인터페이스 형식으로 구분 됨.

인터페이스 형식으로 구분되는 EndPoint를 Private Link라고도 합니다.

▪ VPC Endpoint 이외에 VPC Endpoint Service라는 것이 있는 데,  

  VPC Endpoint Service는 AWS 서비스가 아닌 AWS 사용자가 직접 만든 서비스를 접근하도록 하는 Private Link 임.

 

정리하면

  VPC Endpoint

     ▪ 게이트웨이 형식

     ▪ 인터페이스 형식 (Private Link) - 사용자

  VPC Endpoint Service  (Private Link) - 제공자

 

PrivateLink

▪ Private Link를 통한 AWS 일반 서비스 접근(VPC Endpoint : 인터페이스 형식)

     - 별도의 인터넷 경로없이 AWS 내부망을 통한 통신

     - Internet Gateway, NAT Gateway, Public IP 등이 필요하지 않음.

     - Direct Connect와 VPN을 통해서도 Private Link 접근 가능.

 

▪  Private Link를 통한 서비스 공유(VPC Endpoint Service)

   - 직접 만든 서비스를  VPC Endpoint Service로 만들어서 다른 AWS 사용자가 서비스에 접근 가능하도록 함.

   - 3rd party 서비스(SaaS)

   - 서비스 제공을 위해서는 NLB를 사용 필수

   ※ VPC Endpoint Service를 통해서 생성된 PrivateLink는 VPC Endpoint에서 사용

 

  


VPC Endpoint  Service 생성

   Step 1. NLB를 생성하여 서비스 연결

   Step 2. VPC EndPoint Service를 생성하면서 NLB를 연결.

 

VPC Endpoint Service 사용

   Step 1 특정 서비스 사용자(소비자)에게 Endpoint Service를 사용 할 수 있는 권한 부여

              - AWS 계정, IAM 사용자 및 IAM 역할

   Step 2 권한을 부여 받은 사용자는 Interface Endpoint 생성

   Step 3 연결을 활성화하기 위해 Interface Endpoint 연결 요청을 수락

              - Default로 수동 수락이지만, Endpoint Service 생성 시에 자동 수락으로 설정 가능.

 

Posted by 네떡지기

Today Keys : VPC, AWS, Endpoint, Gateway, Interface, services, cloud, 아마존, public


이번 포스팅은 지난 포스팅에 이어서 VPC Endpoint에 대해서 알아봅니다.

VPC Endpoint 중에서 Interface 타입의 Endpoint를 생성해서 어떻게 Endpoint를 이용해서

서비스를 접근 할 수 있는지를 알아 볼 수 있는 간단한 예제 포스팅입니다.

* 관련 포스팅 : VPC Endpoint 알아보기

                        Gateway Endpoint 만들어보기 - 포스팅 준비 중
                       
 


이번 포스팅에서는 Interface 타입의 Endpoint인 CloudFormation을 생성해 보겠습니다.

먼저 Endpoint를 생성하기 위해서 '엔드포인트 생성' 메뉴를 선택하여 Endpoint를 만드는 메뉴로 들어갑니다.

 

EndPoint를 만들 때에는 서비스 유형에 따라서 Interface로 만들지 Gateway로 만들지 다음과 같이 나옵니다.

각 서비스 별로 유형이 정해져 있는 것이며, 서비스를 Interface 혹은 Gateway 유형을 선택하는 것은 아닙니다.

 

Endpoint 생성의 전체 메뉴는 다음과 같습니다.

서비스를 고르고, 어느 VPC에 적용할지를 선택하면 해당 VPC의 AZ 정보가 나오고

각 AZ 별로 어떤 Subnet에 생성할지 나옵니다.

그리고 'Private DNS 이름 활성화' 라는 메뉴가 기본적으로 체크되어 있습니다.

이 부분은 아래에서 다시 설명합니다.

보안 그룹은 우선 기본으로 설정합니다.

 

여기까지하면, 손쉽게 Endpoint를 만들 수 있습니다.

 

생성이후, '사용가능' 상태로는 약 1~2분정도 소요 될 수 있습니다.

정상적으로 생성되면 다음과 같이 생성된 Endpoint 정보를 확인 할 수 있습니다.

 

하단의 서브넷 탭을 보면 실제 생성 시에 선택한 AZ 별로 서브넷에 속하는 IP 주소를 갖고 있는 것을 확인 할 수 있습니다.

 

Endpoint를 생성하기 전에는 해당 VPC 내에서 CloudFormation 서비스에 대한 URL을 확인하면

AWS의 리전 내의 공인 IP 주소를 받아오는 것을 확인 할 수 있습니다.

 

하지만, Endpoint 생성 이후에 동일한 URL에 대한 질의를 하면 Endpoint가 갖고 있는 IP 주소를

도메인에 질의에 대한 결과로 받게 되는 것을 확인 할 수 있습니다.

앞에서  'Private DNS 이름 활성화' 을 뒤에서 알아보겠다고 하였는 데, Endpoint 생성 시에

'Private DNS 이름 활성화' 옵션을 활성화하면(default 값이 활성화) 서비스 별 기본 도메인 값을 VPC 내의 Private DNS에

자동으로 등록이 되어서 해당 값을 응답 받을 수 있게 됩니다.

일반 URL이 아닌 별도 URL을 사용하여 접근하고자 할 경우에는 해당 옵션에 대한 체크를 해제하고

별도 도메인으로 Endpoint IP 주소를 관리 할 수도 있습니다.

 

 

Posted by 네떡지기

Today Keys : VPC, AWS, Endpoint, Gateway, Interface, Private, links, services, cloud, 아마존, public


 

 이번 포스팅은 VPC 네트워크에서 AWS 서비스를 AWS 네트워크를 통해서 직접 접근하기 위한 Endpoint에 대해서 알아보는 포스팅입니다. Endpoint는 접근하는 서비스에 따라서 Gateway와 Interface 타입으로 나뉩니다. 이번 포스팅에서는 Endpoint에 대한 간략한 소개를 하고, 다음 포스팅에서는 Endpoint를 생성해서 접근하는 방법에 대해서 알아 볼 예정입니다.

* 관련 포스팅 : Gateway Endpoint 만들어보기 - 포스팅 준비 중
                       
 Interface Endpoint 만들어보기


 VPC Endpoints

Endpoints

  ▪ VPC 네트워크 내에서 VPC 외부에 위치한 Public한 서비스를 IGW를 거치지 않고 VPC내부에서 직접 접근하도록 지원
  ▪ VPC의 내부의 인스턴스가 AWS 서비스와 통신하기 위해 공인 IP를 가지지 않아도 됨.
  ▪ Endpoint는 Gateway 타입 Interface 타입 으로 구분
  ▪ Endpoint는 VPC에서 접근하고자 하는 AWS Public 서비스 별로 개별 생성하며, Gateway타입 지원하는 서비스와
    인터페이스 타입을 지원하는 서비스가 나누어져 있음. 
       - 타입 별 지원 서비시는 아래에 참고
  ▪ VPC와 AWS 서비스 사이의 트래픽이 AWS 네트워크에서 처리하며, IAM 정책을 사용하여 액세스 제어 가능.


Gateway Endpoint 
  ▪ Endpoint가 Gateway 타입으로 지원하여 AWS 서비스 접근 시, 라우팅으로 접근
  ▪ 라우팅 테이블에서 S3나 DynamoDB의 목적지 네트워크에 대한 Target(Next Hop)으로 Gateway Endpoint를 지정
  ▪ S3와 DynamoDB 접근을 지원


Interface Endpoint
  ▪ Endpoint가 AZ 내의 Elastic Network Interface(ENI)로 생성하고, 해당 서비스에 대한 도메인 Lookup을 해당 ENI 응답
  ▪ Kinesis, Service Catalog, Amazon EC2, EC2 Systems Manager(SSM), Elastic Load Balancing(ELB) API 등을 지원
  ▪ Interface Endpoint 생성 시에는 어느 VPC의 어떤 AZ의 어떤 Subnet을 사용할지 선택
  ▪ Interface Endpoint 는 생성 시에 지정한
 각 서브넷의 IP를 각각 할당 받음.
  ▪ Interface Endpoint 를 이용해서 서비스를 호출하는 경우에는, AWS에서 기본으로 사용하는 도메인을 사용하거나, 
    별도의 서비스 도메인을 지정하여 VPC 내에서 서비스 도메인 Lookup 시에  Interface Endpoint 의  IP로 응답하여
    접근하도록 할 수 있음.
  ▪ 기존에 AWS Public 서비스를 사용하도록 어플리케이션이 만들어진 경우에 기본 도메인으로 Interface Endpoint 
   사용하게 되면  어플리케이션에서 AWS 서비스 호출 시에 별도의 변경 과정없이 Endpoint를 이용한 서비시 호출이 가능.

  

Endpoint 타입별 지원 서비스
  ▪ Gateway
    - Amazon S3
    - DynamoDB
 
  ▪ Interface
    - Amazon API Gateway
    - AWS CloudFormation
    - Amazon CloudWatch
    - Amazon CloudWatch Events
    - Amazon CloudWatch Logs
    - AWS CodeBuild
    - AWS Config
    - Amazon EC2 API
    - Elastic Load Balancing API
    - AWS Key Management Service
    - Amazon Kinesis Data Streams
    - Amazon SageMaker and Amazon SageMaker Runtime
    - Amazon SageMaker Notebook Instance
    - AWS Secrets Manager
    - AWS Security Token Service
    - AWS Service Catalog
    - Amazon SNS
    - AWS Systems Manager
    - Endpoint services hosted by other AWS accounts
    - Supported AWS Marketplace partner services

 

 

 

 

 

Posted by 네떡지기
DevOps/Programmability2018.02.07 08:02

안녕하세요.

이번 포스팅은 Programmability for Networker의 25번째 포스팅입니다.

ACI Cobra를 이용하여 Port Channel 혹은 vPC Profile을 만들어주는 코드에 대해서 공유합니다.

세부적인 코드 설명은 포함되어 있지는 않지만, 현업에서 아래의 코드를 사용한다면

보다 쉽고, 빠르게 Profile을 만드실 수 있을겁니다.

이번 코드는  운영 중인 커뮤니티에서 진행된  '제 22회 네트워크 전문가 따라잡기 'N.EX.T''에서 발표하였던 코드이기도 합니다.

(정리해서 올리기로 하고.. 1년 가까이가 지났네요. ^^)

 

물론 포스팅 설명에 앞서서 한가지 미리 얘기를 드리면,

'왜 Port Channel이나 vPC Profile을 대량을 으로 만들어야 하지?' 라고 생각하실 수 있습니다.

ACI에 대한 포스팅을 준비만 하면서 계속하지 못하고 있어서 다루지 못한 부분이기는 하지만..

이 부분은 ACI를 어떻게 설계해서 사용하느냐에 따라서 많아질 수도.. 혹은 적어질 수도 있을 것이라고 생각합니다.

(물론 개인적인 생각은 최적화 된 Profile로 설계해서 사용한다면 그리 많지 않은 Profile로 모두 수용이 가능합니다.)

 

그럼 이제 본 내용을 시작합니다.

 


 

ACI에서 기본적으로 제공되는 APIC GUI에서 Click! Click을 이용해서 설정하는 방법 이외에

 

일괄적으로 대량을 설정을 하기 위해서는

JSON이나, XML 포맷의 파일을 미리 만들어 POST 하여 설정을 하거나,

ACI에서 제공되는 API를 이용해서 코드로 설정하는 방법이 있을 것입니다.  (CLI를 제외하고..)

 

하지만, 오늘 다룰 내용인 Interface Policies 항목에서는 POST를 할 수 있는 메뉴가 없습니다.

최상단의 Interface Policies에도 없고요.

 

 

 

 

 

 

하단의 Policy Groups에도 없습니다.

 

 

 

물론 그 하단인 Leaf Policy Groups에도 없습니다.

 

 

그래서 PC Profile이나 vPC Profile을 생성하기 위해서 ACI SDK인 Cobra를 이용하여 Port Channel이나 vPC Profile을 만들려고 합니다.

 

다음은 Port Channel이나 vPC Profile을 만드는 코드입니다.

 

 

위의 코드 이외에 Port Channel 혹은 vPC Profile의 이름이 선언된 info.txt라는 파일이 있어야 합니다.

info.txt에는 단순히 Profile에 사용할 이름만 한 줄씩 나열합니다.

 

그러면 info 파일에서 한 줄씩 읽어서 해당 이름으로 Profile을 생성하게 됩니다.

코드 본문에 있는 AEP 변수에서 사용하실 AEP 이름을 수정하시고

Port Channel을 사용할지, vPC를 사용할지에 따라서 AccBndlGrp 메서드 호출 시에 lagT에 대해서

 

Port Channel은 'link'로 설정하시고, vPC의 경우에는 'node'로 설정하시면 됩니다.

 

위의 코드에서는 Link Level Policy, Port Channel Policy, Attach Entity Profile에 대한 속성만 설정하였지만,

기타 그 밖의 설정을 추가할 수도 있습니다.

 

혹시라도 대량으로 PC, vPC Profile을 설정하셔야 하는 경우에 이 코드를 사용하시면 조금은 쉽게 설정이 가능하실 겁니다.

물론 자동화의 장점은 설정에 대한 편의성도 있지만, 잘못된 설정으로 인한 휴먼에러의 방지도 가능할 것입니다.

 

참고로, 위의 코드에서는 설정 시의 기본 예외처리만 만들었으며

기타 다른 상황에 대한 세부 예외 처리가 되어 있지 않기 때문에 더 보완해서 사용해보시는 것도 좋을 것 같습니다.

 

 

Posted by 네떡지기
네트워크2017.07.03 18:29

Today Keys : ACI, Interface, Policies, Policy, Profile, Group


이번 포스팅은 Cisco ACI 로 시작하는 시리즈 포스팅의 첫 번째 포스팅입니다. 

작년 말부터 Cisco ACI를 운영하기 시작하면서 정리를 조금씩 하면서 포스팅을 준비했는 데.. 

예전부터 그랬지만 항상 포스팅을 하기 위한 준비 작업 시간도 오래 걸리거니와 

또 맘에 들 때까지.. 무작정 기다리기만 하면 포스팅을 하지도 못하고.. 계속 늦춰지기만 하게 되네요. 

우선 짧게 짧게라도 가볍게 정리해 놓은 것들을 풀어보는 포스팅을 하려고 합니다. 


전체적인 흐름과 아키텍처를 잘 짜야만 된다고 생각되는 것이 ACI 이긴 하지만.. 

우선 포스팅은 단편적인 부분부터 시작해봅니다.  그렇지 않으면 무작정 계속 늦어질 듯 싶으니까요..

나중에 흐름과 전체 구조는 하나씩 짜맞춰 나가는 포스팅을 하도록 하겠습니다! ^^


첫 번째 포스팅은 Interface의 설정을 어떻게 할 것인지에 대한 내용입니다.

개별 인터페이스별로 설정을 하는 것이 아니라, 기존의 Port-Profile 기능처럼 인터페이스에 적용할 Profile을 만든 후에 

이를 동일하게 사용되는 전체 인터페이스에 손쉽게(?) 적용할 수 있습니다. 




Interface Policies


Policies 


  - Switch Interface 대한 속성, CDP, STP interface에서 설정한 가능한 Config 대해서 세부 속성.

  - 기 CLI에서의 Interface 명령 안에 선택되는 옵션 수준

              * 설정 가능한 정책


                  - Link Level , CDP, LLDP, Port Channel, STP, Storm Control, Port Security 등


                  

< Interface Policies의 Policies에서 설정할 수 있는 정책 >


< Link Level Policy 설정 >




< CDP 설정 >


Policy Group 


  - Policies 엮어서, 하나의 Interface 설정 값을 만듬.

  - 실질적으로 특정 인터페이스 설정 될 Port Profile 설정

 

  - 일반 Interface 설정은 하나의 Policy Group으로 만들어서 다수의 인터페이스에 적용해서 사용. 

 

  - Policy Group은 일반 Individual Port와 Port-channel, vPC 로 나누어서 설정을 하게 되며, 

    

    Port-Channel과 vPC는 개별로 생성 해야 함. 

 


< Policy Group의 설정 >



< 일반 Individual Interface Policy 설정 >




< Port-Channel Interface Policy 설정 >





<  vPC Interface Policy 설정 >




Profile 


 - Policy Group에서 설정된 인터페이스 설정 값을 적용할 Profile 설정

 

 - Policy Group을 적용할 인터페이스를 지정한다고 생각하면 됨. 이 과정을 Interface Selectors 라는 메뉴에서 지정하게 되며


  여기서는 어떤 Leaf 대한 Interface인지까지는 지정하지 않고, 단순히 Interface ID(Interface 번호) 지정 하게 됨. 


  실제 어떤 Leaf의 적용될지에 대한 mapping 과정은 Switch Policies에서 적용



<  vPC Interface Policy 설정 >



<  vPC Interface Policy 설정 >


Posted by 네떡지기
DevOps/Programmability2015.01.10 13:22

OnePK 예제

 


지난 포스팅에 이어서 Python을 사용한 OnePK 예제를 다뤄봅니다.

간략한 예제를 통해서, OnePK를 어떻게 사용할 수 있는지 알아보겠습니다.


 

 

○ OnePK 두 번째 예제

   - Network Element의 Interface 정보를 가져와서 출력해보는 예제입니다

   - Ethernet Type의 Interface 정보를 가져오고, 해당 Interface의 Description을 출력합니다

 

   ◆ 실행결과

 

 

   ◆ 소스코드

  

   - 기본 코드는 지난 포스팅인 Python for Networker Part 14(OnePK3)을 참고해주시면 됩니다.

   - Interface를 정보를 가져오기 위해서 OnePK에서 제공하는 Package중에, Interface라는 Package를 사용합니다.

   - 여기서는 NetworkInterface와 InterfaceFilter라는 Class를 사용합니다.

   - 현재 Element(Network Device)의 Interface 정보를 가져오기 위해서는 get_interface_list 메서드를 사용하게 됩니다.

   - get_interface_list 메서드를 사용하기 위해서는 InterfaceFilter를 지정해줘야 합니다

     InterfaceFilter를 지정하기 위해서, InterfaceFilter에 대한 객체를 생성하는 데

     InterfaceFilter의 객체 생성 시에는 NetworkInterface의 InterfaceTypes을 선택해야 합니다. (Default는 ONEP_IF_TYPE_ANY)

    - 코드 상에서 보면, InterfaceTypes를 사용하기 위해서 NetworkInterface Class의 InterfaceTypes라는 enum 멤버를

      intType이라는 변수에 할당하고, intType에서 Ethernet Type을 지정해서, intfilter라는 InterfaceFilter 객체를 생성합니다

      intfilter를 이용해서 원하는 Interface 리스트 정보를 가져옵니다. 

    - LIST형태로 리턴받은 NetworkInterface에서 하나씩 객체를 가져와서 Interface이름과 description을 출력한다.

    - descritpion의 경우에는 get_config() 메서드를 사용하여, InterfaceConfig 를 리턴받아서, InterfaceConfig의 메서드를 사용한다.

  

 

○ OnePK 두 번째 예제 변형-1

   - 위에서 출력한 Interface 정보를 보면, 인터페이스가 순번대로 반환되지 않기 때문에 0번 인터페이스부터 7번까지 차례대로

     출력되지 않는다.

   - 이를 해결하기 위해서 다음과 같이 코드를 한 줄 삽입하여 정렬을 하게 되면 아래의 두번째 예제 변형의 결과값처럼 차례대로

     인터페이스 정보를 출력할 수 있다.

  

 sortInt =  sorted(myInt,key=lambda intf: intf.name)

 

   ◆ 실행결과

 

 

○ OnPK 두 번째 예제 변형 -2

   - Description 이외에 추가적으로 필요한 정보는 OnePK 3번째 시간에서 얘기하였던, OnePK API에서 필요한 값을 찾아서,

    얼마든지 추가하여 정보를 알아낼 수 있다. 다음은 Interface의 상태가 Up/Down인지 확인한 내용까지 출력하였다.

 

   ◆ 실행결과

 

 

○ OnePK 세 번째 예제

   - OnePK 두 번째 예제처럼, Interface 정보를 가져올 수도 있지만, 실제 설정을 할 수 도 있다.

   - 다음은 Interface의 Description 정보를 변경한 간단한 예제이다. 

    

 

   - 위 코드의 실형결과를 보면, G0/6의 Interface의 Descritpion이 없다가 ex3.py를 실행하였을 때 설정이 되는 것을 확인하고

     다시 전체 인터페이스 정보를 출력해보면 G0/6에 정상적으로 Descritpion이 바뀐 것을 확인할 수 있다.

 

   ◆ 소스코드

         ※ 현재 포스팅된 Ex3의 예제는 결과값이 Sort를 다르게 써서, 조금 다릅니다. 변경 코드는 저녁에 이미지 교체 예정입니다

               이미지 교체 후에는 본 안내 메시지는 삭제할 예정입니다

 

   - NetwortInterface List 중에서 6번째(Index는 0부터 시작)의 Description을 set_description 메서드를 사용하여 변경합니다.

   - 변경 전/후로 Descritpion을 출력해서 결과를 확인합니다

 

 

◆ 이번 포스팅에서는 OnePK 2,3번째의 예제를 통해서 Network Element의 Interface에 대한 정보를 확인 및 설정하는 방법을

    알아 보았습니다.  2,3번 모두 기본 예제의 연장선상에 있으며 앞으로 다룰 예제들도 비슷할 것입니다

    결국 핵심은 예제가 아니라, 예제를 바탕으로 OnePK에서 제공하는 API를 잘 활용하는 방법과 아이디어가 될 것 같습니다.

 

 

Posted by 네떡지기

티스토리 툴바