RECERT is a Kubernetes Operator that creates and renews SSL certificates issued by Let's Encrypt "A nonprofit Certificate Authority provider."
Traditional Certificate Authorities issue certificates by confirming that a business entity is who he says he is and that he owns and controls a particular domain. The Certificate is created and the system administer happily installs the cert on his webserver.
With Let's Encrypt there are no humans involved. Ownership of a domain is proven via a challenge issued by Let's Encrypt to the the webserver via a software product called certbot. In order for Let's Encrypt to work the webserver must have a special configuration to redirect traffic to certbot AND certbot must be able to update the certificates on the webserver.
The certbot setup is very simple for traditional servers and VMs, but runs into trouble on Kubernetes due to the effermeral nature of containers.
Recert creates a simple SSL proxy that forwards HTTPS traffic to another webserver within Kubernetes. When a Let's Encrypt challenge is issued Recert createsa Kubernetes job which will intercept the challenge and write the resulting certificate to a Kubernetes secret. The Recert operator will then restart the SSL proxy with the certificate secrets mounted.
TODO - Write instructions on how to install the operator
You will need to have the following tools installed to build, run and contribute to RECERT Containers:
If you are going to do some operator programming:
Not required, but these tools will make your life easier:
Follow link instructions: https://docs.docker.com/docker-for-mac/install/
brew install go
brew install helm
brew install skaffold
brew install git-flow
brew install kubectl
# go code
brew install operator-sdk
# optional
brew install stern
brew install kubectx
Before you can build you will need to run the tool setup once:
make tools
Initialize gitflow in your local repository:
git flow init -d
You may need to setup your GOPATH environment variable:
EXAMPLE .bash_profile
export GOPATH=<YOUR_RECERT_DIRECTORY>/go
make build