Kaydedilmiş kümeler, küme kaynaklarına ack-cluster-agent bileşeni üzerinden erişir ve tüm işlem izinleri, ack-cluster-agent kurulumu sırasında oluşturulan ack ServiceAccount ile sınırlıdır. Kısıtlı mod ve yönetici modu kullanılabilir. Bu konu, kaydedilmiş bir kümede ack-cluster-agent tarafından gereken RBAC izinlerini açıklar.ack ServiceAccount, kaydedilmiş kümenizdeki ACK konsol erişimini kontrol etmek için kullanılır.
İki temel izin modu bulunur:
| Mod | Konsol yetenekleri | Ne zaman kullanılır |
|---|---|---|
| Kısıtlı mod | İş yükü görünürlüğü kullanılamaz. Bileşen yönetimi ve Managed Service for Prometheus (Prometheus) ile Simple Log Service (SLS) gibi hizmetlere onectl aracılığıyla erişilebilir. | En az ayrıcalık gerektiren ortamlar |
| Yönetici modu | Tüm konsol özellikleri kullanılabilir | Tam konsol erişimi gerektiğinde |
Bileşenleri yüklemek, düğüm havuzları oluşturmak, günlük sorgularını etkinleştirmek veya kaynakları salt okunur modda görüntülemek için ek izinler gerekir.
Ön koşullar
Aşağıdaki koşulların sağlandığından emin olun:
ack-cluster-agent sürümü 1.13.1.105-g8ee9abb-aliyun veya daha yenisi yüklüdür. Bkz. Bileşenleri yönetin.
Kısıtlı mod izinlerini verin
Kısıtlı mod, kube-system ve kube-public ad alanlarında ConfigMap'ler için okuma erişimi gerektirir. Aşağıdaki Rolleri ve RoleBinding'leri uygulayın:
---
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
---
Kısıtlı modda iş yükü görünürlüğü kullanılamaz. Bileşenleri yönetmek ve Prometheus ile SLS gibi hizmetlere erişmek için onectl kullanın . onectl, geçici olarak yönetici izinlerine yükseltilir ve işlem tamamlandığında veya kesildiğinde bu izinleri geri alır.
Yönetici modu izinlerini verin
Yönetici modu, tüm küme kaynaklarına tam erişim sağlar. Bu ClusterRole'u ack ServiceAccount'a uygulayın:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: ack-admin
labels:
ack/creator: "ack"
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
Bileşen yönetimi için izinleri verin
terway-eniip veya logtail-ds gibi bileşenleri yüklemek veya güncellemek için geçici yönetici izinleri gerekir. Aşağıdaki iş akışını izleyin:
1. Adım: Yönetici izinlerine yükseltin
Yönetici modu izinlerini verin bölümündeki ClusterRole'u uygulayın.
2. Adım: Bileşeni yükleyin veya güncelleyin
Bileşeni yükleyin veya güncelleyin.
3. Adım: İzinleri en aza indirin
Yükleme veya güncelleme tamamlandıktan sonra ClusterRole'u en az ayrıcalıklı duruma geri yükleyin:
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"]
Düğüm havuzu oluşturma için izinleri verin
Terway'i yüklemek veya düğüm havuzları oluşturmak da geçici yönetici izinleri gerektirir. Önce yükseltip sonra geri alma iş akışını izleyin:
1. Adım: Yönetici izinlerine yükseltin
Yönetici modu izinlerini verin bölümündeki ClusterRole'u uygulayın.
2. Adım: Düğüm havuzunu oluşturun veya Terway'i yükleyin
Düğüm havuzunu oluşturun veya Terway'i yükleyin.
3. Adım: İzinleri en aza indirin
İşlem tamamlandıktan sonra ClusterRole'u en az ayrıcalıklı duruma geri yükleyin:
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"]
SLS günlük sorguları için izinleri verin
Kaydedilmiş kümede SLS'yi etkinleştirdikten sonra, ACK konsolunda günlükleri sorgulamak için aşağıdaki ClusterRole ve ClusterRoleBinding'i uygulayın:
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
Salt okunur izinleri verin
ACK konsolunda Kubernetes kaynaklarını değişiklik yapmadan görüntülemek için aşağıdaki ClusterRole ve ClusterRoleBinding'i uygulayın:
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