-
-
Save mpwsh/1d13fc95d0ff95e3d67d56d6d7ef4149 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/2e67c67a36a2e782422ebefb4a0a2612 | |
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/azure-aks.yaml | |
kubectl --namespace a-team apply \ | |
--filename examples/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/azure-aks.yaml | |
kubectl --namespace a-team apply \ | |
--filename examples/azure-aks.yaml | |
kubectl get managed | |
# Set `spec.parameters.nodeSize` to `5` in `examples/azure-aks.yaml` | |
kubectl --namespace a-team apply \ | |
--filename examples/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/azure-aks.yaml \ | |
| sed -e "s@minNodeCount: .*@minNodeCount: 3@g" \ | |
| tee examples/azure-aks.yaml |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment