Skupper와 통신하기 위한 Cloud K8s 사용

소개


공사팀은 구름 많은 방법을 인프라 시설 목표에 포함시키려고 시도할 때 많은 도전에 직면했다.Kubernetes는 그 중의 일부 문제를 해결하는 데 매우 잘하지만, 여러 지역을 뛰어넘는 여러 클라우드 공급자의 집단 통신을 관리하는 것은 팀의 어려운 임무가 될 수 있다.이것은 보통 복잡한 VPN과 특수한 방화벽 규칙으로 구름 많은 집단 통신을 해야 한다.
본고에서 Skupper를 소개합니다. 이것은 Kubernetes 집단의 안전 통신을 실현하는 데 사용되는 소스 프로젝트입니다.Skupper는 여러 클라우드 공급업체, 데이터 센터, 지역을 뛰어넘는 애플리케이션을 지원합니다.우리 그것의 실제 행동을 좀 봅시다!

입문


이 강좌는 여러 개의 공공 및 개인 집단에서 Istio Bookinfo Application 마이크로서비스를 나누어 주는 방법을 보여 줄 것이다.이 서비스들은 분포식 응용 프로그램 환경에서 작동하기 때문에 코드를 변경할 필요가 없다.Skupper를 사용하면 모든 서비스가 같은 그룹에서 실행되는 것처럼 프로그램이 실행됩니다.
이 강좌에서는 이름 공간aws-eu-west의 원격 공공 집단에 제품 페이지와ratings 서비스를 배치하고, 이름 공간laptop의 로컬 집단에 details와reviews 서비스를 배치합니다.

개요


그림 1 - Bookinfo 서비스 배포

위의 그림은 어떻게 서비스를 배치하는지 보여 준다.
  • 그룹마다 두 개의 응용 프로그램 서비스를 실행합니다.
  • 제품 페이지 서비스의 입구 루트는 인터넷 사용자에게 응용 프로그램에 대한 접근을 제공한다.
  • 만약 모든 서비스가 공공 집단에 설치된다면, 응용 프로그램은 최초의 설계에 따라 작업할 것이다.그러나 이 중 두 서비스가 노트북 집단에 있기 때문에 응용 프로그램은 실패했다.제품 페이지에서 자세한 정보나 논평을 요청할 수 없습니다.
    이 프레젠테이션은 Skupper가 이러한 서비스 배치 안배에 따른 연결 문제를 어떻게 해결하는지 보여 줍니다.
    그림 2 - Skupper를 이용한 Bookinfo 서비스 배포

    Skupper는 하나 이상의 클러스터 또는 이름 공간에 설치되어 실행되는 분산 시스템입니다.연결된 Skupper 설치는 각 설치가 어떤 서비스를 공개하는지에 대한 정보를 공유합니다.모든 Skupper 설치는 다른 모든 설치에서 어떤 서비스를 공개했는지 알 수 있습니다.그리고 Skupper는 모든 명칭 공간에서 프록시 서비스 노드를 실행하여 요청 루트를 모든 공개된 서비스나 모든 공개된 서비스 루트에서 정확하게 요청합니다.
  • 공공 명칭 공간에서 상세한 정보와 심사 에이전트가 서비스의 요청을 차단하고 이를 Skupper 네트워크로 전송한다.
  • 개인 이름 공간에서 세부 사항과 심사 에이전트는 Skupper 네트워크에서 요청을 받아 관련 서비스에 보냅니다.
  • 개인 이름 공간에서 등급별 에이전트가 서비스에 대한 요청을 캡처하여 Skupper 네트워크로 전송합니다.
  • 공공 명칭 공간에서 등급별 에이전트는 Skupper 네트워크로부터 요청을 받아 관련 서비스에 보냅니다.
  • 선결 조건


    이 강좌를 실행하려면 다음이 필요합니다.
  • kubectl 명령행 도구, 버전 1.15 이상(installation guide)
  • skupper 명령행 도구, 최신 버전(installation guide)
  • 두 개의 Kubernetes 명칭 공간은 사용자가 선택한 공급자로부터 당신이 선택한 집단에 위치합니다
  • yaml 파일은 https://github.com/skupperproject/skupper-examples-bookinfo.git
  • 클러스터 또는 네임스페이스당 2개의 로그인 콘솔 터미널
  • 1단계: Bookinfo 애플리케이션 배포


    이 단계는 네 개의 Bookinfo 마이크로서비스 중 하나를 만들고 배치합니다.
    네임스페이스aws-eu-west:
    $ kubectl apply -f public-cloud.yaml
    service/productpage created
    deployment.extensions/productpage-v1 created
    service/ratings created
    deployment.extensions/ratings-v1 created
    
    네임스페이스laptop:
    $ kubectl apply -f private-cloud.yaml 
    service/details created
    deployment.extensions/details-v1 created
    service/reviews created
    deployment.extensions/reviews-v3 created
    

    2단계: 공공 제품 페이지 서비스 공개


    네임스페이스aws-eu-west:
    kubectl expose deployment/productpage-v1 --port 9080 --type LoadBalancer
    
    
    Bookinfo 애플리케이션은 이 포털 포트를 통해 공용 인터넷productpage 서비스에 액세스할 수 있습니다.

    3단계: 애플리케이션이 작동하지 않는지 확인


    Bookinfo 응용 프로그램의 웹 주소는 네임스페이스aws-eu-west에서 확인할 수 있습니다.
    $ echo $(kubectl get service/productpage -o jsonpath='http://{.status.loadBalancer.ingress[0].hostname}:9080')
    
    
    웹 브라우저에서 주소를 엽니다.Productpage 응답, 그러나 네임스페이스 laptop 의 서비스에 접근할 수 없기 때문에 페이지에 오류가 표시됩니다.
    우리는 지금 이 문제를 해결할 수 있다.

    4단계: Skupper 설정


    이 단계는 각 클러스터의 Skupper 환경을 초기화합니다.
    네임스페이스laptop:
    skupper init
    
    네임스페이스aws-eu-west:
    skupper init
    
    현재 Skupper 인프라가 운영되고 있습니다.각 콘솔 터미널에서 skupper status 을 사용하여 Skupper 사용 가능 여부를 확인합니다.
    $ skupper status
    Namespace '<ns>' is ready.  It is connected to 0 other namespaces.
    
    
    다음 단계를 완료하면 언제든지 skupper status 를 사용하여 진행 상태를 확인할 수 있습니다.

    5단계: Skupper 설치 연결


    이름 공간을 연결하려면 Skupper 연결을 사용해야 합니다.
    이것은 두 가지 과정이다.skupper connection-token <file> 명령은 Skupper가 다른 Skupper 실례에 이 Skupper 네트워크에 연결할 수 있는 권한을 부여하는 인증서를 포함하는 비밀 영패 파일을 생성하도록 지시합니다.
    참고: 로그인 자격 증명이 저장된 파일을 보호하는 것처럼 이 파일을 보호합니다.skupper connect <file> 명령은 Skupper가 다른 Skupper의 네트워크에 연결되도록 지시합니다.이 단계에서 Skupper 연결을 완료합니다.
    이런 안배에서 Skupper 실례가 연결되어 대등한 네트워크를 형성하는 것을 주의하십시오.보통 네트워크 포트를 여는 족제비는 공공 집단에 위치한다.laptop에서 실행되는 집단은 인터넷에서 접근할 수 있는 주소가 없을 수도 있다.연결이 끝난 후, Skupper 네트워크 구성원은 대등하다. 어느 Skupper가 네트워크 포트를 열었든지, 어느 Skupper가 네트워크 포트에 연결되었든지.
    이 프레젠테이션의 콘솔 터미널은 같은 사용자가 같은 호스트에서 실행합니다.이것은 ${HOME} 디렉터리의 영패 파일을 두 터미널에 모두 사용할 수 있게 합니다.터미널이 다른 기계에 있는 경우 scp 또는 유사한 도구를 사용하여 영패 파일을 위탁 관리 laptop 터미널의 시스템으로 전송해야 할 수도 있습니다.

    Skupper 네트워크 연결 영패 생성


    네임스페이스aws-eu-west:
    skupper connection-token ${HOME}/PVT-to-PUB-connection-token.yaml
    
    

    Skupper 연결 열기


    네임스페이스laptop:
    skupper connect ${HOME}/PVT-to-PUB-connection-token.yaml
    

    연결 확인


    네임스페이스aws-eu-west:
    $ skupper status
    Skupper enabled for "aws-eu-west". It is connected to 1 other sites.
    
    
    네임스페이스laptop:
    $ skupper status
    Skupper enabled for "laptop". It is connected to 1 other sites.
    
    

    단계 6: 공유하려는 서비스 가상화


    현재 다중 집단 통신을 할 수 있는 Skupper 네트워크가 있지만 이와 관련된 서비스는 없습니다.이 단계는 kubectl annotate 명령을 사용하여 Skupper 서비스가 Skupper 네트워크에 포함될 것을 알립니다.
    Skupper는 가상화 서비스에 대한 지침으로 주석을 사용합니다.주석을 받는 서비스는 네트워크 요청의 물리적 목표이고, Skupper가 다른 이름 공간에 배치한 에이전트는 네트워크 요청의 가상 목표입니다.그리고 Skupper 인프라는 가상 서비스와 목표 서비스 사이의 루트를 요청합니다.
    네임스페이스aws-eu-west:
    $ kubectl annotate service ratings skupper.io/proxy=http
    service/ratings annotated
    
    
    네임스페이스laptop:
    $ kubectl annotate service details skupper.io/proxy=http
    service/details annotated
    
    $ kubectl annotate service reviews skupper.io/proxy=http
    service/reviews annotated
    
    
    Skupper는 현재 주석이 있는 서비스를 Skupper 네트워크의 모든 이름 공간에 사용할 수 있도록 합니다.Bookinfo 응용 프로그램은 공공 집단의 productpage 서비스로 개인 집단의 detailsreviews 서비스에 접근하고 개인 집단의 평론 서비스로 공공 집단의 등급 평가 서비스에 접근한다.

    단계 7: 애플리케이션이 작동하는지 확인


    Bookinfo 응용 프로그램의 웹 주소는 네임스페이스aws-eu-west에서 확인할 수 있습니다.
    $ echo $(kubectl get service/productpage -o jsonpath='http://{.status.loadBalancer.ingress[0].hostname}:9080')
    
    
    웹 브라우저에서 주소를 엽니다.응용 프로그램은 이제 정상적으로 작동할 수 있을 것이다.

    정리하다


    Skupper 및 Bookinfo 서비스가 클러스터에서 제거될 수 있습니다.
    네임스페이스aws-eu-west:
    skupper delete
    kubectl delete -f public-cloud.yaml
    
    
    네임스페이스laptop:
    skupper delete
    kubectl delete -f private-cloud.yaml 
    

    마지막 생각


    Skupper 등의 도구 덕분에 구름 많은 방법을 사용하면 좋은 점이 많고 점점 쉬워진다.만약 당신이 시간이 있다면itsGithub Repo에서 Skupper의 다른 예를 시험해 보세요.나는 네가 이 문장에서 약간의 것을 배울 수 있기를 바란다.더 많은 관심 부탁드립니다!

    좋은 웹페이지 즐겨찾기