Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:RBAC permissions required by the ack-cluster-agent component

Última atualização: Jun 27, 2026

Ao registrar um cluster Kubernetes externo no Container Service for Kubernetes (ACK), o componente ack-cluster-agent é executado no cluster e o conecta ao plano de controle do ACK. Todas as operações do console do ACK direcionadas ao cluster registrado passam pelo ack-cluster-agent, que roda sob uma ServiceAccount chamada ack no namespace kube-system. As permissões dessa ServiceAccount determinam quais ações o console do ACK pode executar no cluster.

Dois modos básicos de permissão estão disponíveis:

Modo

Capacidades do console

Quando usar

Modo restrito

A visibilidade de cargas de trabalho não está disponível. O gerenciamento de componentes e serviços como Managed Service for Prometheus e Simple Log Service (SLS) ocorre via onectl.

Ambientes com privilégio mínimo

Modo administrador

Todos os recursos do console estão disponíveis

Necessário acesso completo ao console

Operações específicas exigem permissões adicionais: instalação de componentes, criação de pools de nós, habilitação de consultas de log ou visualização de recursos no modo somente leitura.

Pré-requisitos

Antes de começar, verifique se você tem:

  • A versão 1.13.1.105-g8ee9abb-aliyun ou posterior do ack-cluster-agent instalada. Para mais informações, consulte Gerenciar componentes.

Conceder permissões do modo restrito

O modo restrito exige acesso de leitura a um conjunto específico de ConfigMaps nos namespaces kube-system e kube-public. Aplique as seguintes Roles e RoleBindings ao cluster:

---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ack-agent-create-cm-role
  namespace: kube-system
  labels:
    ack/creator: "ack"
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ack-agent-update-cm-role
  namespace: kube-system
  labels:
    ack/creator: "ack"
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  resourceNames:
  - ack-agent-config
  - provider
  verbs:
  - update
  - get

---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ack-agent-read-cm-role
  namespace: kube-public
  labels:
    ack/creator: "ack"
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  resourceNames:
  - kube-root-ca.crt
  verbs:
  - get

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ack-agent-create-cm-rolebinding
  namespace: kube-system
  labels:
    ack/creator: "ack"
subjects:
- kind: ServiceAccount
  name: ack
  namespace: kube-system
roleRef:
  kind: Role
  name: ack-agent-create-cm-role
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ack-agent-update-cm-rolebinding
  namespace: kube-system
  labels:
    ack/creator: "ack"
subjects:
- kind: ServiceAccount
  name: ack
  namespace: kube-system
roleRef:
  kind: Role
  name: ack-agent-update-cm-role
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ack-agent-read-cm-rolebinding
  namespace: kube-public
  labels:
    ack/creator: "ack"
subjects:
- kind: ServiceAccount
  name: ack
  namespace: kube-system
roleRef:
  kind: Role
  name: ack-agent-read-cm-role
  apiGroup: rbac.authorization.k8s.io
---
No modo restrito, a visibilidade de cargas de trabalho no console do ACK não está disponível. Para gerenciar componentes e usar serviços como Managed Service for Prometheus e SLS, utilize o onectl. Ao gerenciar componentes, o onectl eleva temporariamente as permissões do cluster para administrador e as revoga quando a operação termina ou é interrompida. Para mais informações, consulte Usar onectl para gerenciar clusters registrados .

Conceder permissões do modo administrador

O modo administrador concede acesso total a todos os recursos do cluster. Aplique a seguinte ClusterRole à ServiceAccount ack:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ack-admin
  labels:
    ack/creator: "ack"
rules:
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]

Conceder permissões para gerenciamento de componentes

A instalação ou atualização de componentes como terway-eniip ou logtail-ds requer permissões temporárias de administrador, pois essas operações gravam em recursos com escopo de cluster. Siga este fluxo de trabalho:

Etapa 1: Elevar para permissões de administrador

Aplique a ClusterRole de administrador mostrada em Conceder permissões do modo administrador antes de instalar ou atualizar componentes.

Etapa 2: Instalar ou atualizar o componente

Prossiga com a instalação ou atualização do componente.

Etapa 3: Restaurar permissões mínimas

Após instalar ou atualizar componentes, restaure a ClusterRole para as permissões mínimas:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ack-admin
  labels:
    ack/creator: "ack"
rules:
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["get","list","watch"]
- apiGroups: [""]
  resources: ["configmaps"]
  resourceNames: ["ack-agent-config","provider"]
  verbs: ["get","list","watch","update"]
- apiGroups: [""]
  resources: ["configmaps"]
  resourceNames: ["autoscaler-meta"]
  verbs: ["get","list","watch","update"]
