Edge Microgateway をサービスとしてデプロイ

ここに表示されているのは Apigee Edge のドキュメントです。
Go to the Apigee X のドキュメントに移動します
info

はじめに

このトピックでは、Kubernetes クラスタで Edge Microgateway をスタンドアロン サービス として実行する方法について説明します。

詳細については、Edge Microgateway と Kubernetes の統合の概要をご覧ください。

始める前に

前提条件に記載されている手順を完了していることを確認します。

Edge Microgateway を構成する

次のコマンドは、Apigee 組織の Edge Microgateway を構成し、プロキシ 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 Microgateway をサービスとしてデプロイする

  1. 次のコマンドを実行して、Edge Microgateway を 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. 次のコードをコピーしてターミナルに貼り付けます。このコードは、Ingress コントローラを設定して、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
    

    Ingress コントローラが構成され、edge-microgateway サービスへの外部アクセスが許可されました。

テストサービスをデプロイする

次の手順では、簡単なテストサービスをクラスタにデプロイします。Ingress コントローラでは、クラスタの外部からサービスを呼び出すことはできません。 後で、Edge Microgateway を構成して、サービスをターゲットとして呼び出します。 Ingress コントローラでは、edge-microgateway サービスへの外部アクセスが許可されます。

  1. サンプル helloworld サービスをデプロイします。Ingress はこのサービスを認識しないため、クラスタの外部からサービスを呼び出すことはできません。

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

    出力例:

    service "helloworld" created deployment "helloworld" created
    
  2. デプロイが成功したことを確認します。helloworld サービスには外部 IP がないことに注意してください。次の手順では、サービスの内部 IP にアクセスするように Edge Microgateway を構成します。

    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 Microgateway を構成する

helloworld サービスの内部 IP を取得し、「Microgateway 対応」プロキシのターゲットとして追加します。「Microgateway 対応」プロキシの作成は、Edge Microgateway の標準要件です。

Microgateway 対応プロキシについて知っておくべきこともご覧ください。

テストサービスの内部 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 上に Microgateway 対応プロキシを作成する

  1. ログインして Edge UI を使用します。
  2. Edge Microgateway の構成時に指定したのと同じ組織を選択します。
  3. サイド ナビゲーション メニューで [Develop] > [API Proxies] を選択します。
  4. [+ Proxy] をクリックします。[Build a Proxy] ウィザードが開きます。
  5. ウィザードの最初のページで、[Reverse proxy (most common)] を選択します。
  6. [次へ] をクリックします。
  7. ウィザードの [詳細] ページで、次のように構成します。次に示すとおりにウィザードに入力してください。プロキシ名に接頭辞 edgemicro_ が付いていることを確認します。

    1. Proxy Name: edgemicro_hello
    2. Proxy Base Path: /hello

    3. Existing API: http://<cluster_ip>:<port>

      例: http://10.55.254.255:8081

  8. [次へ] をクリックします。

  9. ウィザードの [Security] ページで、[Pass through (none)] を選択します。

  10. [次へ] をクリックします。

  11. ウィザードの [Virtual Hosts] ページで、デフォルトを受け入れます。

  12. [次へ] をクリックします。

  13. ウィザードの [Build] ページで、プロキシ設定を確認します。test 環境が選択されていることを確認してください。

  14. [Build and Deploy] をクリックします。

デベロッパーを作成する

テスト用の既存のデベロッパーを使用するか、次のようにしてデベロッパーを新しく作成できます。

  1. サイド ナビゲーション メニューで [Publish] > [Developers] を選択します。
  2. [+ Developer] をクリックします。
  3. ダイアログに入力して、新しいデベロッパーを作成します。任意のデベロッパー名/メールを使用できます。

API プロダクトを作成する

次の説明に従って API プロダクトを作成します。プロダクトに edgemicro-authedgemicro_hello の 2 つのプロキシを追加します。

を実行したときにデプロイされました。

プロダクト構成オプションの詳細については、API プロダクト 構成について知っておくべきことをご覧ください。

  1. サイド ナビゲーション メニューで、[Publish] > [API Products] を選択します。
  2. [+ API Product] をクリックします。[Product Details] ページが表示されます。
  3. 次のように、[Product Details] ページに入力します。指示があるまで [Save] はクリックしないでください。

    名前 hello-world-product
    表示名 Edge Micro hello product
    環境 test
    利用資格 Public
    [Key Approval Type] Automatic
  4. ページの下半分で、[+ Custom Resource] をクリックします。

  5. リソースを / (単一のスラッシュ)に設定します。

  6. もう一度 [+ Custom Resource] を選択し、パス /** を追加します。

  7. ページの下部で、[+ API Proxy] をクリックします。

  8. edgemicro-auth という名前のプロキシを選択します。

  9. もう一度 [+ API Proxy] をクリックします。

  10. edgemicro_hello という名前の Microgateway 対応プロキシを選択します。

  11. [保存] をクリックします。

デベロッパー アプリを作成する

  1. サイド ナビゲーション メニューで、[Publish] > [Apps] を選択します。
  2. [+ App] をクリックします。[Developer App Details] 詳細ページが表示されます。
  3. [Developer App] ページに、次のように入力します。指示があるまで、保存しないでください。

    名前 hello-world-app
    表示名 Edge Micro hello app
    Developer 作成したテスト デベロッパーを選択するか、どのようなデベロッパーでもかまいません。
  4. [Credentials] セクションで [+ Product] をクリックし、作成したプロダクト(hello-world-product.)を選択します。

  5. [保存] をクリックします。

  6. すべてのデベロッパー アプリを一覧表示するページに戻ります。

  7. 作成したアプリ(hello-world-app )を選択します。

  8. [Consumer Key] の横にある [Show] をクリックします。

  9. コンシューマ キーの値をコピーします。この値は、/hello に対して安全な API 呼び出しを行うために使用する API キー です。

  10. 数分待って、Apigee Edge で行った変更が、クラスタにデプロイされた Edge Microgateway のインスタンスと同期されるまでに数分かかります。

プロキシをテストする

Ingress の IP アドレスを取得する

Ingress の外部 IP を使用すると、クラスタの外部から Edge Microgateway サービスを呼び出すことができます。

  1. Ingress コントローラの外部 IP アドレスを取得します。

    kubectl get ing -o wide

    出力例:

    NAME                        HOSTS     ADDRESS          PORTS     AGE
    edge-microgateway-ingress   *         35.238.249.62    80        37m
    
  2. Ingress の 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 を呼び出す

構成の変更が Microgateway にプルされたら、API の呼び出しを試すことができます。Ingress コントローラ IP(変数 GATEWAY_IP に保存)を使用して API を呼び出します。この IP を使用すると、Kubernetes クラスタの外部からプロキシを呼び出すことができます。Ingress から Edge Microgateway への マッピングは、Edge Microgateway をクラスタにデプロイしたときに作成されました。

  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 Microgateway を構成できました。

次のステップ

実行するタスク (カスタム プラグインの追加、デプロイのスケーリング、構成の変更など) については、タスクのセクションをご覧ください。