Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AlexRogalskiy/ae777f7fc95622dc22e2d7356ad1eeea to your computer and use it in GitHub Desktop.
Save AlexRogalskiy/ae777f7fc95622dc22e2d7356ad1eeea to your computer and use it in GitHub Desktop.
git clone https://github.com/vfarcic/devops-toolkit-crossplane
cd devops-toolkit-crossplane
# Create a Kubernetes cluster
kubectl create namespace crossplane-system
#########
# 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
##############
# 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 ...`
#######
# AKS #
#######
cat crossplane-config/config-k8s.yaml
kubectl apply \
--filename crossplane-config/config-k8s.yaml
cat examples/azure-aks.yaml
kubectl apply \
--filename examples/azure-aks.yaml
kubectl get managed
# Set `spec.parameters.nodeSize` to `5` in `examples/azure-aks.yaml`
kubectl apply \
--filename examples/azure-aks.yaml
kubectl get managed
export KUBECONFIG=$PWD/kubeconfig.yaml
# TODO: Get KubeConfig from the secret
# TODO: https://github.com/crossplane-contrib/provider-tf-azure/issues/80
kubectl get nodes
# TODO: Show that Prometheus is running
unset KUBECONFIG
kubectl get compositeclusters
###########
# Destroy #
###########
kubectl delete \
--filename examples/azure-aks-no-claim.yaml
cat examples/azure-aks.yaml \
| sed -e "s@minNodeCount: .*@minNodeCount: 3@g" \
| tee examples/azure-aks.yaml
# Destroy the Kubernetes cluster
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment