現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください。 情報
はじめに
このトピックでは、Kubernetes クラスタで Edge Microgateway をスタンドアロン サービスとして実行する方法について説明します。
詳細については、Edge Microgateway と Kubernetes の統合の概要をご覧ください。
始める前に
前提条件の手順を完了します。
Edge Microgateway の構成
次のコマンドは、Apigee 組織用に Edge Microgateway を構成し、プロキシ edgemicro-auth
をデプロイします。
次のコマンドを実行します。
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 をサービスとしてデプロイします
次のコマンドを実行して、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
次のコードをコピーしてターミナルに貼り付けます。このコードは、
edge-microgateway
サービスへの外部アクセスを許可するように Ingress コントローラを設定します。場合によっては、コマンドをターミナルに貼り付けた後に 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
サービスへの外部アクセスを許可するように Ingress コントローラが構成されました。
テストサービスをデプロイする
次の手順では、簡単なテストサービスをクラスタにデプロイします。Ingress コントローラは、クラスタ外部からサービスを呼び出すことができません。後で、ターゲットとしてサービスを呼び出すように Edge Microgateway を構成します。Ingress コントローラが edge-microgateway
サービスへの外部アクセスを許可します。
サンプルの
helloworld
サービスをデプロイします。Ingress はこのサービスを認識しないため、クラスタの外部からサービスを呼び出すことはできません。kubectl apply -f samples/helloworld/helloworld-service.yaml
出力例:
service "helloworld" created deployment "helloworld" created
デプロイが成功したことを確認します。
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-aware」プロキシのターゲットとして追加します。「microgateway 対応」プロキシの作成は、Edge Microgateway の標準的な要件です。
また、Microgateway 対応プロキシについて知っておくべきこともご覧ください。
テストサービスの内部 IP を取得する
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
CLUSTER-IP
とPORT
の値をコピーします。たとえば上記の例では、値は10.55.254.255
と8081
です。システムによって値は異なります。
Edge に microgateway 対応プロキシを作成する
- Edge UI にログインします。
- 以前に Edge Microgateway を構成したときに指定した組織を選択します。
- サイド ナビゲーション メニューで [Develop] > [API Proxies] を選択します。
- [+ Proxy] をクリックします。[Build a Proxy] ウィザードが開きます。
- ウィザードの最初のページで、[Reverse proxy (mostcommon)] を選択します。
- [次へ] をクリックします。
ウィザードの [詳細] ページで、次のように構成します。ウィザードに次に示すとおりに入力してください。プロキシ名に接頭辞
edgemicro_
があることを確認します。- プロキシ名: edgemicro_hello
プロキシのベースパス: /hello
既存の API:
http://<cluster_ip>:<port>
例: http://10.55.254.255:8081
[次へ] をクリックします。
ウィザードの [Security] ページで、[Pass through (none)] を選択します。
[次へ] をクリックします。
ウィザードの [Virtual Hosts] ページで、デフォルトを受け入れます。
[次へ] をクリックします。
ウィザードの [Build] ページで、プロキシ設定を確認します。test 環境が選択されていることを確認します。
[Build and Deploy] をクリックします。
デベロッパーを作成する
デベロッパーは、既存のものをテスト用に使用するか、次のように操作して新しく作成できます。
- サイド ナビゲーション メニューで、[Publish] > [Developers] を選択します。
- [+ Developer] をクリックします。
- ダイアログに入力して、新しいデベロッパーを作成します。デベロッパー名とメールアドレスは自由に使用できます。
API プロダクトを作成する
以下で説明するように API プロダクトを作成します。プロダクトに、edgemicro-auth と edgemicro_hello の 2 つのプロキシを追加します。
プロダクト構成オプションの詳細については、API プロダクト構成について知っておくべきことをご覧ください。
- サイド ナビゲーション メニューで、[Publish] > [API Products] を選択します。
- [+ API Product] をクリックします。[プロダクトの詳細] ページが表示されます。
[プロダクトの詳細] ページに次のように入力します。指示があるまで [保存] をクリックしないでください。
名前 hello-world-product
表示名 Edge Micro hello product
環境 test
アクセス Public
キー承認タイプ Automatic
ページの下半分で、[+ Custom Resource] をクリックします。
リソースを
/
(単一のスラッシュ)に設定します。もう一度 [+ Custom Resource] を選択し、パス
/**
を追加します。ページの下部にある [+ API Proxy] をクリックします。
edgemicro-auth という名前のプロキシを選択します。
もう一度 [+ API Proxy] をクリックします。
edgemicro_hello という名前の microgateway 対応プロキシを選択します。
[保存] をクリックします。
デベロッパー アプリを作成する
- サイド ナビゲーション メニューで、[Publish] > [Apps] を選択します。
- [+ App] をクリックします。[Developer App Details] ページが表示されます。
[Developer App] ページに、次のように入力します。指示があるまで保存しないでください。
名前 hello-world-app
表示名 Edge Micro hello app
デベロッパー 作成したテスト デベロッパーを選択します。それ以外のデベロッパーを選択してもかまいません。 [Credentials] セクションで、[+ Product] をクリックし、作成したプロダクト(
hello-world-product.
)を選択します。[保存] をクリックします。
すべてのデベロッパー アプリの一覧が表示されるページに戻ります。
作成したアプリ(
hello-world-app
)を選択します。[Consumer Key] の横にある [Show] をクリックします。
コンシューマ キーの値をコピーします。この値が、
/hello
への安全な API 呼び出しに使用する API キーです。数分待って、Apigee Edge で行った変更がクラスタにデプロイされた Edge Microgateway のインスタンスと同期するまでに数分かかります。
プロキシをテストする
上り(内向き)IP アドレスを取得する
Ingress に外部 IP を使用すると、クラスタの外部から Edge Microgateway サービスを呼び出すことができます。
Ingress コントローラの外部 IP アドレスを取得します。
kubectl get ing -o wide
出力例:
NAME HOSTS ADDRESS PORTS AGE edge-microgateway-ingress * 35.238.249.62 80 37m
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:]")
変数がエクスポートされたことを確認します。例:
echo $GATEWAY_IP
出力例:
35.238.249.62
API の呼び出し
構成の変更が microgateway に取り込まれたら、API の呼び出しを試すことができます。Ingress コントローラ IP(変数 GATEWAY_IP
に保存した IP)を使用して API を呼び出します。この IP を使用すると、Kubernetes クラスタの外部からプロキシを呼び出すことができます。Ingress から Edge Microgateway へのマッピングは、クラスタに Edge Microgateway をデプロイしたときに作成されています。
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 キーが必要です。
作成したデベロッパー アプリからコンシューマ キーを取得します。この値は、テストプロキシを呼び出すために必要な 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 が正常に構成されています。
次のステップ
カスタム プラグインの追加、デプロイのスケーリング、構成の変更など、実行可能なタスクについては、タスクセクションをご覧ください。