Edge Microgateway를 서비스로 배포

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

소개

이 주제에서는 Kubernetes 클러스터에서 독립형 서비스로 Edge Micro Gateway를 실행하는 방법을 설명합니다.

자세한 내용은 Edge Micro Gateway와 Kubernetes 통합 개요를 참조하세요.

시작하기 전에

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

Edge Micro Gateway 구성

다음 명령어는 Apigee 조직의 Edge Micro Gateway를 구성하고 edgemicro-auth 프록시를 배포합니다.

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

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

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

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

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

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

    edgemicro configure -o docs -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 Micro Gateway를 서비스로 배포

  1. 다음 명령어를 실행하여 Edge Micro Gateway를 Kubernetes 클러스터에 서비스로 배포합니다.

    kubectl apply -f <(edgemicroctl -org=org -env=env -key=edgemicro-key
    -sec=edgemicro-secret -conf=file path of org-env-config.yaml)

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

    • org - edgemicro configure 명령어에서 지정한 Apigee 조직입니다.
    • env - edgemicro configure 명령어에서 지정한 환경입니다.
    • edgemicro-key - edgemicro configure 명령어에서 반환된 키입니다.
    • edgemicro-secret - edgemicro configure 명령어에서 반환된 보안 비밀입니다.
    • file path of org-env-config.yaml - edgemicro configure 명령어에서 반환된 Edge Micro 구성 파일의 경로입니다.

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

    kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=989cce9d41cac94e72626d906562a1d76a19445f8901b3508858bb064988eccb -sec=ec92b793178de7b7e88e346f55a951e3fdae05e700e3ddea7d63977826379784 -conf=/Users/jdoe/.edgemicro/jdoe-test-config.yaml)

    출력 예시:

    config/myorg-test-config.yaml)
    service "edge-microgateway" created
    deployment "edge-microgateway" created
    secret "mgwsecret" created
    
  2. 다음 코드를 복사하여 터미널에 붙여넣습니다. 이 코드는 edge-microgateway 서비스에 대한 외부 액세스를 허용하도록 인그레스 컨트롤러를 설정합니다. 명령어를 터미널에 붙여넣은 후 Enter 키를 눌러야 할 수도 있습니다.

    cat <<EOF | kubectl apply -f -
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: edge-microgateway-ingress
      annotations:
        kubernetes.io/ingress.class: "nginx"
    spec:
      rules:
      - http:
          paths:
          - path: /
            backend:
              serviceName: edge-microgateway
              servicePort: 8000
    EOF
    

    성공하면 다음과 같은 출력이 표시됩니다.

    ingress "edge-microgateway-ingress" created
    

    이제 edge-microgateway 서비스에 대한 외부 액세스를 허용하도록 인그레스 컨트롤러가 구성되었습니다.

테스트 서비스 배포

다음 단계에서는 간단한 테스트 서비스를 클러스터에 배포합니다. 인그레스 컨트롤러는 클러스터 외부에서 서비스를 호출하는 것을 허용하지 않습니다. 나중에 Edge Micro Gateway가 서비스를 대상으로 호출하도록 구성합니다. 인그레스 컨트롤러는 edge-microgateway 서비스에 대한 외부 액세스를 허용합니다.

  1. 샘플 helloworld 서비스를 배포합니다. 인그레스는 이 서비스에 대해 알지 못하므로 클러스터 외부에서 서비스를 호출할 수 없습니다.

    kubectl apply -f samples/helloworld/helloworld-service.yaml

    출력 예시:

    service "helloworld" created deployment "helloworld" created
    
  2. 배포가 성공했는지 확인합니다. helloworld 서비스에는 외부 IP가 없습니다. 다음 단계에서는 서비스의 내부 IP에 액세스하도록 Edge Micro Gateway를 구성합니다.

    kubectl get services -n default

    출력 예시:

    NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    edge-microgateway   NodePort    10.35.247.222   <none>        8000:32000/TCP   12m
    helloworld          NodePort    10.35.245.103   <none>        8081:30294/TCP   47s
    kubernetes          ClusterIP   10.35.240.1     <none>        443/TCP          47m
    

서비스를 프록시하도록 Edge Micro Gateway 구성

helloworld 서비스의 내부 IP를 가져와 '마이크로 게이트웨이 인식' 프록시의 대상으로 추가합니다. '마이크로 게이트웨이 인식' 프록시를 만드는 것은 표준 Edge Micro게이트 요구사항입니다.

Micro Gateway 인식 프록시에 대해 알아야 할 사항도 참조하세요.

테스트 서비스의 내부 IP 가져오기

  1. helloworld 서비스의 내부 클러스터 IP와 포트를 가져옵니다.

    kubectl get services helloworld

    출력 예시:

    NAME         TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    helloworld   NodePort   10.55.254.255   <none>        8081:30329/TCP   3m
    
  2. CLUSTER-IPPORT의 값을 복사합니다. 예를 들어 위 예에서 이러한 값은 10.55.254.2558081입니다. 시스템의 값은 다릅니다.

