Shows how you can establish path based routing with ingress rules for nginx server and httpd server using nginx ingress controller. I have used helm for installing nginx ingress controller.
watch kubectl get po --all-namespaces
helm init
watch kubectl get po --all-namespaces
helm install stable/nginx-ingress --name ingress-nginx
helm ls
kubectl create deployment --image nginx nginx
kubectl scale --replicas=3 deployment.apps/nginx
sudo kubectl create service nodeport nginx --tcp=80:80
kubectl create -f httpd-deployment.yml
kubectl scale --replicas=3 deployment.apps/httpd
sudo kubectl create service nodeport httpd --tcp=80:80
kubectl get svc
- controlplane $
curl 10.106.141.1
Will showIt works!
httpd webpage. curl 10.110.33.212
will show the nginx webpage.- controlplane $
curl 10.105.21.105
default backend - 404controlplane kubectl create -f ingress.yml
ingress-rules.yml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: server-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: subdomain1.myapp.com
http:
paths:
- path: /httpd
backend:
serviceName: httpd
servicePort: 80
- path: /nginx
backend:
serviceName: nginx
servicePort: 80
- host: subdomain2.myapp.com
http:
paths:
- path: /httpd
backend:
serviceName: httpd
servicePort: 80
- path: /nginx
backend:
serviceName: nginx
servicePort: 80
ingress-rules.yml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: server-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- myapp.com
secretName: myapp-secret-tls
rules:
- host: myapp.com
http:
paths:
- path: /httpd
backend:
serviceName: httpd
servicePort: 80
- path: /nginx
backend:
serviceName: nginx
servicePort: 80
myapp-secret.yml
apiVersion: v1
kind: Secret
metadata:
name: myapp-secret-tls
namespace: default
data:
tls.crt: base64 encoded cert
tls.key: base64 encoded key
type: kubernetes.io/tls