| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| version: '3' |
| |
| env: |
| KUBECONFIG: |
| sh: |- |
| if test -e $OPS_TMP/kubeconfig |
| then echo $OPS_TMP/kubeconfig |
| else echo ~/.kube/config |
| fi |
| |
| tasks: |
| prereq: |
| silent: true |
| cmds: |
| - test -n "$AKS_PROJECT" || die 'Please, configure AKS with "ops config aks"' |
| - az version || die 'You need to install and configure az cli tool before running this command.' |
| - config AKS_PREREQ_OK="true" |
| status: |
| - config AKS_PREREQ_OK |
| |
| update-yaml: |
| cmds: |
| - curl -L https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.yaml >cert-manager.yaml |
| - curl -L "https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml" >ingress-deploy.yaml |
| |
| kubeconfig: |
| desc: extract the kubeconfig to access |
| silent: true |
| cmds: |
| - task: prereq |
| - > |
| retry -t 20 -m 600 az aks get-credentials --name $AKS_NAME --resource-group $AKS_PROJECT --overwrite-existing -f "$OPS_TMP/kubeconfig_$AKS_NAME" 2>/dev/null |
| - cp "$OPS_TMP/kubeconfig_$AKS_NAME" "$OPS_TMP/aks-$AKS_NAME.kubeconfig" |
| |
| config: |
| desc: configure an Azure AKS kubernetes cluster |
| silent: true |
| cmds: |
| - $OPS config aks |
| |
| create: |
| silent: true |
| desc: create an Azure AKS kubernetes cluster |
| cmds: |
| - task: prereq |
| - az account set --subscription "$(az account show --query 'id' -o tsv)" |
| - > |
| az group show -a "$AKS_PROJECT" 2>/dev/null |
| || az group create --name "$AKS_PROJECT" --location "$AKS_REGION" |
| - > |
| az aks show -g "$AKS_PROJECT" -n "$AKS_NAME" 2>/dev/null |
| || az aks create |
| -g "$AKS_PROJECT" -n "$AKS_NAME" |
| --enable-managed-identity |
| --node-count "$AKS_COUNT" |
| --node-osdisk-size="$AKS_DISK" |
| --node-vm-size="$AKS_VM" |
| --ssh-key-value="$AKS_SSHKEY" |
| - task: kubeconfig |
| - task: ingress |
| - task: certman |
| - config OPERATOR_CONFIG_KUBE=auto |
| |
| delete: |
| silent: true |
| desc: delete the current Azure AKS cluster |
| cmds: |
| - echo "*** Deleting the $AKS_NAME cluster" |
| - az account set --subscription $(az account show --query 'id' -o tsv) |
| - az aks delete --name $AKS_NAME --resource-group $AKS_PROJECT |
| - rm "$OPS_TMP/kubeconfig" "$OPS_TMP/aks-$AKS_NAME.kubeconfig" |
| |
| certman: |
| cmds: |
| - | |
| if test -z "{{.DEL}}" |
| then retry -t 1000 -m 1800 kubectl --kubeconfig "$OPS_TMP/kubeconfig" apply -f cert-manager.yaml |
| else kubectl apply -f cert-manager.yaml |
| fi |
| |
| ingress: |
| cmds: |
| - | |
| if test -z "{{.DEL}}" |
| then retry -t 1000 -m 1800 kubectl --kubeconfig "$OPS_TMP/kubeconfig" apply -f ingress-deploy.yaml |
| else kubectl delete -f ingress-deploy.yaml |
| fi |
| |
| lb: |
| silent: true |
| desc: show the load balancer |
| cmds: |
| - task: kubeconfig |
| - > |
| kubectl -n ingress-nginx get svc/ingress-nginx-controller |
| -o jsonpath='{.status.loadBalancer.ingress[0].ip}' 2>/dev/null |
| || die "load balancer not found" |
| - echo "" |
| |
| |
| status: |
| silent: true |
| desc: show the cluster status |
| cmds: |
| - task: prereq |
| - az aks show -n $AKS_NAME -g $AKS_PROJECT -o table |