Edge Microgateway를 사이드카 프록시로 배포

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

소개

이 주제에서는 Kubernetes 클러스터에서 Edge Microgateway를 사이드카 프록시. 사이드카 배포에는 수동 및 자동의 두 가지 옵션이 있습니다. 인코더-디코더입니다. 이 주제에서는 두 옵션을 모두 설명합니다.

자세한 내용은 Kubernetes의 Edge Microgateway 소개를 참조하세요.

시작하기 전에

기본 요건에 설명된 단계를 완료합니다.

테스트 서비스 배포

간단한 'hello' 배포 확인하고 배포를 확인합니다.

  1. 샘플을 배포합니다.

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. 서비스가 실행 중인지 확인합니다. 새 버전이 출시될 때까지 잠시 기다려야 할 수 있습니다. 포드가 실행 중인 상태로 회전합니다.

    kubectl get pods --namespace=default

    출력 예시:

    NAME                          READY     STATUS    RESTARTS   AGE
    helloworld-569d6565f9-lwrrv   1/1       Running   0          17m
    
  3. 테스트 서비스 배포를 삭제합니다. 사용 설정 후 나중에 다시 설치합니다. 사이드카 삽입:

     kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default

수동 사이드카 삽입 사용

두 사이드카 삽입 옵션 중 수동 사이드카 삽입이 더 간단하고 간단합니다. 단일 kubectl 명령어로 실행할 수 있습니다.

Edge Microgateway 구성

다음 명령어는 Apigee 조직에 Edge Microgateway를 구성합니다. 프록시 edgemicro-auth를 배포합니다.

  1. 다음 명령어를 실행합니다.

    edgemicro configure -o [org] -e [env] -u [username]

    각 항목의 의미는 다음과 같습니다.

    • org: Edge 조직 이름입니다 (조직 관리자여야 함).

    • env: 조직의 환경 (예: 테스트 또는 프로덕션)입니다.

    • username: Apigee 계정과 연결된 이메일 주소입니다.

    를 통해 개인정보처리방침을 정의할 수 있습니다.

    edgemicro configure -o myorg -e test -u jdoe@example.com

    출력 (아래 예 참고)은 파일에 저장됩니다.

    $HOME/.edgemicro/org_name-env_name-config.yaml
    .

    current nodejs version is v6.9.1
    current edgemicro version is 2.5.25
    password:
    file doesn't exist, setting up
    Give me a minute or two... this can take a while...
    App edgemicro-auth deployed.
    checking org for existing KVM
    KVM already exists in your org
    configuring host edgemicroservices.apigee.net for region us-west1
    
    saving configuration information to: /Users/jdoe/.edgemicro/myorg-test-config.yaml
    
    vault info:
     -----BEGIN CERTIFICATE-----
    MIICpDCCAYwCCQCV9eBcO9a5WzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls
    b2NhbGhvc3QwHhcNMagwODA5MDAzMDEzWhcNMTgwODEwMDAzMDEzWjAUMRIwEAYD
    VQQDDBlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDh
    nAHT7JHX/WvWHRFb8FLm53SPIDld5LyPOUfINdEyhSIEeXoOUKg4EPweJPVSC9Vm
    Hw4ZMtEqWJM/XsQWvLe8ylRJa5wgmzmFCqAsuzs9+rmc9KvJqjpOh2uRTUf7KKfT
    iXL2UEseprcI5g8zNyqKyEf/ecWIwz3AkkPAZebVTsrdDfIDHvkyhhvlAHZAB9kn
    GtqP3N8kOlv4KQto9Gr7GYUGUIDugt7gM1F611+RBS+fYRi32GUAq/UQDkhYL8cp
    oIJiF7UYkk2+9t9CdOCDuIUCvJioHJQd0xvDpkC9f6LvwjwnCwku+4F2Q63+av5I
    mJoZJQPvW5aP53Qkk+kHAgMBAAEwDKYJKoZIhvcNAQELBQADggEBALyUBolXUFN8
    1bf268nR+gS8MOFDTxO1bUz+bKuT/g3K1PuNUJTueT+0L1H2OiZUzazAqwn2sqzN
    lQuvLg6LjxjlNkqTJGiJvGDcYVq45dv7UyxAZxhqxTxhlQ+Yu5R9pbQnzujezHpH
    6gtCoCkSt/QqiJ3YsmsVu5is+HpIJepMt0CyMh5tK9j87hl46QhHklaVfQ3ycMVm
    /wNPR/pjizg1FDUeq4nj/7DBVbMf9net/BDaZLeSW1HJ1vcsCXIcSZfQd4QymGFn
    8ADrND7ydVjwO/s23soPDTy0g4yLIZvky2tpT8d7YahNqSv2n7sXsLxruzcyCoQ4
    w+e3Z3F7IKI=
    -----END CERTIFICATE-----
    
    The following credentials are required to start edge micro
      key: 1a3b2754c7f20614817b86e09895825ecc252d34df6c4be21ae24356f09e6eb4
      secret: 16ad2431de73f07f57a6d44048f08d93b63f783bf1f2ac4221182aa7289c7cef
    
    edgemicro configuration complete!
    