- apiGroups: ["*"]
  resources: ["daemonsets", "deployments"]
  resourceNames: ["terway-eniip","security-inspector","ack-cluster-agent","gatekeeper","ack-virtual-node","metrics-server","logtail-ds","resource-controller","aliyun-acr-credential-helper","migrate-controller","ack-kubernetes-cronhpa-controller","tiller-deploy"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["*"]
  resources: ["daemonsets", "deployments"]
  resourceNames: ["cluster-autoscaler"]
  verbs: ["get", "list", "watch", "update"]
- apiGroups: [""]
  resources: ["pods","secrets"]
  verbs: ["list"]

Conceder permissões para criação de pool de nós

Instalar o Terway ou criar pools de nós também exige permissões temporárias de administrador. Siga o mesmo fluxo de trabalho de elevação e restauração:

Etapa 1: Elevar para permissões de administrador

Aplique a ClusterRole de administrador mostrada em Conceder permissões do modo administrador antes de instalar o Terway ou criar pools de nós.

Etapa 2: Criar o pool de nós ou instalar o Terway

Execute a operação.

Etapa 3: Restaurar permissões mínimas

Depois de instalar o Terway ou criar pools de nós, restaure a ClusterRole para as permissões mínimas:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ack-admin
  labels:
    ack/creator: "ack"
rules:
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["get","list","watch"]
- apiGroups: [""]
  resources: ["configmaps"]
  resourceNames: ["ack-agent-config","provider","autoscaler-meta","eni-config"]
  verbs: ["get","list","watch","update"]
- apiGroups: ["*"]
  resources: ["daemonsets", "deployments"]
  resourceNames: ["terway-eniip", "cluster-autoscaler"]
  verbs: ["get", "list", "watch", "update"]

Conceder permissões para consultas de log do Simple Log Service

Após habilitar o Simple Log Service (SLS) no cluster registrado, aplique a seguinte ClusterRole e ClusterRoleBinding para consultar logs no console do ACK:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ack-agent-role-log
  labels:
    ack/creator: "ack"
rules:
- apiGroups: [""]
  resources: ["namespaces"]
  verbs: ["get","list","watch"]
- apiGroups: ["apps"]
  resources: ["daemonsets", "deployments"]
  resourceNames: ["alibaba-log-controller", "logtail-ds", "kube-proxy-master"]
  verbs: ["get", "list", "watch"]
- apiGroups: [""]
  resources: ["configmaps"]
  resourceNames: ["alibaba-log-configuration"]
  verbs: ["get","list","watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ack-agent-binding-log
  labels:
    ack/creator: "ack"
subjects:
- kind: ServiceAccount
  name: ack
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: ack-agent-role-log
  apiGroup: rbac.authorization.k8s.io

Conceder permissões de somente leitura

As permissões de somente leitura permitem visualizar recursos do Kubernetes no console do ACK sem fazer alterações. Aplique a seguinte ClusterRole e ClusterRoleBinding:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ack-readonly-clusterrole
rules:
- apiGroups:
  - ""
  resources:
  - nodes
  - namespaces
  - pods
  - pods/log
  - pods/exec
  - configmaps
  - endpoints
  - events
  - limitranges
  - persistentvolumeclaims
  - podtemplates
  - replicationcontrollers
  - resourcequotas
  - serviceaccounts
  - services
  verbs:
  - get
  - list
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - statefulsets
  - replicasets
  verbs:
  - get
  - list
- apiGroups:
  - batch
  resources:
  - jobs
  - cronjobs
  verbs:
  - get
  - list
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - get
  - list
- apiGroups:
  - discovery.k8s.io
  resources:
  - endpointslices
  verbs:
  - get
  - list
- apiGroups:
  - events.k8s.io
  resources:
  - events
  verbs:
  - get
  - list
- apiGroups:
  - extensions
  resources:
  - daemonsets
  - deployments
  - ingresses
  - networkpolicies
  - replicasets
  verbs:
  - get
  - list
- apiGroups:
  - networking.k8s.io
  resources:
  - ingresses
  - networkpolicies
  verbs:
  - get
  - list
- apiGroups:
  - policy
  resources:
  - poddisruptionbudgets
  verbs:
  - get
  - list
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - rolebindings
  - roles
  verbs:
  - get
  - list
- apiGroups:
  - storage.k8s.io
  resources:
  - csistoragecapacities
  verbs:
  - get
  - list

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ack-readonly-clusterrolebinding
  labels:
    ack/creator: "ack"
subjects:
- kind: ServiceAccount
  name: ack
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: ack-readonly-clusterrole
  apiGroup: rbac.authorization.k8s.io