From 897a84dbbd38a5f8c9d53daea15c0cfbae6a6eea Mon Sep 17 00:00:00 2001 From: Suneha Bose Date: Tue, 4 Feb 2025 21:40:47 -0800 Subject: [PATCH 1/3] add pvt cluster support for ns creation --- .../azure-kubernetes-service-helm.yml | 42 ++++++++++++++----- .../azure-kubernetes-service-kustomize.yml | 41 +++++++++++++----- .../workflows/azure-kubernetes-service.yml | 40 +++++++++++++----- 3 files changed, 92 insertions(+), 31 deletions(-) diff --git a/template/workflows/helm/.github/workflows/azure-kubernetes-service-helm.yml b/template/workflows/helm/.github/workflows/azure-kubernetes-service-helm.yml index fdbdda2f2..4d027a60a 100644 --- a/template/workflows/helm/.github/workflows/azure-kubernetes-service-helm.yml +++ b/template/workflows/helm/.github/workflows/azure-kubernetes-service-helm.yml @@ -113,24 +113,44 @@ jobs: admin: "false" use-kubelogin: "true" + # Checks if the AKS cluster is private + - name: Is private cluster + id: isPrivate + if: ${{ env.CLUSTER_RESOURCE_TYPE != 'Microsoft.ContainerService/fleets' }} + run: | + result=$(az aks show --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --query "apiServerAccessProfile.enablePrivateCluster") + echo "PRIVATE_CLUSTER=$result" >> "$GITHUB_OUTPUT" + # Create Namespace - name: Create Namespace if: ${{ env.ENABLENAMESPACECREATION == 'true' }} run: | - kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }} + if [ ${{ steps.isPrivate.outputs.PRIVATE_CLUSTER}} == 'true' ]; then + command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }}" --query id -o tsv) + result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) + echo "Command Result: $result" + exit_code=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + if [ $exitCode -ne 0 ]; then + exit $exitCode + fi + else + kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }} + fi # Validate Namespace exists - name: Validate Namespace Exists run: | - kubectl get namespace ${{ env.NAMESPACE }} - - # Checks if the AKS cluster is private - - name: Is private cluster - id: isPrivate - if: ${{ env.CLUSTER_RESOURCE_TYPE != 'Microsoft.ContainerService/fleets' }} - run: | - result=$(az aks show --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --query "apiServerAccessProfile.enablePrivateCluster") - echo "PRIVATE_CLUSTER=$result" >> "$GITHUB_OUTPUT" + if [ ${{ steps.isPrivate.outputs.PRIVATE_CLUSTER}} == 'true' ]; then + command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }}" --query id -o tsv) + result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) + echo "Command Result: $result" + exit_code=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + if [ $exitCode -ne 0 ]; then + exit $exitCode + fi + else + kubectl get namespace ${{ env.NAMESPACE }} + fi # Deploys application - name: Deploy application on private cluster @@ -140,7 +160,7 @@ jobs: result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) echo "Helm upgrade result: $result" exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) - + if [ $exitCode -ne 0 ]; then exit $exitCode fi diff --git a/template/workflows/kustomize/.github/workflows/azure-kubernetes-service-kustomize.yml b/template/workflows/kustomize/.github/workflows/azure-kubernetes-service-kustomize.yml index 57eb6db52..07ae7b8ed 100644 --- a/template/workflows/kustomize/.github/workflows/azure-kubernetes-service-kustomize.yml +++ b/template/workflows/kustomize/.github/workflows/azure-kubernetes-service-kustomize.yml @@ -112,17 +112,45 @@ jobs: use-kubelogin: 'true' resource-type: ${{ env.CLUSTER_RESOURCE_TYPE }} + # Checks if the AKS cluster is private + - name: Is private cluster + if: ${{ env.CLUSTER_RESOURCE_TYPE != 'Microsoft.ContainerService/fleets' }} + id: isPrivate + run: | + result=$(az aks show --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --query "apiServerAccessProfile.enablePrivateCluster") + echo "PRIVATE_CLUSTER=$result" >> "$GITHUB_OUTPUT" + # Create Namespace - name: Create Namespace if: ${{ env.ENABLENAMESPACECREATION == 'true' }} run: | - kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }} + if [ ${{ steps.isPrivate.outputs.PRIVATE_CLUSTER}} == 'true' ]; then + command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }}" --query id -o tsv) + result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) + echo "Command Result: $result" + exit_code=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + if [ $exitCode -ne 0 ]; then + exit $exitCode + fi + else + kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }} + fi # Validate Namespace exists - name: Validate Namespace Exists run: | - kubectl get namespace ${{ env.NAMESPACE }} - + if [ ${{ steps.isPrivate.outputs.PRIVATE_CLUSTER}} == 'true' ]; then + command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }}" --query id -o tsv) + result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) + echo "Command Result: $result" + exit_code=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + if [ $exitCode -ne 0 ]; then + exit $exitCode + fi + else + kubectl get namespace ${{ env.NAMESPACE }} + fi + # Runs Kustomize to create manifest files - name: Bake deployment uses: azure/k8s-bake@v2 @@ -131,13 +159,6 @@ jobs: kustomizationPath: ${{ env.KUSTOMIZE_PATH }} kubectl-version: latest id: bake - # Checks if the AKS cluster is private - - name: Is private cluster - if: ${{ env.CLUSTER_RESOURCE_TYPE != 'Microsoft.ContainerService/fleets' }} - id: isPrivate - run: | - result=$(az aks show --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --query "apiServerAccessProfile.enablePrivateCluster") - echo "PRIVATE_CLUSTER=$result" >> "$GITHUB_OUTPUT" # Deploys application based on manifest files from previous step - name: Deploy application diff --git a/template/workflows/manifests/.github/workflows/azure-kubernetes-service.yml b/template/workflows/manifests/.github/workflows/azure-kubernetes-service.yml index 1cfcc7ed7..575477fdd 100644 --- a/template/workflows/manifests/.github/workflows/azure-kubernetes-service.yml +++ b/template/workflows/manifests/.github/workflows/azure-kubernetes-service.yml @@ -107,24 +107,44 @@ jobs: use-kubelogin: 'true' resource-type: ${{ env.CLUSTER_RESOURCE_TYPE }} + # Checks if the AKS cluster is private + - name: Is private cluster + if: ${{ env.CLUSTER_RESOURCE_TYPE != 'Microsoft.ContainerService/fleets' }} + id: isPrivate + run: | + result=$(az aks show --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --query "apiServerAccessProfile.enablePrivateCluster") + echo "PRIVATE_CLUSTER=$result" >> "$GITHUB_OUTPUT" + # Create Namespace - name: Create Namespace if: ${{ env.ENABLENAMESPACECREATION == 'true' }} run: | - kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }} + if [ ${{ steps.isPrivate.outputs.PRIVATE_CLUSTER}} == 'true' ]; then + command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }}" --query id -o tsv) + result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) + echo "Command Result: $result" + exit_code=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + if [ $exitCode -ne 0 ]; then + exit $exitCode + fi + else + kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }} + fi # Validate Namespace exists - name: Validate Namespace Exists run: | - kubectl get namespace ${{ env.NAMESPACE }} - - # Checks if the AKS cluster is private - - name: Is private cluster - if: ${{ env.CLUSTER_RESOURCE_TYPE != 'Microsoft.ContainerService/fleets' }} - id: isPrivate - run: | - result=$(az aks show --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --query "apiServerAccessProfile.enablePrivateCluster") - echo "PRIVATE_CLUSTER=$result" >> "$GITHUB_OUTPUT" + if [ ${{ steps.isPrivate.outputs.PRIVATE_CLUSTER}} == 'true' ]; then + command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }}" --query id -o tsv) + result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) + echo "Command Result: $result" + exit_code=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + if [ $exitCode -ne 0 ]; then + exit $exitCode + fi + else + kubectl get namespace ${{ env.NAMESPACE }} + fi # Deploys application based on given manifest file - name: Deploys application From beebcee9db2306bf11ff2ef1cc8a6232735af5ef Mon Sep 17 00:00:00 2001 From: Suneha Bose Date: Tue, 4 Feb 2025 23:13:34 -0800 Subject: [PATCH 2/3] fix typo --- .../.github/workflows/azure-kubernetes-service-helm.yml | 4 ++-- .../workflows/azure-kubernetes-service-kustomize.yml | 6 +++--- .../.github/workflows/azure-kubernetes-service.yml | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/template/workflows/helm/.github/workflows/azure-kubernetes-service-helm.yml b/template/workflows/helm/.github/workflows/azure-kubernetes-service-helm.yml index 4d027a60a..9125ef26d 100644 --- a/template/workflows/helm/.github/workflows/azure-kubernetes-service-helm.yml +++ b/template/workflows/helm/.github/workflows/azure-kubernetes-service-helm.yml @@ -129,7 +129,7 @@ jobs: command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }}" --query id -o tsv) result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) echo "Command Result: $result" - exit_code=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) if [ $exitCode -ne 0 ]; then exit $exitCode fi @@ -144,7 +144,7 @@ jobs: command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }}" --query id -o tsv) result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) echo "Command Result: $result" - exit_code=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) if [ $exitCode -ne 0 ]; then exit $exitCode fi diff --git a/template/workflows/kustomize/.github/workflows/azure-kubernetes-service-kustomize.yml b/template/workflows/kustomize/.github/workflows/azure-kubernetes-service-kustomize.yml index 07ae7b8ed..db25c3e2d 100644 --- a/template/workflows/kustomize/.github/workflows/azure-kubernetes-service-kustomize.yml +++ b/template/workflows/kustomize/.github/workflows/azure-kubernetes-service-kustomize.yml @@ -128,7 +128,7 @@ jobs: command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }}" --query id -o tsv) result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) echo "Command Result: $result" - exit_code=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) if [ $exitCode -ne 0 ]; then exit $exitCode fi @@ -143,14 +143,14 @@ jobs: command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }}" --query id -o tsv) result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) echo "Command Result: $result" - exit_code=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) if [ $exitCode -ne 0 ]; then exit $exitCode fi else kubectl get namespace ${{ env.NAMESPACE }} fi - + # Runs Kustomize to create manifest files - name: Bake deployment uses: azure/k8s-bake@v2 diff --git a/template/workflows/manifests/.github/workflows/azure-kubernetes-service.yml b/template/workflows/manifests/.github/workflows/azure-kubernetes-service.yml index 575477fdd..cdfbfcbe8 100644 --- a/template/workflows/manifests/.github/workflows/azure-kubernetes-service.yml +++ b/template/workflows/manifests/.github/workflows/azure-kubernetes-service.yml @@ -123,7 +123,7 @@ jobs: command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }}" --query id -o tsv) result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) echo "Command Result: $result" - exit_code=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) if [ $exitCode -ne 0 ]; then exit $exitCode fi @@ -138,7 +138,7 @@ jobs: command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }}" --query id -o tsv) result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) echo "Command Result: $result" - exit_code=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) if [ $exitCode -ne 0 ]; then exit $exitCode fi From a1cd127d8c2d2225c52e41f18e6a7b2086db6585 Mon Sep 17 00:00:00 2001 From: Suneha Bose Date: Tue, 4 Feb 2025 23:36:28 -0800 Subject: [PATCH 3/3] edit fixtures --- .../azure-kubernetes-service-helm.yml | 42 ++++++++++++++----- .../azure-kubernetes-service-kustomize.yml | 39 +++++++++++++---- .../workflows/azure-kubernetes-service.yml | 31 ++++++++++++++ 3 files changed, 92 insertions(+), 20 deletions(-) diff --git a/pkg/fixtures/workflows/github/helm/.github/workflows/azure-kubernetes-service-helm.yml b/pkg/fixtures/workflows/github/helm/.github/workflows/azure-kubernetes-service-helm.yml index e42604a12..5471a396b 100644 --- a/pkg/fixtures/workflows/github/helm/.github/workflows/azure-kubernetes-service-helm.yml +++ b/pkg/fixtures/workflows/github/helm/.github/workflows/azure-kubernetes-service-helm.yml @@ -113,24 +113,44 @@ jobs: admin: "false" use-kubelogin: "true" + # Checks if the AKS cluster is private + - name: Is private cluster + id: isPrivate + if: ${{ env.CLUSTER_RESOURCE_TYPE != 'Microsoft.ContainerService/fleets' }} + run: | + result=$(az aks show --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --query "apiServerAccessProfile.enablePrivateCluster") + echo "PRIVATE_CLUSTER=$result" >> "$GITHUB_OUTPUT" + # Create Namespace - name: Create Namespace if: ${{ env.ENABLENAMESPACECREATION == 'true' }} run: | - kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }} + if [ ${{ steps.isPrivate.outputs.PRIVATE_CLUSTER}} == 'true' ]; then + command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }}" --query id -o tsv) + result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) + echo "Command Result: $result" + exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + if [ $exitCode -ne 0 ]; then + exit $exitCode + fi + else + kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }} + fi # Validate Namespace exists - name: Validate Namespace Exists run: | - kubectl get namespace ${{ env.NAMESPACE }} - - # Checks if the AKS cluster is private - - name: Is private cluster - id: isPrivate - if: ${{ env.CLUSTER_RESOURCE_TYPE != 'Microsoft.ContainerService/fleets' }} - run: | - result=$(az aks show --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --query "apiServerAccessProfile.enablePrivateCluster") - echo "PRIVATE_CLUSTER=$result" >> "$GITHUB_OUTPUT" + if [ ${{ steps.isPrivate.outputs.PRIVATE_CLUSTER}} == 'true' ]; then + command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }}" --query id -o tsv) + result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) + echo "Command Result: $result" + exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + if [ $exitCode -ne 0 ]; then + exit $exitCode + fi + else + kubectl get namespace ${{ env.NAMESPACE }} + fi # Deploys application - name: Deploy application on private cluster @@ -140,7 +160,7 @@ jobs: result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) echo "Helm upgrade result: $result" exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) - + if [ $exitCode -ne 0 ]; then exit $exitCode fi diff --git a/pkg/fixtures/workflows/github/kustomize/.github/workflows/azure-kubernetes-service-kustomize.yml b/pkg/fixtures/workflows/github/kustomize/.github/workflows/azure-kubernetes-service-kustomize.yml index af6f37ad0..d3007935d 100644 --- a/pkg/fixtures/workflows/github/kustomize/.github/workflows/azure-kubernetes-service-kustomize.yml +++ b/pkg/fixtures/workflows/github/kustomize/.github/workflows/azure-kubernetes-service-kustomize.yml @@ -112,16 +112,44 @@ jobs: use-kubelogin: 'true' resource-type: ${{ env.CLUSTER_RESOURCE_TYPE }} + # Checks if the AKS cluster is private + - name: Is private cluster + if: ${{ env.CLUSTER_RESOURCE_TYPE != 'Microsoft.ContainerService/fleets' }} + id: isPrivate + run: | + result=$(az aks show --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --query "apiServerAccessProfile.enablePrivateCluster") + echo "PRIVATE_CLUSTER=$result" >> "$GITHUB_OUTPUT" + # Create Namespace - name: Create Namespace if: ${{ env.ENABLENAMESPACECREATION == 'true' }} run: | - kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }} + if [ ${{ steps.isPrivate.outputs.PRIVATE_CLUSTER}} == 'true' ]; then + command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }}" --query id -o tsv) + result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) + echo "Command Result: $result" + exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + if [ $exitCode -ne 0 ]; then + exit $exitCode + fi + else + kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }} + fi # Validate Namespace exists - name: Validate Namespace Exists run: | - kubectl get namespace ${{ env.NAMESPACE }} + if [ ${{ steps.isPrivate.outputs.PRIVATE_CLUSTER}} == 'true' ]; then + command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }}" --query id -o tsv) + result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) + echo "Command Result: $result" + exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + if [ $exitCode -ne 0 ]; then + exit $exitCode + fi + else + kubectl get namespace ${{ env.NAMESPACE }} + fi # Runs Kustomize to create manifest files - name: Bake deployment @@ -131,13 +159,6 @@ jobs: kustomizationPath: ${{ env.KUSTOMIZE_PATH }} kubectl-version: latest id: bake - # Checks if the AKS cluster is private - - name: Is private cluster - if: ${{ env.CLUSTER_RESOURCE_TYPE != 'Microsoft.ContainerService/fleets' }} - id: isPrivate - run: | - result=$(az aks show --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --query "apiServerAccessProfile.enablePrivateCluster") - echo "PRIVATE_CLUSTER=$result" >> "$GITHUB_OUTPUT" # Deploys application based on manifest files from previous step - name: Deploy application diff --git a/pkg/fixtures/workflows/github/manifests/.github/workflows/azure-kubernetes-service.yml b/pkg/fixtures/workflows/github/manifests/.github/workflows/azure-kubernetes-service.yml index e5c326d4a..f0e14c71d 100644 --- a/pkg/fixtures/workflows/github/manifests/.github/workflows/azure-kubernetes-service.yml +++ b/pkg/fixtures/workflows/github/manifests/.github/workflows/azure-kubernetes-service.yml @@ -114,6 +114,37 @@ jobs: result=$(az aks show --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --query "apiServerAccessProfile.enablePrivateCluster") echo "PRIVATE_CLUSTER=$result" >> "$GITHUB_OUTPUT" + # Create Namespace + - name: Create Namespace + if: ${{ env.ENABLENAMESPACECREATION == 'true' }} + run: | + if [ ${{ steps.isPrivate.outputs.PRIVATE_CLUSTER}} == 'true' ]; then + command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }}" --query id -o tsv) + result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) + echo "Command Result: $result" + exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + if [ $exitCode -ne 0 ]; then + exit $exitCode + fi + else + kubectl get namespace ${{ env.NAMESPACE }} || kubectl create namespace ${{ env.NAMESPACE }} + fi + + # Validate Namespace exists + - name: Validate Namespace Exists + run: | + if [ ${{ steps.isPrivate.outputs.PRIVATE_CLUSTER}} == 'true' ]; then + command_id=$(az aks command invoke --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command "kubectl get namespace ${{ env.NAMESPACE }}" --query id -o tsv) + result=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id) + echo "Command Result: $result" + exitCode=$(az aks command result --resource-group ${{ env.CLUSTER_RESOURCE_GROUP }} --name ${{ env.CLUSTER_NAME }} --command-id $command_id --query exitCode -o tsv) + if [ $exitCode -ne 0 ]; then + exit $exitCode + fi + else + kubectl get namespace ${{ env.NAMESPACE }} + fi + # Deploys application based on given manifest file - name: Deploys application uses: Azure/k8s-deploy@v5