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 (ALB). Each Ingress resource provides different endpoints of the domain.
You can route the traffic to multiple Ingresses through a single AWS Load Balancer (ALB) 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 name of the IngressClassParams resource. |
3 | Specifies the name of the IngressGroup . All Ingresses of this class belong to this IngressGroup . |
Create an IngressClassParams
resource by running the following command:
$ oc create -f sample-single-lb-params.yaml
Create an 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 name of the IngressClass . |
3 | Defines the controller name. ingress.k8s.aws/alb denotes that all Ingresses 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 name of the IngressClassParams resource. |
Create an IngressClass
resource by running the following command:
$ oc create -f sample-single-lb-class.yaml
Create an 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 an AWSLoadBalancerController
resource by running the following command:
$ oc create -f sample-single-lb.yaml
Create an 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 name of an ingress. |
2 | Indicates the load balancer to provision in the public subnet and makes it accessible over the internet. |
3 | Specifies the order in which the rules from the Ingresses are matched when the request is received at the load balancer. |
4 | Indicates the load balancer will target OpenShift nodes to reach the service. |
5 | Specifies the Ingress Class that belongs to this ingress. |
6 | Defines the name of a domain used for request routing. |
7 | Defines the path that must route to the service. |
8 | Defines the name of the service that serves the endpoint configured in the ingress. |
9 | Defines the port on the service that serves the endpoint. |
Create the Ingress
resources by running the following command:
$ oc create -f sample-multiple-ingress.yaml