Install Ingress and Ingress Controller
In Managed Kubernetes, the Ingress Controller is not pre-installed in the cluster. To create an Ingress object yourself, install any Ingress Controller.
Ingress — A mechanism that provides application-level (L7) routing of incoming traffic is provided through the Ingress Controller. Ingress Controller is a proxy server deployed in a Managed Kubernetes cluster. The choice of controller depends on the requirements of the applications hosted in the Managed Kubernetes cluster. Check out list of existing Ingress Controller.
Install Ingress Controller
Before creating an Ingress Controller, ensure that the pool has quota allocated for one public IP address.
We'll cover a basic Nginx installation — you can install a different Ingress Controller using official instructions.
Together with the Ingress Controller, a Service of type LoadBalancer (load balancer) with a public IP address will be automatically created. By default, a load balancer of type Basic with redundancy is created, but you can select the type of load balancer and configure other settings for it. The load balancer will be the entry point for accessing applications in the cluster, so there is no need to additionally create an internal load balancer.
- Without configuring the load balancer
- With configuring the load balancer
-
Add the ingress-nginx repository to Helm:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
-
Install the Ingress Controller:
helm install ingress-nginx/ingress-nginx --generate-name
-
Check that the Ingress Controller is installed:
kubectl get pods
Command output:
NAME READY STATUS RESTARTS AGE
ingress-nginx-1652172027-controller-6d765d1688-vr7ab 1/1 Running 0 51s -
A new load balancer will be created. It will appear in dashboard under Cloud Platform → Balancers.
-
Add the ingress-nginx repository to Helm:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
-
Get the default values and save them to the
values.yaml
file:helm inspect values ingress-nginx/ingress-nginx > values.yaml
-
Add required parameters for the balancer to the
annotations
block of thevalues.yaml
file.
A manifest fragment with an annotations
block:
```
metadata:
name: loadbalancer-name
labels:
app: nginx
annotations:
service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
````
-
Save your changes.
-
Install the Ingress Controller:
helm install ingress-nginx/ingress-nginx --generate-name -f values.yaml
-
Check that the Ingress Controller is installed:
kubectl get pods
Command output:
NAME READY STATUS RESTARTS AGE
ingress-nginx-1652172027-controller-6d765d1688-vr7ab 1/1 Running 0 51s -
A new load balancer will be created. It will appear in dashboard under Cloud Platform → Balancers.
Create Ingress
Manifesto example:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /testpath
pathType: Prefix
backend:
service:
name: test
port:
number: 80