Infrastruktur in Azure bereitstellen
15.11.2021, 00:00 Uhr
Pflege mit Struktur
Auch in der Cloud muss Infrastruktur gepflegt werden – bequem mit Terraform.
Die September-Ausgabe der dotnetpro hat darüber berichtet, wie man eine Webapplikation mit Azure Kubernetes Service einrichten kann [1]. Dabei wurde für das Erstellen der Infrastruktur in Azure ein Azure-CLI-Skript verwendet (siehe Listing 1). Bevor allerdings das erste Kubernetes-Manifest eingerichtet werden kann, sind fünf Dinge zu erledigen:
Listing 1: Azure -Skript zum Anlegen einer Infrastruktur
# Define some variables
$SUBSCRIPTION_NAME = "Visual Studio Enterprise"
# Change the name of the subscription according to
# your needs
$LOCATION = "westeurope"
$RESSOURCE_GROUP = "Lab_RateMyBeer"
$CONTAINERREGISTRY_NAME = "LabRateMyBeerContainers"
$CLUSTER_NAME="LabRateMyBeerCluster"
$DNS_LABEL = "ratemybeer"
# Login to the appropriate Azure Subscription
az login
az account set --subscription $SUBSCRIPTION_NAME
# 1. Create resource group for all ressources to make # deleting everything easier
az group create `
--name $RESSOURCE_GROUP `
--location $LOCATION
# 2. Create Azure Container Registry
az acr create `
--name $CONTAINERREGISTRY_NAME `
--resource-group $RESSOURCE_GROUP `
--location $LOCATION `
--sku Basic
# 3. Create the Kubernetes Cluster
az aks create `
--resource-group $RESSOURCE_GROUP `
--name $CLUSTER_NAME `
--node-count 3 `
--node-vm-size Standard_B2s `
--enable-managed-identity `
--network-plugin kubenet `
--attach-acr $CONTAINERREGISTRY_NAME
# 4. Kubernetes Ingress controller
kubectl create namespace ingress-nginx
helm repo add ingress-nginx
https://kubernetes.github.io/ingress-nginx
helm repo update
helm install nginx-ingress ingress-nginx/ingress-nginx `
--namespace ingress-nginx `
--set controller.replicaCount=3 `
--set controller.nodeSelector.
"kubernetes\.io/os"=linux `
--set controller.service.annotations.
"service\.beta\.kubernetes\.io/azure-dns-
label-name"=$DNS_LABEL `
--set defaultBackend.nodeSelector.
"kubernetes\.io/os"=linux `
--set controller.admissionWebhooks.patch.
nodeSelector."kubernetes\.io/os"=linux
# 5. Cert-Manager
kubectl create namespace cert-manager
helm repo add cert-manager https://charts.jetstack.io
helm repo update
helm show chart cert-manager/cert-manager
helm install cert-manager cert-manager/cert-manager --version 1.4.0 `
--namespace cert-manager `
--set installCRDs=true
$SUBSCRIPTION_NAME = "Visual Studio Enterprise"
# Change the name of the subscription according to
# your needs
$LOCATION = "westeurope"
$RESSOURCE_GROUP = "Lab_RateMyBeer"
$CONTAINERREGISTRY_NAME = "LabRateMyBeerContainers"
$CLUSTER_NAME="LabRateMyBeerCluster"
$DNS_LABEL = "ratemybeer"
# Login to the appropriate Azure Subscription
az login
az account set --subscription $SUBSCRIPTION_NAME
# 1. Create resource group for all ressources to make # deleting everything easier
az group create `
--name $RESSOURCE_GROUP `
--location $LOCATION
# 2. Create Azure Container Registry
az acr create `
--name $CONTAINERREGISTRY_NAME `
--resource-group $RESSOURCE_GROUP `
--location $LOCATION `
--sku Basic
# 3. Create the Kubernetes Cluster
az aks create `
--resource-group $RESSOURCE_GROUP `
--name $CLUSTER_NAME `
--node-count 3 `
--node-vm-size Standard_B2s `
--enable-managed-identity `
--network-plugin kubenet `
--attach-acr $CONTAINERREGISTRY_NAME
# 4. Kubernetes Ingress controller
kubectl create namespace ingress-nginx
helm repo add ingress-nginx
https://kubernetes.github.io/ingress-nginx
helm repo update
helm install nginx-ingress ingress-nginx/ingress-nginx `
--namespace ingress-nginx `
--set controller.replicaCount=3 `
--set controller.nodeSelector.
"kubernetes\.io/os"=linux `
--set controller.service.annotations.
"service\.beta\.kubernetes\.io/azure-dns-
label-name"=$DNS_LABEL `
--set defaultBackend.nodeSelector.
"kubernetes\.io/os"=linux `
--set controller.admissionWebhooks.patch.
nodeSelector."kubernetes\.io/os"=linux
# 5. Cert-Manager
kubectl create namespace cert-manager
helm repo add cert-manager https://charts.jetstack.io
helm repo update
helm show chart cert-manager/cert-manager
helm install cert-manager cert-manager/cert-manager --version 1.4.0 `
--namespace cert-manager `
--set installCRDs=true
Jetzt 1 Monat kostenlos testen!
Sie wollen zukünftig auch von den Vorteilen eines plus-Abos profitieren? Werden Sie jetzt dotnetpro-plus-Kunde.
- + Digitales Kundenkonto,
- + Zugriff auf das digitale Heft,
- + Zugang zum digitalen Heftarchiv,
- + Auf Wunsch: Weekly Newsletter,
- + Sämtliche Codebeispiele im digitalen Heftarchiv verfügbar