GaaS on Azure Deployment Steps

Create Azure Container Registry [Optional]

1) Log into Azure Container Registry

$ az acr login --name gobblintest

2) Tag docker images to container registry

$ docker tag <gaas_image_id> gobblintest.azurecr.io/gobblin-service
$ docker tag <standalone_image_id> gobblintest.azurecr.io/gobblin-standalone

3) Push the images

$ docker push gobblintest.azurecr.io/gobblin-service
$ docker push gobblintest.azurecr.io/gobblin-standalone

The images should now be hosted on azure with the tag:latest

Deploy the base K8s cluster

1) Create a resource group on Azure

2) Create a cluster and deploy it onto the resource group

az aks create --resource-group <resource_group_name> --name GaaS-cluster-test --node-count 1 --enable-addons monitoring --generate-ssh-keys

3) Switch kubectl to use azure

4) Check status of cluster

$ kubectl get pods

Install the nginx ingress to connect to the Azure Cluster

1) Install helm if you don't currently have it

brew install helm
helm init

2) Deploy the nginx helm chart to create the ingress

helm install stable/nginx-ingress

If this is the first time deploying helm (v2.0), you will need to set up the tiller, which is a helm serviceaccount with sudo permissions that lives inside of the cluster. Otherwise you'll run into this issue.

Error: configmaps is forbidden: User "system:serviceaccount:kube-system:default" cannot list configmaps in the namespace "kube-system"

To set up the tiller (steps are also found in the issue link)

kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl edit deploy --namespace kube-system tiller-deploy #and add the line serviceAccount: tiller to spec/template/spec

3) Deploy the ingress controller in gobblin-kubernetes/gobblin-service/azure-cluster

4) Run kubectl get services, and the output should look something like this:

gaas-svc                                        ClusterIP      10.0.176.58    <none>           6956/TCP                     16h
honorary-possum-nginx-ingress-controller        LoadBalancer   10.0.182.255   <EXTERNAL_IP>    80:30488/TCP,443:31835/TCP   6m13s
honorary-possum-nginx-ingress-default-backend   ClusterIP      10.0.236.153   <none>           80/TCP                       6m13s
kubernetes                                      ClusterIP      10.0.0.1       <none>           443/TCP                      10d

5) Send a request to the IP for the honorary-possum-nginx-ingress-controller