Edge Microgateway をサイドカー プロキシとしてデプロイする

<ph type="x-smartling-placeholder"></ph> 現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント
詳細

はじめに

このトピックでは、次のように Kubernetes クラスタで Edge Appliance を実行する方法について説明します。 サイドカー プロキシ。サイドカーのデプロイには手動と自動の 2 つのオプションがあります。 インジェクションの一種です。このトピックでは、両方のオプションについて説明します。

詳細については、Kubernetes での Edge Appliance の概要をご覧ください。

始める前に

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

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

単純な「hello」をデプロイするデプロイを確認します。

  1. サンプルをデプロイする

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. サービスが実行されていることを確認します。しばらく待つ必要があります。 Pod は実行中の状態にスピンアップします。

    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

手動サイドカー インジェクションの使用

2 つのサイドカー インジェクション オプションのうち、手動のサイドカー インジェクションはよりシンプルでわかりやすい 1 つの kubectl コマンドで実行できます。

Edge AppSheet を構成する

次のコマンドで、Apigee 組織の Edge Appliance を構成します。 プロキシ 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 Gateway をサイドカーとして挿入する

Edge Gateway をサイドカー プロキシとしてサービス Pod に手動で挿入するには、次のコマンドを実行します。 次のコマンドを実行します。

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 - Pod が実行されるサービスのデプロイ ファイルのパス コンパニオン サイドカー サービスを取得します。例: 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 API のサイドカー デプロイをテストする準備が整いました。次に移動: 詳細な手順については、プロキシをテストします。

自動サイドカー インジェクションの使用

次の手順では、サービス アカウントに自動サイドカー インジェクションを構成します。 使用します。この設定により、Edge AppSheet をサイドカーとして挿入できるようになります。 できます。

サイドカー インジェクタをインストールする

  1. ConfigMap をインストールする これは、次のように、Edge Apigee のサイドカー インジェクションを有効にします。

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. 次のスクリプトを実行して、Webhook サービスをインストールします。Webhook サービスは、 自動サイドカー インジェクション:

    ./install/kubernetes/webhook-create-signed-cert.sh \
        --service edgemicro-sidecar-injector \
        --namespace edgemicro-system \
        --secret sidecar-injector-certs
    
  3. CA バンドルを Webhook インストール ファイルに追加します。Kubernetes api-server はこのファイルを使用して Webhook を呼び出します。

    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 Appliance サイドカー インジェクタ Webhook をインストールします。

    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 Appliance サイドカー インジェクタ Webhook が実行されていることを確認します。

    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. クラスタでサイドカー インジェクション Pod が実行されていることを確認します。Namespace edgemicro-system は、システム サービスがインストールされている場所です。 Ingress コントローラ、デフォルトの 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 AppSheet を構成して挿入する

次のステップでは、インタラクティブなスクリプトを実行して Edge Appliance を作成します Kubernetes Namespace に関連付けられた構成の 1 つを作成します。次に、Pod を 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]:

      Public Cloud を使用している場合は、「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 AppSheet 構成プロファイルが Kubernetes に挿入されます。

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. Webhook インジェクションのステータスを表示します。現在、有効になっていません。

    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. 次のコマンドを実行して、Webhook の Webhook インジェクションを有効にします。

    kubectl label namespace default edgemicro-injection=enabled
  5. Webhook インジェクションのステータスを再度表示します。現在は有効になっています。

    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 AppSheet は自動的に挿入されます。 自動的に読み込まれます。

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

テストとともに Edge Appliance が Pod に挿入されたことを確認する service:

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 API の自動サイドカー デプロイをテストする準備が整いました。次に移動: 詳細な手順については、プロキシをテストします。

プロキシをテストする

サイドカー デプロイを使用すると、サービスの API プロキシが自動的に作成されます。あなたは Apigee API をあります。

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

Ingress の外部 IP を使用して、サービスを呼び出すことができます。 実行することもできます。

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

    kubectl get ing -o wide

    出力例:

    NAME      HOSTS     ADDRESS        PORTS     AGE
    gateway   *         35.238.13.54   80        1m
    
  2. Ingress の 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. サイド ナビゲーション メニューで、[Publish] > [API Products] を選択します。
  3. [+ API Product] をクリックします。商品ページが表示されます。
  4. [Product] ページに次のように入力します。以下に記載されていないフィールドについては、 デフォルト値を使用できます。指示があるまで保存しないでください。

    名前 hello-world-product
    表示名 Edge Micro hello product
    環境 test

  5. [Path] セクションで、[+ Custom Resource] をクリックします。

  6. パス / を追加します。

  7. もう一度 [+ Custom Resource] をクリックし、パス /** を追加します。

  8. [API Proxies] セクションで、[+ API Proxy] をクリックして [edgemicro-auth] を追加します。

  9. API プロダクトを保存します。

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

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

    名前 hello-world-app
    表示名 Edge Micro hello app
    デベロッパー プルダウン メニューからデベロッパーを選択します。
  4. [Credentials] セクションで、[+ Product] をクリックし、 作成した hello-world-product

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

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

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

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

  9. コンシューマ キーの値をコピーします。この値は API キー: 次のサービスに対して安全な API 呼び出しを行います。 helloworld サービス。

  10. 数分待って、Apigee で行った変更が反映されるまでに数分かかります にデプロイされた Edge Dataproc のインスタンスと Edge を同期します。 作成します。

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 サービスによって返される Pod に追加します。そのサービスの呼び出しは、最初に Edge Appliance を経由し、 場所を記録します。「Hello World」と表示されたら その後、次のレスポンスとして Edge helloworld サービス Pod でサイドカー プロキシとして機能します。

次のステップ

詳細については、タスクセクションをご覧ください カスタム プラグインの追加、デプロイのスケーリング、構成の変更、 実行したい他のタスクを実行できます