farva
This is the start to a Kubernetes Ingress Controller.
Start by building the code:
% ./build
Building bin/darwin_amd64/farva...done
Building bin/linux_amd64/farva...done
Now, assuming you've got a Kubernetes cluster with a single service, you can run farva:
% ./bin/darwin_amd64/farva --kubeconfig=<KUBECONFIG>
http {
server default__nginx {
listen 30190;
}
upstream default__nginx {
server 10.1.2.5; # nginx-aheok
server 10.1.2.7; # nginx-avop9
server 10.1.2.6; # nginx-bguu4
}
}
Canonincal hostnames
When farva generates server directives for http services, it automatically
derives a hostname from the ingress's name, ingress's namespace, and the
cluster-zone configuration provided at startup.
E.g. with an ingress named my-service in the default namespace, and with
farva launched using --cluster-zone=k8s.example.com
the "canonical" hostname
generated by farva would be my-service.default.gateway.k8s.example.com
.
Vanity hostnames
With default configuration, farva will find klondike.gateway/hostname-aliases
annotations on a given ingress object and use them to populate server_name
directives with additional hosts for host-based routing, in addition to the
canonical hostname already mentioned.
kubectl annotate ing my-service klondike.gateway/hostname-aliases=maximumwizardry.com