Edge Microgateway를 사이드카로 삽입

Edge Microgateway를 사이드카 프록시로 서비스 포드에 수동으로 삽입하려면 다음 명령어를 실행합니다. 명령어를 실행합니다

kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -svc=service_deployment_file)

각 항목의 의미는 다음과 같습니다.

  • your_org - edgemicro configure 명령어에서 지정한 Apigee 조직입니다.
  • your_env - edgemicro configure 명령어에서 지정한 환경입니다.
  • your_key - edgemicro configure 명령어에서 반환된 키입니다.
  • your_secret - edgemicro configure 명령어에서 반환된 보안 비밀입니다.
  • config_file_path - edgemicro configure 명령어에서 반환된 Edge Micro 구성 파일의 경로입니다.
  • service_deployment_file - 해당 포드가 수행될 서비스의 배포 파일 경로입니다. 가져올 수 있습니다 예를 들면 samples/helloworld/helloworld.yaml입니다.

예를 들면 다음과 같습니다.

kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -svc=samples/helloworld/helloworld.yaml)

구성 테스트

  1. 서비스 배포를 확인합니다.

    kubectl get services -n default

    출력 예시:

    NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    helloworld   NodePort    10.15.254.163   <none>        8081:32401/TCP   56s
    kubernetes   ClusterIP   10.15.240.1     <none>        443/TCP          41m
    
  2. 이제 Edge Microgateway의 사이드카 배포를 테스트할 준비가 되었습니다. 이동 자세한 단계는 프록시를 테스트하세요.

자동 사이드카 삽입 사용

다음 단계에서는 Kubernetes 클러스터입니다 이 설정을 통해 Edge Microgateway를 사이드카로 삽입할 수 있습니다. GKE로 가져올 수 있습니다

사이드카 인젝터 설치

  1. ConfigMap 설치 Edge Microgateway의 사이드카 삽입을 가능하게 합니다.

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. 다음 스크립트를 실행하여 webhook 서비스를 설치합니다. 웹훅 서비스는 자동 사이드카 삽입:

    ./install/kubernetes/webhook-create-signed-cert.sh \
        --service edgemicro-sidecar-injector \
        --namespace edgemicro-system \
        --secret sidecar-injector-certs
    
  3. 웹훅 설치 파일에 CA 번들을 추가합니다. Kubernetes는 api-server는 이 파일을 사용하여 웹훅을 호출합니다.

    cat install/kubernetes/edgemicro-sidecar-injector.yaml | \
         ./install/kubernetes/webhook-patch-ca-bundle.sh > \
         install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
    
  4. Edge Microgateway 사이드카 인젝터 웹훅을 설치합니다.

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
    

    출력 예시:

    service "edgemicro-sidecar-injector" created
    serviceaccount "edgemicro-sidecar-injector-service-account" created
    deployment "edgemicro-sidecar-injector" created
    mutatingwebhookconfiguration "edgemicro-sidecar-injector" created
    
  5. Edge Microgateway 사이드카 인젝터 웹훅이 실행 중인지 확인합니다.

    kubectl -n edgemicro-system get deployment -ledgemicro=sidecar-injector
    

    출력 예시:

    NAME                         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edgemicro-sidecar-injector   1         1         1            1           12m
    
  6. 클러스터에서 사이드카 삽입 포드가 실행 중인지 확인합니다. 네임스페이스 edgemicro-system에는 다음을 포함하여 시스템 서비스가 설치됩니다. 인그레스 컨트롤러, 기본 HTTP 백엔드, 사이드카 인젝터:

    kubectl get pods -n edgemicro-system

    출력 예시:

    NAME                                            READY     STATUS    RESTARTS   AGE
    default-http-backend-55c6c69b88-gfnfd           1/1       Running   0          1h
    edgemicro-ingress-controller-64444469bf-jhn8b   1/1       Running   3          1h
    edgemicro-sidecar-injector-7d95698fbf-cq84q     1/1       Running   0          3m
    

Edge Microgateway 구성 및 삽입

다음 단계에서는 대화형 스크립트를 실행하여 Edge Microgateway를 만듭니다. Kubernetes 네임스페이스입니다 그런 다음 구성을 Kubernetes 클러스터에 추가할 수 있습니다

  1. 다음 대화형 스크립트를 실행하고 요청된 매개변수를 제공합니다. 이 명령어는 다음 단계에서 사용할 구성 프로필을 생성합니다.

    ./install/kubernetes/webhook-edgemicro-patch.sh

    입력 매개변수에 대한 자세한 내용은 참조를 확인하세요.

    샘플 입력:

    1. Namespace to deploy application [default]:

      Enter를 누릅니다.

    2. Authenticate with OAuth Token ("n","Y") [N/y]

      n을 입력합니다.

    3. Apigee username [required]:

      Apigee 사용자 이름 (이메일 주소)을 입력합니다. 예: jdoe@google.com

    4. Apigee password [required]:

      Apigee 비밀번호를 입력합니다.

    5. Apigee organization [required]:

      Apigee 조직 이름을 입력하세요.

    6. Apigee environment [required]:

      조직의 환경 이름을 입력합니다. 예: 'test'

    7. Virtual Host [default]:

      Enter를 누릅니다.

    8. Is this Private Cloud ("n","y") [N/y]:

      퍼블릭 클라우드를 사용하는 경우 n을 입력합니다.

    9. Edgemicro Key. Press Enter to generate:

      Enter를 누릅니다.

    10. Edgemicro Secret. Press Enter to generate:

      Enter를 누릅니다.

    11. Edgemicro org-env-config.yaml. Press Enter to generate:

      Enter를 누릅니다.

      출력 예시:

      current nodejs version is v6.9.1
      current edgemicro version is 2.5.25
      config initialized to /Users/jdoe/.edgemicro/default.yaml
      Configure for Cloud
      ******************************************************************************************
      Config file is Generated in /Users/jdoe/Work/GITHUB/microgateway_2.5.25_Darwin_x86_64/config directory.
      
      Please make changes as desired.
      *****************************************************************************************
      
    12. Do you agree to proceed("n","y") [N/y]:

      y를 입력합니다.

      출력 예시:

      Configuring Microgateway with
      
      key:daacf75dd660d160b801c9117fb1ec0935896615479e39dbbae88be81a2d84
      secret:a60fd57c1db9f3a06648173fb541cb9c59188d3b6037a76f490ebf7a6584b0
      config:~/.edgemicro/jdoe-test-config.yaml
      
      ********************************************************************************************************
      kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
      ********************************************************************************************************
      
    를 통해 개인정보처리방침을 정의할 수 있습니다.
  2. 출력의 마지막 줄에 제공된 명령어를 실행합니다. 이 kubectl 명령어 생성된 Edge Microgateway 구성 프로필을 Kubernetes에 삽입합니다.

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. 웹훅 삽입 상태를 확인합니다. 현재 이 기능은 사용 설정되어 있지 않습니다.

    kubectl get namespace -L edgemicro-injection

    출력 예시:

    NAME               STATUS    AGE       EDGEMICRO-INJECTION
    default            Active    1d
    edgemicro-system   Active    1d
    kube-public        Active    1d
    kube-system        Active    1d
    
  4. 다음 명령어를 실행하여 웹훅에 웹훅 삽입을 사용 설정합니다.

    kubectl label namespace default edgemicro-injection=enabled
  5. 웹훅 삽입 상태를 다시 확인하세요. 이제 사용 설정되었습니다.

    kubectl get namespace -L edgemicro-injection

    출력 예시:

    NAME               STATUS    AGE       EDGEMICRO-INJECTION
    default            Active    1d        enabled
    edgemicro-system   Active    1d
    kube-public        Active    1d
    kube-system        Active    1d
    

테스트 서비스 배포

이제 테스트 서비스를 다시 배포합니다. Edge Microgateway가 자동으로 삽입됨 서비스의 포드로 복사됩니다

kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default

Edge Microgateway가 테스트와 함께 포드에 삽입되었는지 확인합니다. 서비스:

kubectl get pods --namespace=default --watch

출력 예시:

NAME                          READY     STATUS            RESTARTS   AGE
helloworld-6987878fc4-pkw8h   0/2       PodInitializing   0          12s
helloworld-6987878fc4-pkw8h   2/2       Running           0         26s

상태가 Running로 변경되면 ctrl-c를 눌러 명령어를 종료합니다.

이제 Edge Microgateway의 자동 사이드카 배포를 테스트할 준비가 되었습니다. 이동 자세한 단계는 프록시를 테스트하세요.

프록시 테스트

사이드카 배포를 사용하면 서비스의 API 프록시가 자동으로 생성됩니다. 해야 할 일 'Edge Microgateway 인식'을 만들 필요가 없음 사용할 수 있습니다

인그레스 IP 주소 가져오기

