From a9c738e01dbc88636d5a6066a6bed9a388b6d472 Mon Sep 17 00:00:00 2001 From: Shayne Boyer Date: Wed, 1 Jul 2020 01:29:02 -0400 Subject: [PATCH] Add Recipe in docs for Github Actions (#557) * docs for specifying base image:tag * fixup items * adding recipe for actions * add intro * Update docs/recipes/githubactions_aks.md Co-authored-by: Justin Kotalik --- docs/recipes/githubactions_aks.md | 176 +++++++++++++++++++ docs/recipes/images/actions_recipe_dash.png | Bin 0 -> 39474 bytes docs/recipes/images/nginx_ingress_action.png | Bin 0 -> 13941 bytes 3 files changed, 176 insertions(+) create mode 100644 docs/recipes/githubactions_aks.md create mode 100644 docs/recipes/images/actions_recipe_dash.png create mode 100644 docs/recipes/images/nginx_ingress_action.png diff --git a/docs/recipes/githubactions_aks.md b/docs/recipes/githubactions_aks.md new file mode 100644 index 00000000..19e90eca --- /dev/null +++ b/docs/recipes/githubactions_aks.md @@ -0,0 +1,176 @@ +# Deployment to Azure Kubernetes Service using GitHub Actions + +Github Actions gives you the flexibilty to build automated workflows and deployments based on actions. There are now Kubernetes actions to get deployments to AKS. This is a simple recipe on how to use tye with Azure Kuberntes Service, Azure Container Service and GitHub Actions. + +## Setting up AKS + +The kubernetes cluster deployment can be deployed via the Azure portal or using the Azure CLI. It would be assumed that the cluster is deployed when implementing the recipe, however in this example Azure Container Registry (ACR) is used for storing the container images and as such integration is needed between these resources. The following deployment script ensures this is complete. + +```bash +az aks create -n -g --generate-ssh-keys --attach-acr --node-count 3 +``` + +## Sample Application + +The sample application is based on the [frontend-backend](../../samples/frontend-backend) adding in an ingress so we can browse the application from a public IP address once deployed. + +```yaml +name: microservice +registry: myregistry.azurecr.io +ingress: + - name: ingress + bindings: + - port: 8080 + rules: + - path: / + service: frontend + - path: /backend + service: backend +services: +- name: frontend + project: frontend/frontend.csproj + replicas: 2 +- name: backend + project: backend/backend.csproj +``` + +Running locally using `tye run` works as we'd expect, browsing the tye dashboard you should see the applications and the ingress similar to the following. + +![Tye Dashboard](images/actions_recipe_dash.png) + +## GitHub Action + +Setting up the GitHub Action requires a few actions to compose the complete integration. + +First, the name of the AKS cluster, resource group, and container registry are set as Environment variables. + +```yaml +env: + AZURE_AKS_CLUSTER: myaksclustername + AKS_RESOURCE_GROUP: myaksresourcegroup + ACR_RESOURCE_URI: myregistry.azurecr.io +``` + +Next, ensure that the version of .NET Core and tye are installed. + +```yaml +- name: 🧰 Setup .NET Core + uses: actions/setup-dotnet@v1.5.0 + with: + dotnet-version: 3.1.300 + +- name: 🛠 Install Tye tools + run: | + dotnet tool install -g Microsoft.Tye --version "0.2.0-alpha.20258.3" +``` + +Using the name of the registry and the [Azure docker action](https://github.com/Azure/docker-login) to login to your registry. This step is needed prior to running the `deploy` command which will build and push the images to the registry. + +>:bulb: The username and password for authentication is stored in [secrets](https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets) within the GitHub repository. + +```yaml +- name: 🔐 Login to ACR + uses: Azure/docker-login@v1 + with: + login-server: ${{ env.ACR_RESOURCE_URI }} + username: ${{ secrets.ACR_USER }} + password: ${{ secrets.ACR_PASSWORD }} +``` + +Next, we need to set the current context for our AKS cluster. Use [Azure aks-set-context action](https://github.com/Azure/aks-set-context) for this. + +```yaml +- name: 📃 Set AKS context + uses: azure/aks-set-context@v1 + with: + creds: '${{ secrets.AZURE_CREDENTIALS }}' + cluster-name: ${{ env.AZURE_AKS_CLUSTER }} + resource-group: ${{ env.AKS_RESOURCE_GROUP }} +``` + +At this point we are ready to deploy the application. As pointed out previously there is an ingress service being used. + +When deploying manually you can use the `--interactive` option and the tye CLI will detect the configuration, inspect the cluster and ask/prompt for deployment. However, in this case it is automated and we need to deploy it as a part of the action. + +We can just use a run action and apply the standard ingress from tye. + +```yaml +- name: 🌐 Install ingress-nginx + run: | + kubectl apply -f https://aka.ms/tye/ingress/deploy +``` + +Finally, deploy the application! + +>:bulb: adding the `-v Debug` for verbose logging + +```yaml +- name: ☸ tye deploy + run: | + tye deploy -v Debug +``` + +### Complete GitHub Action + +```yaml +name: Build and Deploy + +on: [push] + +env: + AZURE_AKS_CLUSTER: myaksclustername + AKS_RESOURCE_GROUP: myaksresourcegroup + ACR_RESOURCE_URI: myregistry.azurecr.io + +jobs: + build: + if: github.event_name == 'push' && contains(toJson(github.event.commits), '***NO_CI***') == false && contains(toJson(github.event.commits), '[ci skip]') == false && contains(toJson(github.event.commits), '[skip ci]') == false + name: tye deploy + runs-on: ubuntu-latest + steps: + - name: ✔ Checkout + uses: actions/checkout@v2 + + - name: 🧰 Setup .NET Core + uses: actions/setup-dotnet@v1.5.0 + with: + dotnet-version: 3.1.300 + + - name: 🛠 Install Tye tools + run: | + dotnet tool install -g Microsoft.Tye --version "0.3.0-alpha.20319.3" + + - name: 🔐 Login to ACR + uses: Azure/docker-login@v1 + with: + login-server: ${{ env.ACR_RESOURCE_URI }} + username: ${{ secrets.ACR_USER }} + password: ${{ secrets.ACR_PASSWORD }} + + - name: 📃 Set AKS context + uses: azure/aks-set-context@v1 + with: + creds: '${{ secrets.AZURE_CREDENTIALS }}' + cluster-name: ${{ env.AZURE_AKS_CLUSTER }} + resource-group: ${{ env.AKS_RESOURCE_GROUP }} + + - name: 🌐 Install ingress-nginx + run: | + kubectl apply -f https://aka.ms/tye/ingress/deploy + + - name: ☸ tye deploy + run: | + tye deploy -v Debug +``` + +## Viewing the deployed application + +To find the public IP address to browse to, run the following. + +```sh +kubectl get all -n ingress-nginx +``` + +Look for the `service/ingress-nginx-controller` with a type of `LoadBalancer`. The EXTERNAL-IP is the entry point for your application. + +![nginx ingress example](images/nginx_ingress_action.png) diff --git a/docs/recipes/images/actions_recipe_dash.png b/docs/recipes/images/actions_recipe_dash.png new file mode 100644 index 0000000000000000000000000000000000000000..6f833449be79d7e28f9889dabbf06b02f3abdc8d GIT binary patch literal 39474 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 W=EkHFnw1=d#Wzp$Pyt{h2=i literal 0 HcmV?d00001 diff --git a/docs/recipes/images/nginx_ingress_action.png b/docs/recipes/images/nginx_ingress_action.png new file mode 100644 index 0000000000000000000000000000000000000000..9a79ab46d159306d9eba4e68048808b2c0cf5baf GIT binary patch literal 13941 zcmc(mby$@B*6#;FK~X|lX%$cjMMSzw5D<_~>F#bpKtVuST5?3XK}w{gJ4ZyiMN*ox z#^>43-ut}gdjCDwHR^aXbH^{%`hGua@%pKpOY z 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 B!u9|F literal 0 HcmV?d00001