|
| 1 | +# Experimental Native Ingress |
| 2 | + |
| 3 | +## Install Deis Workflow (With experimental native ingress support) |
| 4 | + |
| 5 | +Now that Helm is installed and the repository has been added, install Workflow with a native ingress by running: |
| 6 | + |
| 7 | +``` |
| 8 | +$ helm install deis/workflow --namespace deis --set experimental_native_ingress=true,global.hostname="deis.com" |
| 9 | +``` |
| 10 | + |
| 11 | +Where `global.hostname` is a **required** parameter that is traditionally not required for Workflow. In this example we are using `deis.com` for `$hostname`. |
| 12 | + |
| 13 | + |
| 14 | + |
| 15 | +Helm will install a variety of Kubernetes resources in the `deis` namespace. |
| 16 | +Wait for the pods that Helm launched to be ready. Monitor their status by running: |
| 17 | + |
| 18 | +``` |
| 19 | +$ kubectl --namespace=deis get pods |
| 20 | +``` |
| 21 | + |
| 22 | +You should also notice that a Kubernetes ingress has been installed on your cluster. You can view it by running: |
| 23 | + |
| 24 | +``` |
| 25 | +$ kubectl get ingress --namespace deis |
| 26 | +``` |
| 27 | + |
| 28 | + |
| 29 | +Depending on the order in which the Workflow components initialize, some pods may restart. This is common during the |
| 30 | +installation: if a component's dependencies are not yet available, that component will exit and Kubernetes will |
| 31 | +automatically restart it. |
| 32 | + |
| 33 | +Here, it can be seen that the controller, builder and registry all took a few loops before they were able to start: |
| 34 | + |
| 35 | +``` |
| 36 | +$ kubectl --namespace=deis get pods |
| 37 | +NAME READY STATUS RESTARTS AGE |
| 38 | +deis-builder-hy3xv 1/1 Running 5 5m |
| 39 | +deis-controller-g3cu8 1/1 Running 5 5m |
| 40 | +deis-database-rad1o 1/1 Running 0 5m |
| 41 | +deis-logger-fluentd-1v8uk 1/1 Running 0 5m |
| 42 | +deis-logger-fluentd-esm60 1/1 Running 0 5m |
| 43 | +deis-logger-sm8b3 1/1 Running 0 5m |
| 44 | +deis-minio-4ww3t 1/1 Running 0 5m |
| 45 | +deis-registry-asozo 1/1 Running 1 5m |
| 46 | +deis-workflow-manager-68nu6 1/1 Running 0 5m |
| 47 | +``` |
| 48 | + |
| 49 | +## Install a Kubernetes Ingress Controller |
| 50 | + |
| 51 | +Now that Workflow has been deployed with the `global.exerpimental_native_ingress` flag set to `true`, we will need a Kubernetes ingress controller in place to begin routing traffic. |
| 52 | + |
| 53 | +Here is an example of how to use [traefik](https://traefik.io/) as an ingress controller for Workflow. Of course, you are welcome to use any controller you wish. |
| 54 | + |
| 55 | +``` |
| 56 | +$ helm install stable/traefik --name deis-ingress-001 --namespace kube-system |
| 57 | +``` |
| 58 | + |
| 59 | +## Configure DNS |
| 60 | + |
| 61 | +The experimental ingress feature requires a user to set up a hostname, and assumes the `deis.$host` convention. |
| 62 | + |
| 63 | +We need to point the `deis.$host` record to the public IP address of your ingress controller. You can get the public IP using the following command. |
| 64 | + |
| 65 | +``` |
| 66 | +$ kubectl get svc deis-ingress-001 --namespace kube-system |
| 67 | +NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
| 68 | +deis-ingress-001 10.23.253.220 104.154.159.184 80:30231/TCP,443:32264/TCP 19m |
| 69 | +``` |
| 70 | + |
| 71 | +If we were using `deis.com` as a hostname we would need to create the following A DNS record. |
| 72 | + |
| 73 | +| Name | Type | Value | |
| 74 | +| ----------------- |:-------------:| ---------------:| |
| 75 | +| deis.deis.com | A | 104.154.159.184 | |
| 76 | + |
| 77 | + |
| 78 | +Once all of the pods are in the `READY` state, and `deis.$host` resolves to the external IP found above Workflow is up an running! |
| 79 | + |
| 80 | +After installing Workflow, [register a user and deploy an application](../quickstart/deploy-an-app.md). |
0 commit comments