您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
引言
本主題說明如何在 Kubernetes 叢集中以補充 Proxy 執行 Edge Microgateway。補充資訊部署有兩種做法:手動和自動插入。本主題將說明這兩種選項。
詳情請參閱「Kubernetes 上的 Edge Microgateway 簡介」。
事前準備
完成必備條件中所述的步驟。
部署測試服務
部署簡單的「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
使用手動補充資訊插入功能
在兩種補充資訊插入選項中,手動補充資訊插入是更簡單、更直接的方法,且可透過單一 kubectl
指令完成。
設定 Edge Microgateway
下列指令會為您的 Apigee 機構設定 Edge Microgateway,並部署 Proxy 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 Microgateway 做為補充資訊
如要手動將 Edge Microgateway 插入服務 Pod 做為補充 Proxy,請執行下列指令:
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 Microgateway 的補充資訊部署了。如需詳細步驟,請參閱測試 Proxy。
使用自動補充資訊插入功能
在下列步驟中,您將為 Kubernetes 叢集設定自動補充資訊插入功能。這項設定可讓 Edge Microgateway 以補充 Proxy 的形式插入 Kubernetes 中。
安裝補充資訊插入器
安裝 ConfigMap 以啟用 Edge Microgateway 的補充資訊:
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 Microgateway 側車插入器 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 Microgateway 補充資訊插入器 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 是否正在叢集內運作。命名空間
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 Microgateway
在下一個步驟中,您將執行互動式指令碼,以建立與 Kubernetes 命名空間相關聯的 Edge Microgateway 設定。然後,將設定插入 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]:
如果使用的是公有雲,請輸入 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 Microgateway 設定檔插入 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 Microgateway 會自動插入服務的 Pod 中。
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
確認已將 Edge Microgateway 和測試服務同時插入 Pod:
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 Microgateway 的自動補充資訊部署作業。如需詳細步驟,請參閱測試 Proxy。
測試 Proxy
使用補充資訊部署功能時,系統會自動為您建立服務的 API Proxy。您不需要建立「Edge Microgateway-aware」Proxy。
取得 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"}
接下來,您將在 Edge 上設定 API 產品和開發人員應用程式,以解決缺少的授權錯誤,以便取得有效的 API 金鑰。當您將金鑰新增至 API 呼叫的授權標頭後,呼叫就會成功,您不會看到這個錯誤。
在 Apigee Edge 上建立元件
接著,在 Apigee Edge 上建立 API 產品和開發人員應用程式。
建立 API 產品
- 登入 Apigee Edge。
- 在側邊導覽選單中,依序選取「Publish」(發布) >「API Products」(API 產品)。
- 按一下「+ API 產品」。顯示產品頁面。
按照下列方式填寫「產品」頁面。對於以下未提及的欄位,您可以使用預設值。除非另有指示,否則請勿儲存。
名稱 hello-world-product
顯示名稱 Edge Micro hello product
環境 test
在「Path」部分中,按一下「+ 自訂資源」。
新增路徑
/
。再按一下「+ 自訂資源」,然後新增路徑
/**
在「API Proxy」部分,按一下「+ API Proxy」並新增 edgemicro-auth。
儲存 API 產品。
可建立開發人員應用程式
- 選取側邊導覽選單的「應用程式」。
- 按一下「+ 應用程式」。系統隨即會顯示「開發人員應用程式詳細資料」頁面。
按照下列方式填寫「開發人員應用程式」頁面。除非另有指示,否則請勿儲存。
名稱 hello-world-app
顯示名稱 Edge Micro hello app
開發人員 從下拉式選單中選取開發人員。 在「Credentials」(憑證) 區段中,按一下「+ Product」(+ 產品) 並選取您剛剛建立的
hello-world-product
。點按「儲存」。
您會回到列出所有開發人員應用程式的頁面。
選取您剛建立的應用程式
hello-world-app
。按一下「Consumer Key」旁邊的「Show」。
複製用戶端金鑰的值。這個值是您將用來對
helloworld
服務進行安全的 API 呼叫 API 金鑰。請稍候片刻。您在 Apigee Edge 上所做的變更需要幾分鐘才能與叢集中部署的 Edge Microgateway 執行個體同步。
呼叫 API
將設定變更提取至微閘道後,您就可以執行下列測試。
不使用 API 金鑰呼叫 API。您將收到如下所示的錯誤訊息:
curl $GATEWAY_IP
預期輸出:
{"error":"missing_authorization","error_description":"Missing Authorization header"}
如要成功呼叫 API,您需要 API 金鑰。
從您建立的開發人員應用程式取得用戶端金鑰。此值為呼叫測試 Proxy 所需的 API 金鑰:
curl -H 'x-api-key:your-edge-api-key' $GATEWAY_IP
例如:
curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP
輸出內容:
Hello world
部署至 Pod 的 helloworld 服務會傳回「Hello World」回應。先透過 Edge Microgateway 傳遞至該服務的呼叫,也就是執行驗證的位置。如果您看到「Hello World」回應,表示您已成功將 Edge Microgateway 做為 helloworld 服務 Pod 中的補充 Proxy 運作。
後續步驟
請參閱「工作」一節,瞭解如何新增自訂外掛程式、調度部署資源、變更設定,以及其他想執行的工作。