Oktatóanyag: Szerepköralapú hozzáférés-vezérlési (RBAC) szerepkörök konfigurálása az Azure Kubernetes Service-ben (AKS) az Ansible használatával
Fontos
Az Ansible 2.8 (vagy újabb) szükséges a jelen cikkben szereplő minta forgatókönyvek futtatásához.
Az Azure Kubernetes Service (AKS) egyszerűvé teszi egy felügyelt Kubernetes-fürt üzembe helyezését az Azure-ban. Az AKS egyszerűsíti a Kubernetes kezelését és csökkenti annak működési munkaterhelését azáltal, hogy a felelősség nagy részét az Azure-ra helyezi át. Üzemeltetett Kubernetes-szolgáltatásként az Azure olyan fontos műveleteket bonyolít le, mint az állapotmonitorozás és a karbantartás. A Kubernetes fő csomópontokat az Azure felügyeli. Ön csak az ügynökcsomópontokat felügyeli és tartja karban. Felügyelt Kubernetes-szolgáltatásként az AKS ingyenes – csak a fürtök ügynökcsomópontjaiért kell fizetnie; nem a mesterek számára.
Az AKS konfigurálható úgy, hogy a Microsoft Entra-azonosítót használja a felhasználói hitelesítéshez. A konfigurálás után a Microsoft Entra hitelesítési jogkivonatával jelentkezzen be az AKS-fürtbe. Az RBAC a felhasználó identitásán vagy címtárcsoport-tagságán alapulhat.
Ebben a cikkben az alábbiakkal ismerkedhet meg:
- Microsoft Entra ID-kompatibilis AKS-fürt létrehozása
- RBAC-szerepkör konfigurálása a fürtben
Előfeltételek
- Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
- Azure-szolgáltatásnév: Hozzon létre egy egyszerű szolgáltatást, és jegyezze fel a következő értékeket: appId, displayName, password és tenant.
Az Ansible telepítése: Válasszon az alábbi lehetőségek közül:
- Az Ansible telepítése és konfigurálása Linux rendszerű virtuális gépen
- Konfigurálja az Azure Cloud Shellt , és – ha nincs hozzáférése Linux rendszerű virtuális géphez – hozzon létre egy virtuális gépet az Ansible használatával.
- A RedHat OpenShift-kódtár telepítése -
pip install openshift
Microsoft Entra-azonosító konfigurálása AKS-hitelesítéshez
A Microsoft Entra ID AKS-hitelesítéshez való konfigurálásakor két Microsoft Entra-alkalmazás van konfigurálva. Ezt a műveletet egy Azure-bérlői rendszergazdának kell végrehajtania. További információ: A Microsoft Entra ID integrálása az AKS-sel.
Az Azure-bérlő rendszergazdájától kérje le a következő értékeket:
- Kiszolgálóalkalmazás titkos kódja
- Kiszolgálóalkalmazás azonosítója
- Ügyfélalkalmazás azonosítója
- Bérlőazonosító
Ezekre az értékekre a minta forgatókönyv futtatásához van szükség.
AKS-fürt létrehozása
Ebben a szakaszban egy AKS-t hoz létre a Microsoft Entra alkalmazással.
Az alábbiakban néhány fontos megjegyzést érdemes figyelembe venni a minta forgatókönyv használatakor:
A forgatókönyv betöltődik
ssh_key
innen~/.ssh/id_rsa.pub
: . Ha módosítja, használja az egysoros formátumot – kezdve az "ssh-rsa" formátummal (idézőjelek nélkül).A
client_id
rendszer betölti azclient_secret
értékeket az alapértelmezett hitelesítőadat-fájlból~/.azure/credentials
. Ezeket az értékeket beállíthatja a szolgáltatásnévre, vagy betöltheti ezeket az értékeket a környezeti változókból:client_id: "{{ lookup('env', 'AZURE_CLIENT_ID') }}" client_secret: "{{ lookup('env', 'AZURE_SECRET') }}"
Mentse a következő forgatókönyvet aks-create.yml
néven:
- 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"
A Microsoft Entra objektumazonosítójának lekérése
RBAC-kötés létrehozásához először be kell szereznie a Microsoft Entra objektumazonosítóját.
Jelentkezzen be az Azure Portalra.
A lap tetején található keresőmezőbe írja be a Microsoft Entra azonosítóját.
Kattintson a
Enter
parancsra.A Kezelés menüben válassza a Felhasználók lehetőséget.
A név mezőben keresse meg a fiókját.
A Név oszlopban válassza ki a fiókra mutató hivatkozást.
Az Identitás szakaszban másolja ki az objektumazonosítót.
RBAC-kötés létrehozása
Ebben a szakaszban egy szerepkör- vagy fürtszerepkör-kötést hoz létre az AKS-ben.
Mentse a következő forgatókönyvet kube-role.yml
néven:
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>
Cserélje le a <your-aad-account>
helyőrzőt a Microsoft Entra-bérlő objektumazonosítójára.
Mentse a következő forgatókönyvet – amely üzembe helyezi az új szerepkört az AKS-ben – a következő módon aks-kube-deploy.yml
:
- name: Apply role to AKS
k8s:
src: kube-role.yml
kubeconfig: "aks-{{ name }}-kubeconfig"
A minta forgatókönyv futtatása
Ez a szakasz a cikkben létrehozott feladatokat meghívó teljes minta forgatókönyvet sorolja fel.
Mentse a következő forgatókönyvet aks-rbac.yml
néven:
---
- 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
vars
A szakaszban cserélje le a következő helyőrzőket a Microsoft Entra-adatokra:
<client id>
<server id>
<server secret>
<tenant id>
Futtassa a teljes forgatókönyvet a ansible-playbook
következő paranccsal:
ansible-playbook aks-rbac.yml
Az eredmények ellenőrzése
Ebben a szakaszban a cikkben létrehozott csomópontok kubectl-listáját használjuk.
Adja meg a következő parancsot egy terminálablakban:
kubectl --kubeconfig aks-aksansibletest-kubeconfig-user get nodes
A parancs egy hitelesítési lapra irányítja. Jelentkezzen be Azure-fiókjával.
A hitelesítés után a kubectl az alábbi eredményekhez hasonlóan sorolja fel a csomópontokat:
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
Az erőforrások eltávolítása
Ha már nincs rá szükség, törölje a cikkben létrehozott erőforrásokat.
Mentse a következő kódot a következőként 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"
A forgatókönyv futtatása ansible-playbook használatával
ansible-playbook cleanup.yml