Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
O Ansible 2.8 (ou posterior) é necessário para executar os playbooks de exemplo neste artigo.
O Serviço Kubernetes do Azure (AKS) simplifica a implantação de um cluster Kubernetes gerenciado no Azure. O AKS reduz a complexidade e a sobrecarga operacional de gerir o Kubernetes ao descarregar grande parte dessa responsabilidade para o Azure. Como um serviço Kubernetes hospedado, o Azure lida com tarefas críticas, como monitoramento de integridade e manutenção para você. Os mestres do Kubernetes são gerenciados pelo Azure. Você gerencia e mantém apenas os nós do agente. Como um serviço gerido de Kubernetes, o AKS é gratuito - você paga apenas pelos nós de agente dentro de seus clusters; não pelos nós principais.
O AKS pode ser configurado para usar o Microsoft Entra ID para autenticação do usuário. Uma vez configurado, você usa seu token de autenticação do Microsoft Entra para entrar no cluster AKS. O RBAC pode ser baseado na identidade de um usuário ou na associação a um grupo de diretórios.
Neste artigo, você aprenderá a:
- Criar um cluster AKS com ID do Microsoft Entra ativado
- Configurar uma função RBAC no cluster
Pré-requisitos
- Assinatura do Azure: se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
- Principal de serviço do Azure: Crie um principal de serviço, anotando os seguintes valores: appId, displayName, palavra-passe e inquilino.
Instale o Ansible: execute uma das seguintes opções:
- Instalar e configurar o Ansible em uma máquina virtual Linux
- Configure o Azure Cloud Shell e, se você não tiver acesso a uma máquina virtual Linux, crie uma máquina virtual com o Ansible.
-
Instalar a biblioteca RedHat OpenShift -
pip install openshift
Configurar o ID do Microsoft Entra para autenticação AKS
Ao configurar o ID do Microsoft Entra para autenticação AKS, dois aplicativos do Microsoft Entra são configurados. Essa operação deve ser concluída por um administrador locatário do Azure. Para obter mais informações, consulte Integrar o Microsoft Entra ID com o AKS.
No administrador de locatário do Azure, obtenha os seguintes valores:
- Segredo da aplicação de servidor
- ID do aplicativo do servidor
- ID do aplicativo cliente
- ID do inquilino
Esses valores são necessários para executar o playbook de exemplo.
Criar um cluster do AKS
Nesta seção, você cria um AKS com o aplicativo Microsoft Entra.
Aqui estão algumas notas-chave a considerar ao trabalhar com o manual de exemplo:
O guia é carregado
ssh_keya partir de~/.ssh/id_rsa.pub. Se você modificá-lo, use o formato de linha única - começando com "ssh-rsa" (sem as aspas).Os valores
client_ideclient_secretsão carregados de~/.azure/credentials, que é o arquivo de credenciais padrão. Você pode definir estes valores para o seu principal de serviço ou pode carregar estes valores a partir de variáveis de ambiente.client_id: "{{ lookup('env', 'AZURE_CLIENT_ID') }}" client_secret: "{{ lookup('env', 'AZURE_SECRET') }}"
Salve o seguinte playbook como 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"
Obter a ID do objeto Microsoft Entra
Para criar uma associação RBAC, primeiro você precisa obter a ID de objeto do Microsoft Entra.
Inicie sessão no portal Azure.
No campo de pesquisa na parte superior da página, digite Microsoft Entra ID.
Clique em
Enter.No menu Gerenciar , selecione Usuários.
No campo "Nome", pesquise a sua conta.
Na coluna Nome , selecione o link para sua conta.
Na seção Identidade , copie a ID do objeto.
Criar vinculação RBAC
Nesta seção, cria-se uma associação de função ou uma associação de função de cluster no AKS.
Salve o seguinte playbook como 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>
Substitua o marcador "<your-aad-account>" pelo ID do objeto do locatário do Microsoft Entra.
Salve o seguinte manual - que implanta sua nova função no AKS - como aks-kube-deploy.yml:
- name: Apply role to AKS
k8s:
src: kube-role.yml
kubeconfig: "aks-{{ name }}-kubeconfig"
Execute o playbook de exemplo
Esta seção lista o exemplo completo de manual que chama as tarefas criadas neste artigo.
Salve o seguinte playbook como 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
Na secção vars, substitua os seguintes marcadores de posição pelas informações do Microsoft Entra:
<client id><server id><server secret><tenant id>
Execute o playbook completo usando o comando ansible-playbook.
ansible-playbook aks-rbac.yml
Verificar os resultados
Nesta seção, você usa o comando kubectl para listar os nós criados neste artigo.
Digite o seguinte comando em um prompt de terminal:
kubectl --kubeconfig aks-aksansibletest-kubeconfig-user get nodes
O comando irá direcioná-lo para uma página de autenticação. Inicie sessão com a sua conta do Azure.
Uma vez autenticado, kubectl lista os nós de forma semelhante aos seguintes resultados:
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
Limpeza de recursos
Quando não for mais necessário, exclua os recursos criados neste artigo.
Salve o seguinte código como 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"
Execute o livro de estratégias usando ansible-playbook
ansible-playbook cleanup.yml