应该创建/使用哪些角色来部署使用istio的服务?

时间:2019-02-14 23:39:01

标签: istio azure-kubernetes

我正在构建一个启用了istio的RBAC AKS集群。我已经分配了集群管理员角色,并且能够顺利部署最小的istio服务(服务/部署/网关/ VirtualService),没有问题。

我需要给我的组织中的团队一个访问AKS的权限,所以我创建了一个名称空间,并在名称空间上为其分配了管理员角色。 k8s原生的一切(kubectl get services --namespace team)都可以正常工作。但是,当他们部署相同的最小istio服务(Service / Deployment / Gateway / VirtualService)时,他们遇到了许多类似于以下内容的错误:

Error from server (Forbidden): error when retrieving current configuration of:
Resource: "networking.istio.io/v1alpha3, Resource=gateways", GroupVersionKind: "networking.istio.io/v1alpha3, Kind=Gateway"

这很有意义,因为我没有将组绑定到任何istio角色。一旦我授予他们cluster-admin的权限,它就会按预期工作。

问题是,我不知道要添加哪个istio角色。当我查看istio安装后群集中存在的角色时,我看不到任何明显的角色。

我看到的角色:

  • istio-城堡-istio-系统
  • istio-vnetingressgateway-istio-system
  • istio-sidecar-injector-istio-system
  • istio-security-post-install-istio-system
  • istio-pilot-istio-system
  • istio-ingressgateway-istio-system
  • istio-grafana-post-install-istio-system
  • istio-mixer-istio-system
  • istio-galley-istio-system
  • istio-egressgateway-istio-system

需要在istio部署上(在名称空间内)进行操作的用户的合适角色是什么?它是角色组合吗?我需要一个新的角色吗?

2 个答案:

答案 0 :(得分:1)

具有这样的作用应该起作用:

"apiGroups": [
    "istio.io"
],
"resources": [
    "*"
],
"verbs": [
    "*"
]

如果这不起作用,则需要执行以下操作:

"apiGroups": [
    "config.istio.io",
    "networking.istio.io",
    "rbac.istio.io",
    "authentication.istio.io"
],
"resources": [
    "*"
],
"verbs": [
    "*"
]

您可以为用户创建一个Role或Clusterrole以及绑定或角色绑定。

答案 1 :(得分:0)

我使用了以下内容,这些内容汇总为默认的edit(依次为admin)ClusterRoles。然后,绑定到editadmin的任何帐户都可以修改Istio资源:

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    rbac.authorization.k8s.io/aggregate-to-edit: "true"
  name: istio-edit
rules:
- apiGroups:
  - "config.istio.io"
  - "networking.istio.io"
  - "rbac.istio.io"
  - "authentication.istio.io"
  - "security.istio.io"
  resources:
  - "*"
  verbs:
  - "*"