apiVersion: elbv2.k8s.aws/v1beta1 (1)
kind: IngressClassParams
metadata:
name: single-lb-params (2)
spec:
group:
name: single-lb (3)
You can route the traffic to different services that are part of a single domain through a single AWS Load Balancer. Each Ingress resource provides different endpoints of the domain.
You can route the traffic to multiple ingress resources through a single AWS Load Balancer by using the CLI.
You have an access to the OpenShift CLI (oc
).
Create an IngressClassParams
resource YAML file, for example, sample-single-lb-params.yaml
, as follows:
apiVersion: elbv2.k8s.aws/v1beta1 (1)
kind: IngressClassParams
metadata:
name: single-lb-params (2)
spec:
group:
name: single-lb (3)
1 | Defines the API group and version of the IngressClassParams resource. |
2 | Specifies the IngressClassParams resource name. |
3 | Specifies the IngressGroup resource name. All of the Ingress resources of this class belong to this IngressGroup . |
Create the IngressClassParams
resource by running the following command:
$ oc create -f sample-single-lb-params.yaml
Create the IngressClass
resource YAML file, for example, sample-single-lb-class.yaml
, as follows:
apiVersion: networking.k8s.io/v1 (1)
kind: IngressClass
metadata:
name: single-lb (2)
spec:
controller: ingress.k8s.aws/alb (3)
parameters:
apiGroup: elbv2.k8s.aws (4)
kind: IngressClassParams (5)
name: single-lb-params (6)
1 | Defines the API group and version of the IngressClass resource. |
2 | Specifies the ingress class name. |
3 | Defines the controller name. The ingress.k8s.aws/alb value denotes that all ingress resources of this class should be managed by the AWS Load Balancer Controller. |
4 | Defines the API group of the IngressClassParams resource. |
5 | Defines the resource type of the IngressClassParams resource. |
6 | Defines the IngressClassParams resource name. |
Create the IngressClass
resource by running the following command:
$ oc create -f sample-single-lb-class.yaml
Create the AWSLoadBalancerController
resource YAML file, for example, sample-single-lb.yaml
, as follows:
apiVersion: networking.olm.openshift.io/v1
kind: AWSLoadBalancerController
metadata:
name: cluster
spec:
subnetTagging: Auto
ingressClass: single-lb (1)
1 | Defines the name of the IngressClass resource. |
Create the AWSLoadBalancerController
resource by running the following command:
$ oc create -f sample-single-lb.yaml
Create the Ingress
resource YAML file, for example, sample-multiple-ingress.yaml
, as follows:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-1 (1)
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing (2)
alb.ingress.kubernetes.io/group.order: "1" (3)
alb.ingress.kubernetes.io/target-type: instance (4)
spec:
ingressClassName: single-lb (5)
rules:
- host: example.com (6)
http:
paths:
- path: /blog (7)
pathType: Prefix
backend:
service:
name: example-1 (8)
port:
number: 80 (9)
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-2
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/group.order: "2"
alb.ingress.kubernetes.io/target-type: instance
spec:
ingressClassName: single-lb
rules:
- host: example.com
http:
paths:
- path: /store
pathType: Prefix
backend:
service:
name: example-2
port:
number: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-3
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/group.order: "3"
alb.ingress.kubernetes.io/target-type: instance
spec:
ingressClassName: single-lb
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-3
port:
number: 80
1 | Specifies the ingress name. |
2 | Indicates the load balancer to provision in the public subnet to access the internet. |
3 | Specifies the order in which the rules from the multiple ingress resources are matched when the request is received at the load balancer. |
4 | Indicates that the load balancer will target OKD nodes to reach the service. |
5 | Specifies the ingress class that belongs to this ingress. |
6 | Defines a domain name used for request routing. |
7 | Defines the path that must route to the service. |
8 | Defines the service name that serves the endpoint configured in the Ingress resource. |
9 | Defines the port on the service that serves the endpoint. |
Create the Ingress
resource by running the following command:
$ oc create -f sample-multiple-ingress.yaml