Megosztás a következőn keresztül:


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.
  • 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
  • Tenant ID

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 az client_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.

  1. Jelentkezzen be az Azure Portalra.

  2. A lap tetején található keresőmezőbe írja be a Microsoft Entra azonosítóját.

  3. Kattintson a Enter parancsra.

  4. A Kezelés menüben válassza a Felhasználók lehetőséget.

  5. A név mezőben keresse meg a fiókját.

  6. A Név oszlopban válassza ki a fiókra mutató hivatkozást.

  7. Az Identitás szakaszban másolja ki az objektumazonosítót.

    Copy the Microsoft Entra Object ID.

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

Clean up resources

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

További lépések