Docker/Kubernetes workshop
You will learn about:
Configuring an ingress controller can be useful in the following scenarios:
/v1/
, /v2/
)The ingress resource can expose Kubernetes services on defined hosts and path rules.
The cluster is pre-installed with an Ingress service and its external IP is now the only entrypoint to all app services.
Nginx Ingress defaults comes with a global ingress shared across all namespaces in the cluster.
The external IP of the Ingress can be found with:
kubectl get service nginx-ingress-controller -n nginx-ingress
If the nginx controller is installed successfully, the external IP should respond 200 on /healthz
and 404 on /
.
Run the following command:
kubectl apply -f ingress-v0-path.yaml
The ingress definition ingress-v0-path.yaml
has an annotation kubernetes.io/ingress.class: nginx
that defines which ingress controller is used.
When using a GCP Load Balancer that acts as ingress, this value would be gce
instead of nginx
.
The service should be accessible on the ingress external IP at http://[ingress-ip]/coins/index.html
Run the following command which will update the previous route-based version of the ingress:
kubectl apply -f ingress-v1-domain.yaml
The ingress definition has a host
which is mapped to a domain name.
The hosted zone of this domain includes a DNS A record on dockercoins-v1.wigarcia.com
with the ingress IP as its value.
As a consequence, the DNS resolution of http://dockercoins-v1.wigarcia.com works and through the ingress resource, the dockercoins service can also now be reached.
Run the following command:
kubectl apply -f ingress-v1-v2.yaml
With the presence of 2 backends in the list of HTTP paths:
simpleapp
is available at http://dockercoins.wigarcia.com/v1dockercoins
is available at http://dockercoins.wigarcia.com/v2/index.htmlThe 2 services are unrelated and run in separate pods. In a real world scenarion, this could be used to expose:
/v1
, /v2
, etc)/product1
, /product2
, etc)Links: