Manually creating ingress definitions for IBM App Connect instances at version 13.0.2.0-r1 or earlier in an IBM Cloud Kubernetes Service cluster
Use these instructions to expose your deployed App Connect Dashboard, App Connect Designer, integration
runtime, and switch server instances in an IBM Cloud Kubernetes Service 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.
If you are running IBM App Connect Operator 12.8.0 or later on IBM Cloud Kubernetes Service, you no longer need to manually create ingress definitions for your IBM App Connect instances. IBM App Connect Operator 12.8.0 introduces the facility to automatically create and manage ingress resources. When you create or update your IBM App Connect instances, you can enable ingress in the custom resource settings, which results in the requisite ingress resources being created. For more information, see Automatically creating ingress definitions for IBM App Connect instances in an IBM Cloud Kubernetes Service cluster.
Before you begin
When you create an IBM Cloud Kubernetes Service cluster, IBM provides the following components that are required to use ingress: ingress domain, ingress class, Application Load Balancers (ALBs), and TLS certificate. You reference these components when you create ingress resources for your App Connect Dashboard (and API if enabled), App Connect Designer, integration runtime, and switch server instances. For more information, see IBM-provided Ingress components in the IBM Cloud Kubernetes Service documentation.
If you deploy a switch server, some prerequisite configuration is required before you create its ingress resource. You use a switch server to configure connectivity for hybrid integrations in IBM App Connect, which interact with callable flows in IBM App Connect Enterprise or IBM Integration Bus. You also use a switch server to configure connectivity for flows or integrations that interact with applications in a private network. As a prerequisite for ingress, you therefore need to modify the default settings for ALBs that run the Kubernetes ingress image, and which listen for and forward incoming requests to the appropriate pod. To modify the default settings, customize the ALB deployment to enable SSL pass-through by creating a ConfigMap object:
- Run this ibmcloud command to list the IDs of
all ALBs in the cluster, where <cluster_name_or_ID> is the name or identifier
of your cluster.
ibmcloud ks ingress alb ls --cluster <cluster_name_or_ID>Tip: You can copy the cluster ID from the Overview page in your cluster.
In the output of the ibmcloud command, make a note of the IDs that start with
public.The following example shows output for a Classic cluster.ALB ID Enabled Status Type ALB IP Zone Build ALB VLAN ID NLB Version private-crdf253b6025d64944ab99ed63bb4567b6-alb1 false disabled private - dal12 ingress:1.1.2_2507_iks 2294021 - private-crdf253b6025d64944ab99ed63bb4567b6-alb2 false disabled private - dal10 ingress:1.1.2_2507_iks 2234947 - public-crdf253b6025d64944ab99ed63bb4567b6-alb1 true enabled public 169.48.228.78 dal12 ingress:1.1.2_2507_iks 2294019 - public-crdf253b6025d64944ab99ed63bb4567b6-alb2 true enabled public 169.46.17.6 dal10 ingress:1.1.2_2507_iks 2234945 -The following example shows output for a VPC cluster.ALB ID Enabled Status Type Load Balancer Hostname Zone Build private-crdf253b6025d64944ab99ed63bb4567b6-alb1 false disabled private - us-south-2 ingress:1.1.2_2507_iks private-crdf253b6025d64944ab99ed63bb4567b6-alb2 false disabled private - us-south-1 ingress:1.1.2_2507_iks public-crdf253b6025d64944ab99ed63bb4567b6-alb1 true enabled public 23f2dfb1-us-south.lb.appdomain.cloud us-south-2 ingress:1.1.2_2507_iks public-crdf253b6025d64944ab99ed63bb4567b6-alb2 true enabled public 23f2dfb1-us-south.lb.appdomain.cloud us-south-1 ingress:1.1.2_2507_iks - From your local computer, create a YAML file (for example,
appconn-ingress-configmap.yaml) for a ConfigMap object named
ibm-ingress-deploy-config. In the YAML sample, replace <alb1_id> to <albN_id> with the individualpublicALB IDs from the previous step. The enableSslPassthrough setting enables SSL passthrough for the ALBs, and ensures that the TLS connection is not terminated and passes through untouched.apiVersion: v1 kind: ConfigMap metadata: name: ibm-ingress-deploy-config namespace: kube-system data: <alb1_id>: '{"enableSslPassthrough":"true"}' <alb2_id>: '{"enableSslPassthrough":"true"}' ... <albN_id>: '{"enableSslPassthrough":"true"}' - Create the ConfigMap
object.
kubectl apply -f appconn-ingress-configmap.yaml - Update your ALBs to pick up the
changes.
ibmcloud ks ingress alb update -c <cluster_name_or_ID>Wait while the changes are applied to your ALBs.
- To confirm the update, inspect the ALB (ingress) pod logs in the
kube-systemnamespace.- Run the following command to get the IDs of the ALB pods that are running in your cluster.
kubectl get pods -n kube-system | grep albThese ingress pods are named in the format
public-<cluster_id>-albN-*, where N represents an integer; for example:public-crdf253b6025d64944ab99ed63bb4567b6-alb1-5d6d86fbbc-kxj6z. - Get the logs for the ALB
pods.
kubectl logs <alb_pod_ID> -n kube-systemIn the pod logs, look for this message: "Starting TLS proxy for SSL Passthrough".
- Run the following command to get the IDs of the ALB pods that are running in your cluster.
For more information about ALBs and ingress, see Application Load Balancers (ALBs) and Customizing the ALB deployment in the IBM Cloud Kubernetes Service documentation. For more information about switch servers, see App Connect Switch Server reference.
About this task
For each App Connect Dashboard (and API if enabled), App Connect Designer, integration runtime, or switch server instance, you must create an ingress resource with rules that define an externally-reachable URL for accessing the running service in the cluster.
IBM provides ingress classes that implement the NGINX ingress controller, so you do not need to manually install an ingress controller in your IBM Cloud Kubernetes Service cluster. When you define an ingress resource for an instance, you simply need to specify the ingress class that determines which type of ingress controller is used.
For these instructions, an IBM Cloud Kubernetes Service cluster was provisioned on a
Classic infrastructure, and the IBM-provided ingress subdomain,
public-iks-k8s-nginx ingress class, and default TLS certificate are used. For more
information, see Supported infrastructure providers, Ingress domain, Ingress class, and Setting up Ingress in the IBM Cloud Kubernetes Service
documentation.
Work with a cluster administrator if necessary to create and apply the ingress resources.
- Creating an ingress resource for an App Connect Dashboard UI
- Creating an ingress resource for an API that is enabled for the App Connect Dashboard
- Creating an ingress resource for a switch server
- Creating an ingress resource for an App Connect Designer instance
- Creating an ingress resource for the internal integration runtime that is deployed for App Connect Designer
- Creating an ingress resource for an integration runtime in the App Connect Dashboard
Creating an ingress resource 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 resource for a running Dashboard UI, complete the following steps:
Creating an ingress resource 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 resource for an API that is enabled for the Dashboard, complete the following steps:
Creating an ingress resource for a switch server
To expose a switch server to external traffic, you must create an ingress resource 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 resource for a newly deployed switch server, complete the following steps:
Creating an ingress resource 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 is deployed, an integration runtime is automatically deployed to provide support for the built-in test facility for flows. After you create an ingress resource for a Designer instance, you will also be required to create an ingress resource for this integration runtime as described in Creating an ingress resource for the internal integration runtime that is deployed for App Connect Designer.
Procedure
To create an ingress resource for a running Designer instance, complete the following steps:
What to do next
Create an ingress resource that will be used by the built-in test facility for API flows in your App Connect Designer instance. For more information, see Creating an ingress resource for the internal integration runtime that is deployed for App Connect Designer.
Creating an ingress resource for the internal integration runtime that is deployed for App Connect Designer
When you create an App Connect Designer
instance,
the IBM App Connect Operator 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 resource for the internal integration runtime that is deployed for a Designer instance, complete the following steps:
Creating an ingress resource for an integration runtime in the App Connect Dashboard
When you deploy one or more BAR files to an integration runtime, 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 runtime and configure the endpoints in your cluster.
- Set spec.forceFlowsHTTPS.enabled to
trueto force all HTTP Input nodes and SOAP Input nodes in all deployed flows in the integration runtime to use TLS. - Set spec.forceFlowsHTTPS.secretName to the name of a secret that stores a user-supplied public certificate/private key pair to use for enforcing TLS.
- Set spec.restApiHTTPS.enabled to
https.
Procedure
To create an ingress resource for a running integration runtime, complete either of the following steps:

