<ph type="x-smartling-placeholder"></ph>
現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント。 詳細
はじめに
このトピックでは、次のように Kubernetes クラスタで Edge Appliance を実行する方法について説明します。 サイドカー プロキシ。サイドカーのデプロイには手動と自動の 2 つのオプションがあります。 インジェクションの一種です。このトピックでは、両方のオプションについて説明します。
詳細については、Kubernetes での Edge Appliance の概要をご覧ください。
始める前に
前提条件に記載されている手順を完了します。
テストサービスをデプロイする
単純な「hello」をデプロイするデプロイを確認します。
サンプルをデプロイする
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
サービスが実行されていることを確認します。しばらく待つ必要があります。 Pod は実行中の状態にスピンアップします。
kubectl get pods --namespace=default
出力例:
NAME READY STATUS RESTARTS AGE helloworld-569d6565f9-lwrrv 1/1 Running 0 17m
テストサービス デプロイメントを削除します。有効にした後で再インストールします サイドカー インジェクション:
kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default
手動サイドカー インジェクションの使用
2 つのサイドカー インジェクション オプションのうち、手動のサイドカー インジェクションはよりシンプルでわかりやすい
1 つの kubectl
コマンドで実行できます。
Edge AppSheet を構成する
次のコマンドで、Apigee 組織の Edge Appliance を構成します。
プロキシ edgemicro-auth
をデプロイします。
次のコマンドを実行します。
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)
構成のテスト
サービスのデプロイを確認します。
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
これで、Edge API のサイドカー デプロイをテストする準備が整いました。次に移動: 詳細な手順については、プロキシをテストします。
自動サイドカー インジェクションの使用
次の手順では、サービス アカウントに自動サイドカー インジェクションを構成します。 使用します。この設定により、Edge AppSheet をサイドカーとして挿入できるようになります。 できます。
サイドカー インジェクタをインストールする
ConfigMap をインストールする これは、次のように、Edge Apigee のサイドカー インジェクションを有効にします。
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
次のスクリプトを実行して、Webhook サービスをインストールします。Webhook サービスは、 自動サイドカー インジェクション:
./install/kubernetes/webhook-create-signed-cert.sh \ --service edgemicro-sidecar-injector \ --namespace edgemicro-system \ --secret sidecar-injector-certs
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
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
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
クラスタでサイドカー インジェクション 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 クラスタにデプロイできます。
次のインタラクティブ スクリプトを実行し、リクエストされたパラメータを指定します。「 コマンドを実行すると、次のステップで使用する構成プロファイルが生成されます。
./install/kubernetes/webhook-edgemicro-patch.sh
入力パラメータの詳細については、リファレンスをご覧ください。
入力例:
Namespace to deploy application [default]:
Enter キーを押します。
Authenticate with OAuth Token ("n","Y") [N/y]
「n」と入力します。
Apigee username [required]:
Apigee のユーザー名(メールアドレス)を入力します。例:
jdoe@google.com
。Apigee password [required]:
Apigee パスワードを入力します。
Apigee organization [required]:
Apigee 組織名を入力します。
Apigee environment [required]:
組織の環境名を入力します。例: 「test」。
Virtual Host [default]:
Enter キーを押します。
Is this Private Cloud ("n","y") [N/y]:
Public Cloud を使用している場合は、「n」と入力します。
Edgemicro Key. Press Enter to generate:
Enter キーを押します。
Edgemicro Secret. Press Enter to generate:
Enter キーを押します。
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. *****************************************************************************************
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 ********************************************************************************************************
出力の最後の行に示されているコマンドを実行します。この
kubectl
コマンド 生成された Edge AppSheet 構成プロファイルが Kubernetes に挿入されます。kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
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
次のコマンドを実行して、Webhook の Webhook インジェクションを有効にします。
kubectl label namespace default edgemicro-injection=enabled
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 を使用して、サービスを呼び出すことができます。 実行することもできます。
Ingress コントローラの外部 IP アドレスを取得します。
kubectl get ing -o wide
出力例:
NAME HOSTS ADDRESS PORTS AGE gateway * 35.238.13.54 80 1m
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:]")
変数がエクスポートされたことを確認します。例:
echo $GATEWAY_IP
出力例:
35.238.249.62
サービスを呼び出します。
curl $GATEWAY_IP
出力:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
次に、API プロダクトとデベロッパー アプリを構成して、承認の欠落エラーに対処します。 これにより、有効な API キーを取得できます。鍵を認証サービスに追加すると、 ヘッダーを指定しないと、呼び出しは成功し、このエラーは表示されません。
Apigee Edge でコンポーネントを作成する
次に、Apigee Edge で API プロダクトとデベロッパー アプリを作成します。
API プロダクトを作成する
- Apigee Edge にログインします。
- サイド ナビゲーション メニューで、[Publish] > [API Products] を選択します。
- [+ API Product] をクリックします。商品ページが表示されます。
[Product] ページに次のように入力します。以下に記載されていないフィールドについては、 デフォルト値を使用できます。指示があるまで保存しないでください。
名前 hello-world-product
表示名 Edge Micro hello product
環境 test
[Path] セクションで、[+ Custom Resource] をクリックします。
パス
/
を追加します。もう一度 [+ Custom Resource] をクリックし、パス
/**
を追加します。[API Proxies] セクションで、[+ API Proxy] をクリックして [edgemicro-auth] を追加します。
API プロダクトを保存します。
デベロッパー アプリを作成する
- サイド ナビゲーション メニューで、[アプリ] を選択します。
- [+ App] をクリックします。[Developer App Details] ページが表示されます。
[Developer App] ページに、次のように入力します。指示があるまで保存しない できます。
名前 hello-world-app
表示名 Edge Micro hello app
デベロッパー プルダウン メニューからデベロッパーを選択します。 [Credentials] セクションで、[+ Product] をクリックし、 作成した
hello-world-product
。[保存] をクリックします。
すべてのデベロッパー アプリを一覧表示するページに戻ります。
作成したアプリ
hello-world-app
を選択します。[Consumer Key] の横にある [Show] をクリックします。
コンシューマ キーの値をコピーします。この値は API キー: 次のサービスに対して安全な API 呼び出しを行います。
helloworld
サービス。数分待って、Apigee で行った変更が反映されるまでに数分かかります にデプロイされた Edge Dataproc のインスタンスと Edge を同期します。 作成します。
API を呼び出す
構成の変更がマイクロゲートウェイに取り込まれたら、次のことができます。 次のテストを行います。
API キーなしで API を呼び出す。次のようなエラー メッセージが表示されます。 下にあります。
curl $GATEWAY_IP
予想される出力:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
API 呼び出しを成功させるには、API キーが必要です。
作成したデベロッパー アプリからコンシューマ キーを取得します。この値は テストプロキシの呼び出しに必要な 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 でサイドカー プロキシとして機能します。
次のステップ
詳細については、タスクセクションをご覧ください カスタム プラグインの追加、デプロイのスケーリング、構成の変更、 実行したい他のタスクを実行できます