aks w azure rbac-flux-applier cluster-admin clusterrolebinding显然不起作用

问题描述 投票:0回答:1
扔错误

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群集
azure kubernetes azure-aks flux azure-rbac
1个回答
0
投票

将此链接用于报名文件

创建了集群,以授予对任何特定命名空间中秘密的读取访问 vi clusterrole.yaml kubectal apply -f clusterrole.yaml

I创建了绑定的角色,以在命名空间中授予Pod-Reader并部署文件

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

我使用以下命令创建了名为nginx-ingress-controller的名称空间
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控制器中创建了Helm Repo
通过通量进入群集

我部署了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

enter image description here

另一个问题上的另一个问题正在带您浏览已经发现的东西。您必须设置一个

ClusterRoleBinding
才能允许通量系统在该名称空间上设置基础架构所需的管理权限。
这似乎最好将权限明确地授予未知名称空间,而不是在每个可能的未来名称空间自动获得
flux-applier

上帝权限的每个服务帐户。 enter image description here

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.