Öğretici: Ansible kullanarak Azure Kubernetes Service'te (AKS) rol tabanlı erişim denetimi (RBAC) rollerini yapılandırma
Önemli
Bu makaledeki örnek playbook'ları çalıştırmak için Ansible 2.8 (veya üzeri) gereklidir.
Azure Kubernetes Service (AKS), Azure'da yönetilen bir Kubernetes kümesi dağıtmayı kolaylaştırır. AKS, sorumluluğun çoğunu Azure'a devrederek Kubernetes yönetiminin karmaşıklığını ve işlemsel yükünü azaltır. Barındırılan bir Kubernetes hizmeti olarak, Azure sistem durumu izleme ve bakım gibi kritik görevleri sizin için gerçekleştirir. Kubernetes ana düğümler Azure tarafından yönetilir. Siz yalnızca aracı düğümlerini yönetir ve sürdürürsünüz. Yönetilen bir Kubernetes hizmeti olarak AKS ücretsizdir; yalnızca kümelerinizdeki aracı düğümleri için ödeme gerçekleştirirsiniz; Ustalar için değil.
AKS, kullanıcı kimlik doğrulaması için Microsoft Entra Id kullanacak şekilde yapılandırılabilir. Yapılandırıldıktan sonra, AKS kümesinde oturum açmak için Microsoft Entra kimlik doğrulama belirtecinizi kullanırsınız. RBAC, bir kullanıcının kimliğine veya dizin grubu üyeliğine dayalı olabilir.
Bu makalede şunları öğreneceksiniz:
- Microsoft Entra Id özellikli AKS kümesi oluşturma
- Kümede RBAC rolü yapılandırma
Önkoşullar
- Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Azure hizmet sorumlusu: Aşağıdaki değerleri not ederek bir hizmet sorumlusu oluşturun: appId, displayName, password ve tenant.
Ansible'ı Yükleme: Aşağıdaki seçeneklerden birini yapın:
- Ansible'ı Linux sanal makinesine yükleme ve yapılandırma
- Azure Cloud Shell'i yapılandırın ve Linux sanal makinesine erişiminiz yoksa Ansible ile bir sanal makine oluşturun.
- RedHat OpenShift kitaplığını yükleme -
pip install openshift
AKS kimlik doğrulaması için Microsoft Entra Id'yi yapılandırma
AKS kimlik doğrulaması için Microsoft Entra Id yapılandırılırken iki Microsoft Entra uygulaması yapılandırılır. Bu işlemin bir Azure kiracı yöneticisi tarafından tamamlanması gerekir. Daha fazla bilgi için bkz . Microsoft Entra ID'yi AKS ile tümleştirme.
Azure kiracı yöneticisinden aşağıdaki değerleri alın:
- Sunucu uygulama gizli dizisi
- Sunucu uygulaması kimliği
- İstemci uygulama kimliği
- Kiracı kimliği
Örnek playbook'u çalıştırmak için bu değerler gereklidir.
AKS kümesi oluşturma
Bu bölümde, Microsoft Entra uygulamasıyla bir AKS oluşturacaksınız.
Örnek playbook ile çalışırken göz önünde bulundurmanız gereken bazı önemli notlar şunlardır:
playbook'u içinden
~/.ssh/id_rsa.pub
yüklenirssh_key
. Bunu değiştirirseniz, "ssh-rsa" ile başlayan (tırnak işaretleri olmadan) tek satırlı biçimi kullanın.client_id
veclient_secret
değerleri, varsayılan kimlik bilgisi dosyası olan dosyasından~/.azure/credentials
yüklenir. Bu değerleri hizmet sorumlunuza ayarlayabilir veya ortam değişkenlerinden bu değerleri yükleyebilirsiniz:client_id: "{{ lookup('env', 'AZURE_CLIENT_ID') }}" client_secret: "{{ lookup('env', 'AZURE_SECRET') }}"
Aşağıdaki playbook'u aks-create.yml
olarak kaydedin:
- 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"
Microsoft Entra Nesne Kimliğini alma
RBAC bağlaması oluşturmak için önce Microsoft Entra Nesne Kimliğini almanız gerekir.
Azure Portal’ında oturum açın.
Sayfanın üst kısmındaki arama alanına Microsoft Entra Id girin.
Enter
’a tıklayın.Yönet menüsünde Kullanıcılar'ı seçin.
Ad alanında hesabınızı arayın.
Ad sütununda hesabınızın bağlantısını seçin.
Kimlik bölümünde Nesne Kimliğini kopyalayın.
RBAC bağlaması oluşturma
Bu bölümde AKS'de rol bağlaması veya küme rol bağlaması oluşturacaksınız.
Aşağıdaki playbook'u kube-role.yml
olarak kaydedin:
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>
Yer tutucuyu <your-aad-account>
Microsoft Entra kiracı nesne kimliğiniz ile değiştirin.
Yeni rolünüzü AKS'ye dağıtan aşağıdaki playbook'u olarak aks-kube-deploy.yml
kaydedin:
- name: Apply role to AKS
k8s:
src: kube-role.yml
kubeconfig: "aks-{{ name }}-kubeconfig"
Örnek playbook'u çalıştırma
Bu bölümde, bu makalede oluşturma görevlerini çağıran örnek playbook'un tamamı listelenmiştir.
Aşağıdaki playbook'u aks-rbac.yml
olarak kaydedin:
---
- 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
bölümünde, aşağıdaki yer tutucuları Microsoft Entra bilgilerinizle değiştirin:
<client id>
<server id>
<server secret>
<tenant id>
komutunu kullanarak playbook'un ansible-playbook
tamamını çalıştırın:
ansible-playbook aks-rbac.yml
Sonuçları doğrulama
Bu bölümde, bu makalede oluşturan düğümlerin kubectl listesini kullanacaksınız.
Terminal istemine aşağıdaki komutu girin:
kubectl --kubeconfig aks-aksansibletest-kubeconfig-user get nodes
Komut sizi bir kimlik doğrulama sayfasına yönlendirir. Azure hesabınızla oturum açın.
Kimliği doğrulandıktan sonra kubectl düğümleri aşağıdaki sonuçlara benzer şekilde listeler:
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
Kaynakları temizleme
Artık gerekli olmadığında, bu makalede oluşturulan kaynakları silin.
Aşağıdaki kodu olarak cleanup.yml
kaydedin:
---
- 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"
Ansible-playbook kullanarak playbook'u çalıştırma
ansible-playbook cleanup.yml