Edge에서 마이크로 게이트웨이 인식 프록시 만들기

  1. Edge UI에 로그인합니다.
  2. 이전에 Edge Micro Gateway를 구성할 때 지정한 것과 동일한 조직을 선택합니다.
  3. 측면 탐색 메뉴에서 개발 > API 프록시를 선택합니다.
  4. +프록시를 클릭합니다. 프록시 빌드 마법사가 열립니다.
  5. 첫 번째 마법사 페이지에서 역방향 프록시 (가장 일반적)를 선택합니다.
  6. 다음을 클릭합니다.
  7. 마법사의 세부정보 페이지에서 다음과 같이 구성합니다. 표시된 대로 마법사를 정확하게 작성해야 합니다. 프록시 이름에 프리픽스 edgemicro_가 있는지 확인합니다.

    1. 프록시 이름: edgemicro_hello
    2. 프록시 기본 경로: /hello

    3. 기존 API: http://<cluster_ip>:<port>

      예: http://10.55.254.255:8081

  8. 다음을 클릭합니다.

  9. 마법사의 보안 페이지에서 통과 (없음)을 선택합니다.

  10. 다음을 클릭합니다.

  11. 마법사의 가상 호스트 페이지에서 기본값을 수락합니다.

  12. 다음을 클릭합니다.

  13. 마법사의 빌드 페이지에서 프록시 설정을 검토합니다. test 환경이 선택되어 있는지 확인합니다.

  14. Build and Deploy(빌드 및 배포)를 클릭합니다.

개발자 만들기

기존 개발자를 테스트에 사용하거나 다음과 같이 새 개발자를 만들 수 있습니다.

  1. 측면 탐색 메뉴에서 게시 > 개발자를 선택합니다.
  2. + Developer를 클릭합니다.
  3. 새 개발자를 만들려면 대화상자를 작성합니다. 원하는 개발자 이름/이메일을 사용할 수 있습니다.

API 제품 만들기

아래 설명에 따라 API 제품을 만듭니다. 제품에 프록시 2개(edgemicro-authedgemicro_hello)를 추가합니다.

제품 구성 옵션에 대한 자세한 내용은 API 제품 구성에 대해 알아야 할 사항을 참고하세요.

  1. 측면 탐색 메뉴에서 게시 > API 제품을 선택합니다.
  2. +API 제품을 클릭합니다. 제품 세부정보 페이지가 표시됩니다.
  3. 다음과 같이 제품 세부정보 페이지를 작성합니다. 지시가 있을 때까지 저장을 클릭하지 마세요.

    이름 hello-world-product
    표시 이름 Edge Micro hello product
    환경 test
    액세스 Public
    키 승인 유형 Automatic
  4. 페이지 하단에 있는 + 커스텀 리소스를 클릭합니다.

  5. 리소스를 / (단일 슬래시)로 설정합니다.

  6. + 커스텀 리소스를 다시 선택하고 /** 경로를 추가합니다.

  7. 페이지 하단에서 + API 프록시를 클릭합니다.

  8. 이름이 edgemicro-auth인 프록시를 선택합니다.

  9. + API 프록시를 다시 클릭합니다.

  10. 이름이 edgemicro_hello인 마이크로 게이트웨이 인식 프록시를 선택합니다.

  11. 저장을 클릭합니다.

개발자 앱 만들기

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

    이름 hello-world-app
    표시 이름 Edge Micro hello app
    개발자 직접 만든 테스트 개발자를 선택합니다. 그렇지 않으면 아무 개발자나 사용할 수 있습니다.
  4. 사용자 인증 정보 섹션에서 + 제품을 클릭하고 생성한 제품(hello-world-product.)을 선택합니다.

  5. 저장을 클릭합니다.

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

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

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

  9. 고객 키의 값을 복사합니다. 이 값은 /hello에 대한 보안 API 호출에 사용할 API 키입니다.

  10. 잠시만 기다려 주세요. Apigee Edge에서 변경한 사항이 클러스터에 배포된 Edge Micro Gateway 인스턴스와 동기화되는 데 몇 분 정도 걸립니다.

프록시 테스트

인그레스 IP 주소 가져오기

인그레스의 외부 IP를 사용하면 클러스터 외부에서 Edge Micro Gateway 서비스를 호출할 수 있습니다.

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

    kubectl get ing -o wide

    출력 예시:

    NAME                        HOSTS     ADDRESS          PORTS     AGE
    edge-microgateway-ingress   *         35.238.249.62    80        37m
    
  2. 인그레스의 ADDRESS 값을 복사하고 변수로 내보냅니다. 변수를 수동으로 설정할 수 있습니다.

    export GATEWAY_IP=external_ip

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

    export GATEWAY_IP=35.238.249.62

    또는 다음 명령어를 사용하여 설정합니다.

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

    echo $GATEWAY_IP

    출력 예시:

    35.238.249.62
    

API 호출

구성 변경사항을 마이크로 게이트웨이로 가져온 후 API 호출을 시도할 수 있습니다. GATEWAY_IP 변수에 저장한 인그레스 컨트롤러 IP를 사용하여 API를 호출합니다. 이 IP를 사용하면 Kubernetes 클러스터 외부에서 프록시를 호출할 수 있습니다. 인그레스에서 Edge Micro게이트로의 매핑은 클러스터에 Edge Micro Gateway를 배포할 때 생성되었습니다.

  1. API 키 없이 API를 호출합니다. 아래와 같은 오류 메시지가 표시됩니다.

    curl $GATEWAY_IP:80/hello/

    예상 출력:

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

    이 메시지가 표시되면 동기화가 완료될 때까지 조금 더 기다려야 할 수 있습니다.

    {"message":"no match found for /hello/","status":404}
    

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

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

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

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

    curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP:80/hello/

    출력:

    Hello world
    

    'Hello world' 응답이 표시되면 Kubernetes 클러스터 내에서 helloworld 서비스를 호출하도록 Edge Micro Gateway를 성공적으로 구성한 것입니다.

다음 단계

커스텀 플러그인 추가, 배포 확장, 구성 변경, 수행하려는 기타 작업에 대한 자세한 내용은 작업 섹션을 참조하세요.