Manually creating ingress definitions for IBM App Connect instances in an Azure Kubernetes Service (AKS) cluster
Use these instructions to expose your deployed App Connect Dashboard, App Connect Designer, integration
server, and switch server instances in an Azure Kubernetes Service (AKS)
environment to external traffic. If you have enabled the API for IBM® App Connect in containers to administer resources in the App Connect Dashboard, you also need to expose the API to external
traffic.
Before you begin
An ingress controller must be installed and running in the AKS cluster.
You can install an ingress controller in various ways. The following steps describe how to install an NGINX ingress controller by using a Helm chart.
- Create a namespace called
ingress
in your cluster.kubectl create namespace ingress
- Add the NGINX ingress controller chart repository and then update all Helm repositories in your
system by running the following commands.
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo update
- Install the Helm chart in the
ingress
namespace by running either of the following helm commands. These commands install an NGINX ingress controller (nginx-ingress
) for use with your App Connect Dashboard (and API if enabled), App Connect Designer, integration server, and switch server instances. The command varies slightly for a switch server, which is required to configure connectivity for hybrid integrations that interact with callable flows in IBM App Connect Enterprise or IBM Integration Bus, or with applications in a private network. (For more information about switch servers, see App Connect Switch Server reference.)Note: The helm commands provide a basic definition to get you started, and can be extended with additional settings if required for your environment.- If you do not intend to deploy hybrid integrations that require a switch server, run the
following helm command.
helm install nginx-ingress ingress-nginx/ingress-nginx \ --namespace ingress \ --set controller.replicaCount=2 \ --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \ --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \ --set controller.admissionWebhooks.patch.nodeSelector."beta\.kubernetes\.io/os"=linux
- If you require a switch server for callable flow or private network connectivity, run the
helm command with an additional --set flag:
--set "controller.extraArgs.enable-ssl-passthrough="
This setting needs to be applied to any NGINX ingress controller that allows external integration servers, which have been configured with an agentx.json, agenta.json, or switchclient.json file, to connect directly to the switch server. For information about working with the agentx.json or agenta.json files, see Configuring connectivity between a calling flow and a callable flow, Agentx type, and AgentA type. For information about connecting your flows or integrations to a private network, see Connecting to a private network from App Connect Designer, Connecting to a private network from the App Connect Dashboard, and Private Network Agent type.
helm install nginx-ingress ingress-nginx/ingress-nginx \ --namespace ingress \ --set controller.replicaCount=2 \ --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \ --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \ --set controller.admissionWebhooks.patch.nodeSelector."beta\.kubernetes\.io/os"=linux \ --set "controller.extraArgs.enable-ssl-passthrough="
- If you do not intend to deploy hybrid integrations that require a switch server, run the
following helm command.
About this task
For each App Connect Dashboard (and API if enabled), App Connect Designer, integration server, or switch server instance that is created, you must create an ingress resource with rules that define an externally-reachable URL for accessing the running service in the cluster.
Work with a cluster administrator if necessary to create and apply the ingress resources.
- Creating an ingress route for an App Connect Dashboard UI
- Creating an ingress route for an API that is enabled for the App Connect Dashboard
- Creating an ingress route for a switch server
- Creating an ingress route for an App Connect Designer instance
- Creating an ingress route for the internal integration runtime that is deployed for App Connect Designer 13.0.1.0-r2 or later
- Creating an ingress route for the internal integration server that is deployed for App Connect Designer 13.0.1.0-r1 or earlier
- Creating an ingress route for an integration server in the App Connect Dashboard
Creating an ingress route for an App Connect Dashboard UI
Create an ingress resource that will be used to route external traffic to an App Connect Dashboard UI in your cluster.
Procedure
To create an ingress route for a running Dashboard UI, complete the following steps:
Creating an ingress route for an API that is enabled for the App Connect Dashboard
Create an ingress resource that will be used to route external traffic to an API for IBM App Connect in containers, which is enabled for an App Connect Dashboard instance in your cluster. This API provides REST API facilities for administering resources that the App Connect Dashboard manages.
For more information about the API, see API for IBM App Connect in containers.
Procedure
To create an ingress route for an API that is enabled for the Dashboard, complete the following steps:
Creating an ingress route for a switch server
To expose a switch server to external traffic, you must create an ingress route immediately after you create the switch server because during its initialization, the switch server will need to provide a TLS host name (defined in an ingress resource) in order to request a certificate for this host. To prevent certificate-related errors from the ingress controller, the host name in the generated certificate and the TLS host name that is defined in your ingress resource must match.
Procedure
To create an ingress route for a newly deployed switch server, complete the following steps:
Creating an ingress route for an App Connect Designer instance
Create an ingress resource that will be used to route external traffic to an App Connect Designer instance in your cluster.
About this task
When a Designer instance at version 13.0.1.0-r2 or later is deployed, an integration runtime is automatically deployed to provide support for the built-in test facility for flows. After you create an ingress route for a Designer instance, you will also be required to create an ingress route for this integration runtime as described in Creating an ingress route for the internal integration runtime that is deployed for App Connect Designer 13.0.1.0-r2 or later. If you are using a Designer instance at version 13.0.1.0-r1 or earlier, an integration server is deployed to provide support for the built-in test facility for flows. After you create an ingress route for the Designer instance, you similarly need to create an ingress route for the integration server as described in Creating an ingress route for the internal integration server that is deployed for App Connect Designer 13.0.1.0-r1 or earlier.
Procedure
To create an ingress route for a running Designer instance, complete the following steps:
What to do next
- 13.0.1.0-r2 or later Designer instance: Creating an ingress route for the internal integration runtime that is deployed for App Connect Designer 13.0.1.0-r2 or later
- 13.0.1.0-r1 or earlier Designer instance: Creating an ingress route for the internal integration server that is deployed for App Connect Designer 13.0.1.0-r1 or earlier
Creating an ingress route for the internal integration runtime that is deployed for App Connect Designer 13.0.1.0-r2 or later
When you create an App Connect Designer instance with a
spec.version value that resolves to 13.0.1.0-r2 or later, the IBM App Connect Operator (version 12.5.0 or later) automatically deploys an
internal integration runtime for that Designer instance. This integration runtime supports your
Designer flows and enables you to verify the behavior of a running API flow by using the built-in
test facility to call the endpoints for the implemented API operations. The internal integration
runtime is named <designerAuthoringCRName>-designer
by
default.
You must create an ingress resource that will be used to route external traffic to
this integration runtime in the cluster, and then configure the correct endpoints for calling the
API operations. (For information about creating API flows, see Creating and managing flows in App Connect Designer.)
Procedure
To create an ingress route for the internal integration runtime that is deployed for a Designer instance, complete the following steps:
Creating an ingress route for the internal integration server that is deployed for App Connect Designer 13.0.1.0-r1 or earlier
When you create an App Connect Designer instance with a
spec.version value that resolves to 13.0.1.0-r1 or earlier, the IBM App Connect Operator (version 12.4.0 or earlier) automatically deploys an
internal integration server for that Designer instance. This integration server supports your
Designer flows and enables you to verify the behavior of a running API flow by using the built-in
test facility to call the endpoints for the implemented API operations. The internal integration
server is named <designerAuthoringCRName>-designer
by
default.
You must create an ingress resource that will be used to route external traffic to
this integration server in the cluster, and then configure the correct endpoints for calling the API
operations. (For information about creating API flows, see Creating and managing flows in App Connect Designer.)
Procedure
To create an ingress route for the internal integration server that is deployed for a Designer instance, complete the following steps:
Creating an ingress route for an integration server in the App Connect Dashboard
When you deploy one or more BAR files to an integration server, you can indicate whether an HTTP or HTTPS route should be used to externally expose the service that identifies the set of pods where the integration runs. You must manually create this external route for the selected HTTP or HTTPS protocol. These instructions describe how to create an ingress resource for an integration server and configure the endpoints in your cluster.
- Set spec.forceFlowHTTPS.enabled to
true
to force all HTTP Input nodes and SOAP Input nodes in all deployed flows in the integration server to use TLS. - Set spec.forceFlowHTTPS.secretName to the name of a secret that stores a user-supplied public certificate/private key pair to use for enforcing TLS.
- Set spec.service.endpointType to
https
.
Procedure
To create an ingress route for a running integration server, complete either of the following steps: