reconciliation failed: failed to get last release revision: query: failed to query with labels: secrets is forbidden: User "system:serviceaccount:nginx:flux-applier" cannot list resource "secrets" in API group "" in the namespace "default": Azure does not have opinion for this user.
我可以看到磁通设置一个群集 - 使得磁通量更高,我已验证的群集管理
Name: flux-applier-binding
Labels: <none>
Annotations: <none>
Role:
Kind: ClusterRole
Name: cluster-admin
Subjects:
Kind Name Namespace
---- ---- ---------
ServiceAccount flux-applier flux-system
我认为我的问题是Azure无法识别此ServiceAccount,并且不会回到内置角色?
https://github.com/kubeguard/guard/blob/master/authz/providers/azure/rbac/checkaccessreqhelper.go
AKS上的Azure RBAC上的Azure文档清楚地表明:
如果使请求的身份存在于Azure AD中,则Azure将与Kubernetes RBAC合作以授权该请求。如果身份存在于Azure AD之外(即Kubernetes服务帐户),则授权将延迟到普通的KubernetesRBAC.
Https://learn.microsoft.com/en-us/azure/aks/concepts-indentity但这似乎不是真的吗?也许Flux对ServiceAccounts做了奇怪的事情?我之所以这样说,是因为默认名称空间中没有磁通应用帐户,仅在磁通系统名称空间中。但是,如果我通过kubectl事物开始工作的“幽灵”服务帐户分配群集。
kubectl create clusterrolebinding flux-nginx-cluster-admin --clusterrole=cluster-admin --serviceaccount=nginx:flux-applier
我想避免这样做,似乎不是我的责任。
我创建了用Rabc配置的AKS群集
将此链接用于报名文件
创建了集群,以授予对任何特定命名空间中秘密的读取访问
vi clusterrole.yaml
kubectal apply -f clusterrole.yaml
vi rolebinding.yaml
kubectl apply -f rolebinding.yml
创建了群集结合角色,以授予整个集群的权限
vi clusterrolebinding.yaml
kubectl apply -f clusterrolebinding.yaml
创建了将管理集群角色中的权限授予用户的角色限制
kubectl create rolebinding bob-admin-binding --clusterrole=admin --user=bob --namespace=namespace_name
kubectl create rolebinding myapp-view-binding --clusterrole=view --serviceaccount=acme:myapp --namespace=namespace_name
kubectl create clusterrolebinding root-cluster-admin-binding --clusterrole=cluster-admin --user=root
kubectl create namespace nginx-ingress-controller
我使用磁铁定义了头盔
vi helmrepository-bitnami.yaml
kubectl apply -f helmrepository-bitnami.yaml
我在我的Flux Repo中创建了自定义化以部署文件
vi kustomization-nginx-ingress-controller.yaml
kubectl apply -f kustomization-nginx-ingress-controller.yaml
我创建了配置映射文件
vi configmap.yaml
kubectl apply -f configmap.yaml
我部署了Nginx Ingress Controller
kubectl get pods
kubectl get services
我可以看到我创建的所有豆荚和服务
在授予集群的权限后,我们必须更新或创建Auth Coneuncile Permissions
通过使用以下命令,它将创建或更新丢失的字段或删除额外的许可
kubectl auth reconcile -f my-rbac-rules.yaml --dry-run=client
kubectl auth reconcile -f my-rbac-rules.yaml
kubectl auth reconcile -f my-rbac-rules.yaml --remove-extra-subjects --remove-extra-permissions
我们使用以下命令授予默认服务帐户的许可
kubectl create rolebinding default-view \
--clusterrole=view \
--serviceaccount=my-namespace:default \
--namespace=namespace_name
注:如果Azure无法识别服务帐户,我们必须授予默认服务的权限
有关更多信息,请参阅此
url另一个问题上的另一个问题正在带您浏览已经发现的东西。您必须设置一个
ClusterRoleBinding
才能允许通量系统在该名称空间上设置基础架构所需的管理权限。 这似乎最好将权限明确地授予未知名称空间,而不是在每个可能的未来名称空间自动获得
flux-applier
上帝权限的每个服务帐户。