Ingress controller implementation for HAProxy loadbalancer.
HAProxy Ingress is a Kubernetes ingress controller: it configures a HAProxy instance to route incoming requests from an external network to the in-cluster applications. The routing configurations are built reading specs from the Kubernetes cluster. Updates made to the cluster are applied on the fly to the HAProxy instance.
Documentation:
- Getting started guide: /docs/getting-started/
- Global and per ingress/service configuration keys: /docs/configuration/keys/
- Command-line options: /docs/configuration/command-line/
Supported versions:
HAProxy Ingress | Supported Kubernetes |
---|---|
[v0.13.6 ] |
1.19+ |
Steps to Backup existing haproxy:
mkdir backup-ingrees
cd backup-ingrees
kubectl get cm haproxy-configmap -oyaml -n ingress-haproxy > haproxy-configmap.yaml
kubectl get sa haproxy-ingress-serviceaccount -oyaml -n ingress-haproxy > haproxy-ingress-serviceaccount.yaml
kubectl get clusterrole haproxy-ingress-clusterrole -oyaml -n ingress-haproxy > haproxy-ingress-clusterrole.yaml
kubectl get role haproxy-ingress-role -oyaml -n ingress-haproxy > haproxy-ingress-role.yaml
kubectl get rolebinding haproxy-ingress-role-nisa-binding -oyaml -n ingress-haproxy > haproxy-ingress-role-nisa-binding.yaml
kubectl get clusterrolebinding haproxy-ingress-clusterrole-nisa-binding -oyaml -n ingress-haproxy > haproxy-ingress-clusterrole-nisa-binding.yaml
kubectl get deploy haproxy-ingress -oyaml -n ingress-haproxy > haproxy-ingress-deploy.yaml
kubectl get deploy ingress-default-backend -n ingress-haproxy -oyaml > ingress-default-backend.yaml
kubectl get svc ingress-default-backend -n ingress-haproxy -oyaml > ingress-default-backend-svc.yaml
kubectl get svc haproxy-ingress -n ingress-haproxy -oyaml > haproxy-ingress-svc.yaml
Steps to delete haproxy:
kubeconfig=$1
name=$2
namespace=$3
kubectl --kubeconfig=$kubeconfig get crd | grep -i $2 | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig delete crd
kubectl --kubeconfig=$kubeconfig get clusterrole | grep -i $2 | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig delete clusterrole
kubectl --kubeconfig=$kubeconfig get clusterrolebinding | grep -i $2 | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig delete clusterrolebinding
kubectl --kubeconfig=$kubeconfig get mutatingwebhookconfigurations | grep -i $2 | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig delete mutatingwebhookconfigurations
kubectl --kubeconfig=$kubeconfig get validatingwebhookconfigurations | grep -i $2 | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig delete validatingwebhookconfigurations
kubectl --kubeconfig=$kubeconfig get sa -n $namespace | grep -i $2 | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig -n $namespace delete sa
kubectl --kubeconfig=$kubeconfig get role -n $namespace | grep -i $2 | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig -n $namespace delete role
kubectl --kubeconfig=$kubeconfig get rolebinding -n $namespace | grep -i $2 | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig -n $namespace delete rolebinding
kubectl --kubeconfig=$kubeconfig get cm -n $namespace | grep -i $2 | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig -n $namespace delete cm
kubectl --kubeconfig=$kubeconfig get deploy -n $namespace | grep -i $2 | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig -n $namespace delete deploy
kubectl --kubeconfig=$kubeconfig get svc -n $namespace | grep -i $2 | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig -n $namespace delete svc
kubectl --kubeconfig=$kubeconfig get deploy -n $namespace | grep -i ingress-default-backend | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig -n $namespace delete deploy
kubectl --kubeconfig=$kubeconfig get svc -n $namespace | grep -i ingress-default-backend | awk {'print $1'} | xargs kubectl --kubeconfig=$kubeconfig -n $namespace delete svc
You can set values as below:
name=haproxy
namespace=ingress-haproxy