The purpose of the prototype project is to demonstrate the configuration and use of ingress-nginx within the minikube environment. The tests include http and https terminated at the ingress controller. Cert-manager is used to manage self-signed certificates for the TLS.
The projects include the following:
- fruit-deploy - Deploys all components to a minikube environment.
- passionfruit - Deploys a simple pekko-http server with an http ingress.
- papaya - A simple pekko-http tls server with tls termination on the ingress.
The main components of the prototype project are:
- kubernetes via minikube
- cert-manager for certificate generation
- ingress-nginx for controller reverse proxy and ingress configuration management.
- apache pekko-http as an http server
The project deployment presumes the following:
- Clone fruit-deploy, passionfruit and papaya projects to the same directory.
- Running minikube environment - I have been using the following commands to start and restart minikube.
- minikube delete
- minikube start --cpus 4 --memory 12288 --vm-driver kvm2 --disk-size 100g --insecure-registry="192.168.39.0/24"
- minikube addons enable dashboard
- minikube addons enable ingress
- Linux machine. I use Ubuntu 20.04 There are several utility commands within deployKube.sh which are linux specific. These can easily be modified or removed for your operating system environment.
- Open the fruit-deploy/scripts/deployKube.sh file within a text editor.
- Open a terminal to process the commands.
- Modify the $PROTODIR env variable in the terminal to point to your source directory.
- Run the commands within the fruit-deploy/scripts/deployKube.sh separately.
Note -
The commands within the deployKube.sh are meant to be copy pasted into a terminal and not run as a bash script.
At the end of the deployKube.sh file there is a section for curl commands to invoke various deployed capabilities. A brief summary of the capabilites are:
- Both apple and banana support a path based http ingress to an echo server, as well as a host based ingress for invoking the echo server. The configurations for these can be found in
- Configuration - kube/apple-path.yaml Deployment Test - curl -kL http://$ipAddr/apple
- Configuration - kube/apple-host.yaml Deployment Test - curl -kL http://apple.foo.com/apple
- Configuration - kube/banana-path.yaml Deployment Test - curl -kL http://$ipAddr/banana
- Configuration - kube/banana-host.yaml Deployment Test - curl -kL http://banana.foo.com/banana
- mango supports an https request with tls passthrough to the echo server and cert-manager certificate generation.
- Configuration - kube/mango.yaml; tls - mango-tls-cert-issuer.yaml
- Deployment Test - curl -kL https://mango.foo.com/mango
- passion supports an http request to a simple pekko-http server
- Configuration - passionfruit.yaml
- Deployment Test - curl -kL http://passion.foo.com/passion
- papaya supports an https request to a simple pekko-http server with tls termination at the ingress, as well as cert-manager certificate generation.
- Configuration - papaya.yaml;
- secret - papaya-auth.yaml;
- pvc - papaya-pvc.yaml;
- tls - papaya-tls-cert-issuer.yaml
- Deployment Test - curl -kL https://papaya.foo.com/papaya