title | description | author | ms.author | ms.service | ms.topic | ms.date |
---|---|---|---|---|---|---|
Deploy an Azure API Management gateway on Azure Arc |
Enable Azure Arc to deploy your self-hosted Azure API Management gateway. |
dlepow |
danlep |
api-management |
article |
05/25/2021 |
With the integration between Azure API Management and Azure Arc on Kubernetes, you can deploy the API Management gateway component as an extension in an Azure Arc-enabled Kubernetes cluster.
Deploying the API Management gateway on an Azure Arc-enabled Kubernetes cluster expands API Management support for hybrid and multi-cloud environments. Enable the deployment using a cluster extension to make managing and applying policies to your Azure Arc-enabled cluster a consistent experience.
[!INCLUDE preview]
Note
You can also deploy the self-hosted gateway directly to Kubernetes.
-
Connect your Kubernetes cluster within a supported Azure Arc region.
-
Install the
k8s-extension
Azure CLI extension:az extension add --name k8s-extension
If you've already installed the
k8s-extension
module, update to the latest version:az extension update --name k8s-extension
-
Provision a gateway resource in your Azure API Management instance.
-
In the Azure portal, navigate to your API Management instance.
-
Select Gateways from the side navigation menu.
-
Select and open your provisioned gateway resource from the list.
-
In your provisioned gateway resource, click Deployment from the side navigation menu.
-
Make note of the Token and Configuration URL values for the next step.
-
In Azure CLI, deploy the gateway extension using the
az k8s-extension create
command. Fill in thetoken
andconfiguration URL
values.- The following example uses the
service.type='LoadBalancer'
extension configuration. See more available extension configurations.
az k8s-extension create --cluster-type connectedClusters --cluster-name <cluster-name> \ --resource-group <rg-name> --name <extension-name> --extension-type Microsoft.ApiManagement.Gateway \ --scope namespace --target-namespace <namespace> \ --configuration-settings gateway.endpoint='<Configuration URL>' \ --configuration-protected-settings gateway.authKey='<token>' \ --configuration-settings service.type='LoadBalancer' --release-train preview
[!TIP]
-protected-
flag forauthKey
is optional, but recommended. - The following example uses the
-
Verify deployment status using the following CLI command:
az k8s-extension show --cluster-type connectedClusters --cluster-name <cluster-name> --resource-group <rg-name> --name <extension-name>
-
Navigate back to the Gateways list to verify the gateway status shows a green check mark with a node count. This status means the deployed self-hosted gateway pods:
- Are successfully communicating with the API Management service.
- Have a regular "heartbeat".
-
In the Azure portal, navigate to your Azure Arc-connected cluster.
-
In the left menu, select Extensions (preview) > + Add > API Management gateway (preview).
-
Select Create.
-
In the Install API Management gateway window, configure the gateway extension:
- Select the subscription and resource group for your API Management instance.
- In Gateway details, select the API Management instance and Gateway name. Enter a Namespace scope for your extension and optionally a number of Replicas, if supported in your API Management service tier.
- In Kubernetes configuration, select the default configuration or a different configuration for your cluster. For options, see available extension configurations.
:::image type="content" source="./media/how-to-deploy-self-hosted-gateway-azure-arc/deploy-gateway-extension-azure-arc.png" alt-text="Screenshot of deploying the extension in Azure portal":::
-
On the Monitoring tab, optionally enable monitoring to upload metrics tracking requests to the gateway and backend. If enabled, select an existing Log Analytics workspace.
-
Select Review + install and then Install.
The following extension configurations are required.
Setting | Description |
---|---|
gateway.endpoint |
The gateway endpoint's Configuration URL. |
gateway.authKey |
Token for access to the gateway. |
service.type |
Kubernetes service configuration for the gateway: LoadBalancer , NodePort , or ClusterIP . |
To enable monitoring of the self-hosted gateway, configure the following Log Analytics settings:
Setting | Description |
---|---|
monitoring.customResourceId |
Azure Resource Manager resource ID for the API Management instance. |
monitoring.workspaceId |
Workspace ID of Log Analytics. |
monitoring.ingestionKey |
Secret with ingestion key from Log Analytics. |
Note
If you haven't enabled Log Analytics:
- Walk through the Create a Log Analytics workspace quickstart.
- Learn where to find the Log Analytics agent settings.
- To learn more about the self-hosted gateway, see Azure API Management self-hosted gateway overview.
- Learn more about the observability capabilities of the Azure API Management gateways.
- Discover all Azure Arc-enabled Kubernetes extensions.
- Learn more about Azure Arc-enabled Kubernetes.
- Learn more about guidance to run the self-hosted gateway on Kubernetes in production.