Last active
March 17, 2024 19:34
-
-
Save vfarcic/269d2e963f2857ca857d2b99f40dead2 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Source https://gist.github.com/269d2e963f2857ca857d2b99f40dead2 | |
git clone https://github.com/vfarcic/devops-toolkit-crossplane | |
cd devops-toolkit-crossplane | |
# Create a local Kubernetes cluster | |
kubectl create namespace crossplane-system | |
kubectl create namespace a-team | |
######### | |
# Azure # | |
######### | |
az ad sp create-for-rbac \ | |
--sdk-auth \ | |
--role Owner \ | |
| tee azure-creds.json | |
export AZURE_CLIENT_ID=$(\ | |
cat azure-creds.json \ | |
| grep clientId \ | |
| cut -c 16-51) | |
export AAD_GRAPH_API=00000003-0000-0000-c000-000000000000 | |
az ad app permission add \ | |
--id "${AZURE_CLIENT_ID}" \ | |
--api ${AAD_GRAPH_API} \ | |
--api-permissions \ | |
e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope \ | |
06da0dbc-49e2-44d2-8312-53f166ab848a=Scope \ | |
7ab1d382-f21e-4acd-a863-ba3e13f7da61=Role | |
az ad app permission grant \ | |
--id $AZURE_CLIENT_ID \ | |
--api $AAD_GRAPH_API \ | |
--expires never | |
az ad app permission admin-consent \ | |
--id "${AZURE_CLIENT_ID}" | |
kubectl --namespace crossplane-system \ | |
create secret generic azure-creds \ | |
--from-file creds=./azure-creds.json | |
#################### | |
# Setup Crossplane # | |
#################### | |
helm repo add crossplane-stable \ | |
https://charts.crossplane.io/stable | |
helm repo update | |
helm upgrade --install \ | |
crossplane crossplane-stable/crossplane \ | |
--namespace crossplane-system \ | |
--create-namespace \ | |
--wait | |
kubectl apply \ | |
--filename crossplane-config/provider-azure.yaml | |
kubectl apply \ | |
--filename crossplane-config/provider-config-azure.yaml | |
# Please re-run the previous command if the output is `unable to recognize ...` | |
######## | |
# Demo # | |
######## | |
# Already running Crossplane in a temp cluster | |
cat crossplane-config/config-k8s.yaml | |
kubectl apply \ | |
--filename crossplane-config/config-k8s.yaml | |
cat examples/k8s/azure-aks.yaml | |
kubectl --namespace a-team apply \ | |
--filename examples/k8s/azure-aks.yaml | |
kubectl get managed | |
# Shut down the temporary cluster | |
export KUBECONFIG=$PWD/kubeconfig.yaml | |
# Get KubeConfig of the newly created cluster | |
kubectl create namespace crossplane-system | |
kubectl create namespace a-team | |
kubectl --namespace crossplane-system \ | |
create secret generic azure-creds \ | |
--from-file creds=./azure-creds.json | |
helm upgrade --install \ | |
crossplane crossplane-stable/crossplane \ | |
--namespace crossplane-system \ | |
--create-namespace \ | |
--wait | |
kubectl apply \ | |
--filename crossplane-config/provider-azure.yaml | |
kubectl apply \ | |
--filename crossplane-config/provider-config-azure.yaml | |
kubectl apply \ | |
--filename crossplane-config/config-k8s.yaml | |
cat examples/k8s/azure-aks.yaml | |
kubectl --namespace a-team apply \ | |
--filename examples/k8s/azure-aks.yaml | |
kubectl get managed | |
# Set `spec.parameters.nodeSize` to `5` in `examples/k8s/azure-aks.yaml` | |
kubectl --namespace a-team apply \ | |
--filename examples/k8s/azure-aks.yaml | |
kubectl get managed | |
kubectl get nodes | |
kubectl describe kubernetescluster ateamaks | |
# This works only with resources that can be named explicitly. Otherwise, we'd need to use the `external-name` label. | |
# Open https://github.com/crossplane/crossplane/blob/master/design/one-pager-managed-resource-api-design.md#external-resource-name | |
########### | |
# Destroy # | |
########### | |
unset KUBECONFIG | |
az group delete --name ateamaks | |
cat examples/k8s/azure-aks.yaml \ | |
| sed -e "s@minNodeCount: .*@minNodeCount: 3@g" \ | |
| tee examples/k8s/azure-aks.yaml |
Thanks for letting me know.
I just updated the manifests to use 1.23.5
.
The change is in https://github.com/vfarcic/devops-toolkit-crossplane/blob/master/packages/k8s/aks.yaml#L38. Alternatively, you can specify any version through XR definition which, in that demo, is https://github.com/vfarcic/devops-toolkit-crossplane/blob/master/examples/azure-aks.yaml. You can do that by adding spec.parameters.version
entry.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Message: apply failed: creating Managed Kubernetes Cluster "ateamaks" (Resource Group "ateamaks"): containerservice.ManagedClustersClient#CreateOrUpdate: Failure sending request: StatusCode=0 -- Original Error: Code="AgentPoolK8sVersionNotSupported" Message="Version 1.21.2 is not supported in this region. Please use [az aks get-versions] command to get the supported version list in this region.
KubernetesVersion Upgrades
1.23.5 None available
1.23.3 1.23.5
1.22.6 1.23.3, 1.23.5
1.22.4 1.22.6, 1.23.3, 1.23.5
1.21.9 1.22.4, 1.22.6
1.21.7 1.21.9, 1.22.4, 1.22.6
please inform in which file or what is needed to change the string from "1.21.2" to above version and attempt?
thanks!