Size: a a a

OpenShift - русскоязычное сообщество

2021 November 22

LT

Leonid Titov in OpenShift - русскоязычное сообщество
над CRD или CR?..
источник

JS

John Smith in OpenShift - русскоязычное сообщество
над CRD (Custom Resource Definition)
источник

JS

John Smith in OpenShift - русскоязычное сообщество
Я создал вот такую CR:

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
 labels:
   rbac.authorization.k8s.io/aggregate-to-admin: "true"
 name: crud-crd
rules:
- apiGroups: ["apiextensions.k8s.io"]
 resources: ["customresourcedefinitions"]
 verbs: ["*"]

но тест показал, что пользователь (проверял на временном sa, которому накинул CR 'admin' через RB [не CRB, а просто RB, но т.к. тесты делаю в том же namespace, где и sa - это не должно быть важно]) чё-то получает Forbidden при попытке apply манифеста с

---
apiVersion: argoproj.io/v1alpha1
kind: AppProject
...

который является CRD: https://github.com/argoproj/argo-cd/blob/master/manifests/crds/appproject-crd.yaml#L2
источник

LT

Leonid Titov in OpenShift - русскоязычное сообщество
потому что apply второго манифеста - это операция над CR, а не над CRD
источник

JS

John Smith in OpenShift - русскоязычное сообщество
ээээ, что?
---
apiVersion: argoproj.io/v1alpha1
kind: AppProject

kind: AppProjectkind: AppProject
источник

LT

Leonid Titov in OpenShift - русскоязычное сообщество
а роль у вас на это:
apiGroups: ["apiextensions.k8s.io"]
 resources: ["customresourcedefinitions"]
 verbs: ["*"]
источник

JS

John Smith in OpenShift - русскоязычное сообщество
а, блин, читаю CR как ClusterRole, а не CustomResource, тогда и ответ на ваш предыдущий вопрос - наверно я дал неправильный, а значит, что у меня первый манифест не на то права выдаёт: мне надо не на дефиниции ресурсов выдавать, а на сами экземпляры этих ресурсов
источник

JS

John Smith in OpenShift - русскоязычное сообщество
Так, погодите, ну так всё верно: есть объект "appprojects.argoproj.io" aka "AppProject" (ссылку на который я дал выше), который имеет тип CustomResourceDefinition

Я вот и хочу позволить пользователю создавать эти объекты, не перечисляя их все, а как-то через наследование от типа CustomResourceDefinition

Т.е. мне надо разрешить пользователю не новые CustomResourceDefinition'ы заводить (по аналогии с AppProject), а на уже имеющиеся в кластере Custom Resource'ы, которые заводит "суперадмин", который устанавливал, например, какие-то операторы, которые добавляют новые CRD в кластер.
источник

LT

Leonid Titov in OpenShift - русскоязычное сообщество
это не манипуляция определениями ресурсов, а манипуляция экземплярами этих ресурсов. На мой скромный взгляд, такое поведение легко не получить - но может кто-то другой знает
источник

VR

Vadim Rutkovsky in OpenShift - русскоязычное сообщество
CustomResourceDefinition описывает AppProject, так что права на изменение AppProject CRD позволят сам дефинишен менять.
Права на AppProject позволяют создавать его экземпляры, но не менять определение экземпляров
источник

JS

John Smith in OpenShift - русскоязычное сообщество
Но AppProject - это лишь 1 конкретный пример.
А есть и другие.
Их много.
Я не хочу перечислять их все.
И список со временем будет изменяться, а значит, мне потребуется и всем нужным пользователям права менять, а я хочу избежать этого.
Могу ли я этого избежать?
источник

VR

Vadim Rutkovsky in OpenShift - русскоязычное сообщество
можешь разрешить создавать всё (это фактически cluster-admin)
источник

JS

John Smith in OpenShift - русскоязычное сообщество
ну вот и хочется урезанного cluster-admin)
источник

VR

Vadim Rutkovsky in OpenShift - русскоязычное сообщество
не хочешь все - указывай в роли какие хочешь, по имени\группе
источник

JS

John Smith in OpenShift - русскоязычное сообщество
ну, т.е. ответ "нет, так нельзя, придётся перечислять в роли все конкретные customresource'ы на которые надо выдать доступ"
понял, спасибо
источник

DG

Dmitry Gadeev in OpenShift - русскоязычное сообщество
дак при появлении новых CR - ты же просто их будешь вносить в кластер роль, и все забинженные к ней будут получать новые права автоматически
источник

DG

Dmitry Gadeev in OpenShift - русскоязычное сообщество
при наличии гитопса - операция кажется тривиальной
источник

DG

Dmitry Gadeev in OpenShift - русскоязычное сообщество
если конечно не по 100 кастом ресурсов в день
источник

JS

John Smith in OpenShift - русскоязычное сообщество
хотелось и этого не делать)
источник

DG

Dmitry Gadeev in OpenShift - русскоязычное сообщество
можно написать свой адмишн контроллер 🙂
источник