Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Ansible 2.8 (eller senare) krävs för att köra exempelspelböckerna i den här artikeln.
Azure Kubernetes Service (AKS) gör det enkelt att distribuera ett hanterat Kubernetes-kluster i Azure. AKS minskar komplexiteten och arbetet med att hantera Kubernetes genom att avlasta en stor del av det ansvaret till Azure. Som värdbaserad Kubernetes-tjänst hanterar Azure viktiga uppgifter som hälsoövervakning och underhåll åt dig. Kubernetes-huvudservrarna hanteras av Azure. Det är bara agentnoderna du hanterar och underhåller. Som en hanterad Kubernetes-tjänst är AKS kostnadsfri – du betalar bara för agentnoderna i dina kluster. inte för mästarna.
AKS kan konfigureras för att använda Microsoft Entra-ID för användarautentisering. När du har konfigurerat använder du din Microsoft Entra-autentiseringstoken för att logga in på AKS-klustret. RBAC kan baseras på en användares identitets- eller kataloggruppsmedlemskap.
I den här artikeln lär du dig att:
- Skapa ett Microsoft Entra ID-aktiverat AKS-kluster
- Konfigurera en RBAC-roll i klustret
Förutsättningar
- Azure-prenumeration: Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
- Azure-tjänstens huvudnamn: Skapa ett huvudnamn för tjänsten och anteckna följande värden: appId, displayName, lösenord och klientorganisation.
Installera Ansible: Gör något av följande alternativ:
- Installera och konfigurera Ansible på en virtuell Linux-dator
- Konfigurera Azure Cloud Shell och – om du inte har åtkomst till en virtuell Linux-dator – skapa en virtuell dator med Ansible.
-
Installera RedHat OpenShift-biblioteket -
pip install openshift
Konfigurera Microsoft Entra-ID för AKS-autentisering
När du konfigurerar Microsoft Entra-ID för AKS-autentisering konfigureras två Microsoft Entra-program. Den här åtgärden måste slutföras av en Azure-klientadministratör. Mer information finns i Integrera Microsoft Entra-ID med AKS.
Hämta följande värden från Azure-klientadministratören:
- Serverapphemlighet
- Serverapp-ID
- Klientapp-ID
- Hyresgäst-ID
Dessa värden behövs för att köra exempelspelboken.
Skapa ett AKS-kluster
I det här avsnittet skapar du en AKS med Microsoft Entra-programmet.
Här följer några viktiga kommentarer att tänka på när du arbetar med exempelspelboken:
Spelboken läses in
ssh_keyfrån~/.ssh/id_rsa.pub. Om du ändrar det använder du enkelradsformatet – från och med "ssh-rsa" (utan citattecken).Värdena
client_idochclient_secretläses in från~/.azure/credentials, vilket är standardfilen för autentiseringsuppgifter. Du kan ange dessa värden till tjänstens huvudnamn eller läsa in dessa värden från miljövariabler:client_id: "{{ lookup('env', 'AZURE_CLIENT_ID') }}" client_secret: "{{ lookup('env', 'AZURE_SECRET') }}"
Spara följande handbok som aks-create.yml:
- name: Create resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: List supported kubernetes version from Azure
azure_rm_aksversion_facts:
location: "{{ location }}"
register: versions
- name: Create AKS cluster with RBAC enabled
azure_rm_aks:
resource_group: "{{ resource_group }}"
name: "{{ name }}"
dns_prefix: "{{ name }}"
enable_rbac: yes
kubernetes_version: "{{ versions.azure_aks_versions[-1] }}"
agent_pool_profiles:
- count: 3
name: nodepool1
vm_size: Standard_D2_v2
linux_profile:
admin_username: azureuser
ssh_key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
service_principal:
client_id: "{{ lookup('ini', 'client_id section=default file=~/.azure/credentials') }}"
client_secret: "{{ lookup('ini', 'secret section=default file=~/.azure/credentials') }}"
aad_profile:
client_app_id: "{{ client_app_id }}"
server_app_id: "{{ server_app_id }}"
server_app_secret: "{{ server_app_secret }}"
tenant_id: "{{ app_tenant_id }}"
register: aks
- name: Save cluster user config
copy:
content: "{{ aks.kube_config }}"
dest: "aks-{{ name }}-kubeconfig-user"
- name: Get admin config of AKS
azure_rm_aks_facts:
resource_group: "{{ resource_group }}"
name: "{{ name }}"
show_kubeconfig: admin
register: aks
- name: Save the kubeconfig
copy:
content: "{{ aks.aks[0].kube_config }}"
dest: "aks-{{ name }}-kubeconfig"
Hämta Microsoft Entra-objekt-ID:t
Om du vill skapa en RBAC-bindning måste du först hämta Microsoft Entra-objekt-ID:t.
Logga in på Azure-portalen.
I sökfältet överst på sidan anger du Microsoft Entra-ID.
Klicka på
Enter.På menyn Hantera väljer du Användare.
Sök efter ditt konto i namnfältet.
I kolumnen Namn väljer du länken till ditt konto.
I avsnittet Identitet kopierar du objekt-ID:t.
Skapa RBAC-bindning
I det här avsnittet skapar du en rollbindning eller klusterrollbindning i AKS.
Spara följande handbok som kube-role.yml:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: cluster-admins
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: <your-aad-account>
<your-aad-account> Ersätt platshållaren med ditt Microsoft Entra-klientobjekt-ID.
Spara följande spelbok – som distribuerar din nya roll till AKS – som aks-kube-deploy.yml:
- name: Apply role to AKS
k8s:
src: kube-role.yml
kubeconfig: "aks-{{ name }}-kubeconfig"
Kör exempelspelboken
I det här avsnittet visas den fullständiga exempelspelboken som anropar de uppgifter som har skapats i den här artikeln.
Spara följande handbok som aks-rbac.yml:
---
- hosts: localhost
vars:
resource_group: aksansibletest
name: aksansibletest
location: eastus
tasks:
- name: Ensure resource group exist
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create AKS
vars:
client_app_id: <client id>
server_app_id: <server id>
server_app_secret: <server secret>
app_tenant_id: <tenant id>
include_tasks: aks-create.yml
- name: Enable RBAC
include_tasks: aks-kube-deploy.yml
I avsnittet vars ersätter du följande platshållare med din Microsoft Entra-information:
<client id><server id><server secret><tenant id>
Kör den fullständiga spelboken med kommandot ansible-playbook :
ansible-playbook aks-rbac.yml
Verifiera resultatet
I det här avsnittet använder du kubectl för att lista noderna som skapas i den här artikeln.
Ange följande kommando i en terminalprompt:
kubectl --kubeconfig aks-aksansibletest-kubeconfig-user get nodes
Kommandot dirigerar dig till en autentiseringssida. Logga in med ditt Azure-konto.
När kubectl har autentiserats visas noderna på liknande sätt som följande resultat:
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXXXXXX to authenticate.
NAME STATUS ROLES AGE VERSION
aks-nodepool1-33413200-0 Ready agent 49m v1.12.6
aks-nodepool1-33413200-1 Ready agent 49m v1.12.6
aks-nodepool1-33413200-2 Ready agent 49m v1.12.6
Rensa resurser
Ta bort resurserna som skapas i den här artikeln när de inte längre behövs.
Spara följande kod som cleanup.yml:
---
- hosts: localhost
vars:
name: aksansibletest
resource_group: aksansibletest
tasks:
- name: Clean up resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
state: absent
force: yes
- name: Remove kubeconfig
file:
state: absent
path: "aks-{{ name }}-kubeconfig"
Kör spelboken med ansible-playbook
ansible-playbook cleanup.yml