Lernprogramm: Konfigurieren von Azure Kubernetes Service (AKS)-Clustern in Azure mithilfe von Ansible
Wichtig
Für die Ausführung der Beispielplaybooks in diesem Artikel ist mindestens Ansible 2.8 erforderlich.
Mit Azure Kubernetes Service (AKS) können Sie ganz einfach einen Managed Kubernetes-Cluster in Azure bereitstellen. AKS verringert die Komplexität und den operativen Mehraufwand für die Kubernetes-Verwaltung, indem ein Großteil dieser Verantwortung an Azure übertragen wird. Azure führt als gehosteter Kubernetes-Dienst wichtige Aufgaben für Sie aus, z.B. Systemüberwachung und Wartung. Die Kubernetes-Master werden von Azure verwaltet. Sie verwalten und warten nur die Agent-Knoten. Als Managed Kubernetes-Dienst ist AKS kostenlos. Sie zahlen nur für die Agent-Knoten in den Clustern, nicht für den Master.
AKS kann für die Verwendung der Microsoft Entra-ID für die Benutzerauthentifizierung konfiguriert werden. Nach der Konfiguration verwenden Sie Ihr Microsoft Entra-Authentifizierungstoken, um sich beim AKS-Cluster anzumelden. Die rollenbasierte Zugriffssteuerung (RBAC) kann auf der Identität eines Benutzers oder auf der Mitgliedschaft in einer Verzeichnisgruppe basieren.
In diesem Artikel werden folgende Vorgehensweisen behandelt:
- Erstellen eines AKS-Clusters
- Konfigurieren eines AKS-Clusters
Voraussetzungen
- Azure-Abonnement: Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- Azure-Dienstprinzipal: Erstellen Sie einen Dienstprinzipal, und notieren Sie sich die folgenden Werte: appId, displayName, password und tenant.
Installieren von Ansible: Verwenden Sie eine der folgenden Optionen:
- Installieren und Konfigurieren von Ansible auf einem virtuellen Linux-Computer
- Konfigurieren Sie Azure Cloud Shell. Sollten Sie keinen Zugriff auf einen virtuellen Linux-Computer haben, können Sie mit Ansible einen virtuellen Computer erstellen.
Erstellen eines verwalteten AKS-Clusters
Mit dem Beispielplaybook werden eine Ressourcengruppe und ein AKS-Cluster in der Ressourcengruppe erstellt.
Speichern Sie das folgende Playbook als azure_create_aks.yml
:
- name: Create Azure Kubernetes Service
hosts: localhost
connection: local
vars:
resource_group: myResourceGroup
location: eastus
aks_name: myAKSCluster
username: azureuser
ssh_key: "your_ssh_key"
client_id: "your_client_id"
client_secret: "your_client_secret"
aks_version: aks_version
tasks:
- name: Create resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create a managed Azure Container Services (AKS) cluster
azure_rm_aks:
name: "{{ aks_name }}"
location: "{{ location }}"
resource_group: "{{ resource_group }}"
dns_prefix: "{{ aks_name }}"
kubernetes_version: "{{aks_version}}"
linux_profile:
admin_username: "{{ username }}"
ssh_key: "{{ ssh_key }}"
service_principal:
client_id: "{{ client_id }}"
client_secret: "{{ client_secret }}"
agent_pool_profiles:
- name: default
count: 2
vm_size: Standard_D2_v2
tags:
Environment: Production
Beachten Sie vor dem Ausführen des Playbooks die folgenden Hinweise:
- Im ersten Abschnitt von
tasks
wird am Standorteastus
eine Ressourcengruppe mit dem NamenmyResourceGroup
definiert. - Im zweiten Abschnitt von
tasks
wird in der RessourcengruppemyResourceGroup
ein AKS-Cluster mit dem NamenmyAKSCluster
definiert. - Geben Sie für den Platzhalter
your_ssh_key
Ihren öffentlichen RSA-Schlüssel im einzeiligen Format beginnend mit „ssh-rsa“ (ohne Anführungszeichen) ein. - Verwenden Sie für den Platzhalter
aks_version
den Befehl az aks get-versions.
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook azure_create_aks.yml
Beim Ausführen des Playbooks wird in etwa die folgende Ausgabe angezeigt:
PLAY [Create AKS]
TASK [Gathering Facts]
ok: [localhost]
TASK [Create resource group]
changed: [localhost]
TASK [Create an Azure Container Services (AKS) cluster]
changed: [localhost]
PLAY RECAP
localhost : ok=3 changed=2 unreachable=0 failed=0
Skalieren der AKS-Knoten
Das Beispielplaybook aus dem vorherigen Abschnitt definiert zwei Knoten. Sie passen die Anzahl von Knoten an, indem Sie im Block agent_pool_profiles
den Wert count
ändern.
Speichern Sie das folgende Playbook als azure_configure_aks.yml
:
- name: Scale AKS cluster
hosts: localhost
connection: local
vars:
resource_group: myResourceGroup
location: eastus
aks_name: myAKSCluster
username: azureuser
ssh_key: "your_ssh_key"
client_id: "your_client_id"
client_secret: "your_client_secret"
tasks:
- name: Scaling an existed AKS cluster
azure_rm_aks:
name: "{{ aks_name }}"
location: "{{ location }}"
resource_group: "{{ resource_group }}"
dns_prefix: "{{ aks_name }}"
linux_profile:
admin_username: "{{ username }}"
ssh_key: "{{ ssh_key }}"
service_principal:
client_id: "{{ client_id }}"
client_secret: "{{ client_secret }}"
agent_pool_profiles:
- name: default
count: 3
vm_size: Standard_D2_v2
Beachten Sie vor dem Ausführen des Playbooks die folgenden Hinweise:
- Geben Sie für den Platzhalter
your_ssh_key
Ihren öffentlichen RSA-Schlüssel im einzeiligen Format beginnend mit „ssh-rsa“ (ohne Anführungszeichen) ein.
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook azure_configure_aks.yml
Beim Ausführen des Playbooks wird in etwa die folgende Ausgabe angezeigt:
PLAY [Scale AKS cluster]
TASK [Gathering Facts]
ok: [localhost]
TASK [Scaling an existed AKS cluster]
changed: [localhost]
PLAY RECAP
localhost : ok=2 changed=1 unreachable=0 failed=0
Löschen eines verwalteten AKS-Clusters
Mit dem Beispielplaybook wird ein AKS-Cluster gelöscht.
Speichern Sie das folgende Playbook als azure_delete_aks.yml
:
- name: Delete a managed Azure Container Services (AKS) cluster
hosts: localhost
connection: local
vars:
resource_group: myResourceGroup
aks_name: myAKSCluster
tasks:
- name:
azure_rm_aks:
name: "{{ aks_name }}"
resource_group: "{{ resource_group }}"
state: absent
Führen Sie das Playbook mithilfe von ansible-playbook aus.
ansible-playbook azure_delete_aks.yml
Beim Ausführen des Playbooks wird in etwa die folgende Ausgabe angezeigt:
PLAY [Delete a managed Azure Container Services (AKS) cluster]
TASK [Gathering Facts]
ok: [localhost]
TASK [azure_rm_aks]
PLAY RECAP
localhost : ok=2 changed=1 unreachable=0 failed=0