인그레스의 외부 IP를 사용하여 서비스를 호출할 수 있습니다. 액세스할 수 있습니다

  1. 인그레스 컨트롤러의 외부 IP 주소를 가져옵니다.

    kubectl get ing -o wide

    출력 예시:

    NAME      HOSTS     ADDRESS        PORTS     AGE
    gateway   *         35.238.13.54   80        1m
    
  2. 인그레스의 EXTERNAL-IP 값을 복사하고 변수로 내보냅니다. 나 는 변수를 수동으로 설정할 수 있습니다.

    export GATEWAY_IP=external_ip

    예를 들면 다음과 같습니다.

    export GATEWAY_IP=35.238.249.62

    또는 다음 명령어를 사용하여 자동으로 설정할 수 있습니다.

    export GATEWAY_IP=$(kubectl describe ing gateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
  3. 변수를 내보냈는지 확인합니다. 예를 들면 다음과 같습니다.

    echo $GATEWAY_IP

    출력 예시:

    35.238.249.62
    
  4. 서비스를 호출합니다.

    curl $GATEWAY_IP

    출력:

    {"error":"missing_authorization","error_description":"Missing Authorization header"}
    

    이제 API 제품 및 개발자 앱을 구성하여 누락된 승인 오류를 해결합니다. 유효한 API 키를 가져올 수 있습니다. 승인에 키를 추가하는 경우 헤더를 사용하면 호출이 성공하고 이 오류가 표시되지 않습니다.

Apigee Edge에서 구성요소 만들기

다음으로 Apigee Edge에서 API 제품과 개발자 앱을 만듭니다.

API 제품 만들기

  1. Apigee Edge에 로그인합니다.
  2. 측면 탐색 메뉴에서 게시 > API 제품을 선택합니다.
  3. +API 제품을 클릭합니다. 제품 페이지가 표시됩니다.
  4. 다음과 같이 제품 페이지를 작성합니다. 아래에 언급되지 않은 필드의 경우 기본값을 사용할 수 있습니다 안내되기 전까지 저장하지 않습니다.

    이름 hello-world-product
    표시 이름 Edge Micro hello product
    환경 test

  5. 경로 섹션에서 + 커스텀 리소스를 클릭합니다.

  6. / 경로를 추가합니다.

  7. + 커스텀 리소스를 다시 클릭하고 /** 경로를 추가합니다.

  8. API 프록시 섹션에서 + API 프록시를 클릭하고 edgemicro-auth를 추가합니다.

  9. API 제품을 저장합니다.

개발자 앱 만들기

  1. 측면 탐색 메뉴에서 을 선택합니다.
  2. + 앱을 클릭합니다. 개발자 앱 세부정보 페이지가 표시됩니다.
  3. 다음과 같이 개발자 앱 페이지를 작성합니다. 사용자의 안내가 있을 때까지 저장하지 마세요. 하세요.

    이름 hello-world-app
    표시 이름 Edge Micro hello app
    개발자 드롭다운 메뉴에서 개발자를 선택합니다.
  4. '사용자 인증 정보' 섹션에서 + 제품을 클릭하고 방금 만든 hello-world-product입니다.

  5. 저장을 클릭합니다.

  6. 모든 개발자 앱이 나열된 페이지로 돌아옵니다.

  7. 방금 만든 앱 hello-world-app을 선택합니다.

  8. 소비자 키 옆에 있는 표시를 클릭합니다.

  9. 고객 키 값을 복사합니다. 이 값은 안전한 API 호출에 사용할 API 키 helloworld 서비스

  10. 잠시만 기다려 주세요. Apigee에서 변경한 내용이 적용되려면 몇 분 정도 걸립니다. Edge를 사용하여 인스턴스에 배포된 Edge Microgateway 인스턴스와 동기화 kube-APIserver입니다

API 호출

구성 변경사항을 마이크로게이트웨이로 가져온 후에는 다음 테스트를 실행합니다.

  1. API 키 없이 API 호출 다음과 같은 오류 메시지가 표시됩니다. 아래:

    curl $GATEWAY_IP

    예상 출력:

    {"error":"missing_authorization","error_description":"Missing Authorization
    header"}
    

    API를 성공적으로 호출하려면 API 키가 필요합니다.

  2. 만든 개발자 앱에서 고객 키를 가져옵니다. 이 값은 테스트 프록시를 호출하는 데 필요한 API 키:

    curl -H 'x-api-key:your-edge-api-key'  $GATEWAY_IP

    예를 들면 다음과 같습니다.

    curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP

    출력:

    Hello world
    

    'Hello World' 배포된 helloworld 서비스에 의해 반환되는 있습니다 해당 서비스에 대한 호출이 먼저 Edge Microgateway를 통해 전달됨 확인할 수 있습니다 'Hello world' Edge Microgateway를 성공적으로 구성한 것입니다. helloworld 서비스 포드에서 사이드카 프록시로 작동합니다.

다음 단계

자세한 내용은 태스크 섹션을 참조하세요. 커스텀 플러그인 추가, 배포 확장, 구성 변경, 수행할 수 있는 다른 태스크가 있는지 확인하세요.