Spaces:
Runtime error
Runtime error
File size: 2,106 Bytes
105b369 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
from typing import Dict, List, Optional
from phi.k8s.enums.api_group import ApiGroup
from phi.k8s.enums.api_version import ApiVersion
from phi.k8s.enums.kind import Kind
from phi.k8s.resource.rbac_authorization_k8s_io.v1.cluste_role_binding import (
Subject,
RoleRef,
ClusterRoleBinding,
)
from phi.k8s.create.common.labels import create_component_labels_dict
from phi.k8s.resource.meta.v1.object_meta import ObjectMeta
from phi.utils.log import logger
def create_eks_admin_crb(
name: str = "eks-admin-crb",
cluster_role: str = "cluster-admin",
users: Optional[List[str]] = None,
groups: Optional[List[str]] = None,
service_accounts: Optional[List[str]] = None,
app_name: str = "eks-admin",
labels: Optional[Dict[str, str]] = None,
skip_create: bool = False,
skip_delete: bool = False,
) -> Optional[ClusterRoleBinding]:
crb_labels = create_component_labels_dict(
component_name=name,
app_name=app_name,
labels=labels,
)
subjects: List[Subject] = []
if service_accounts is not None and isinstance(service_accounts, list):
for sa in service_accounts:
subjects.append(Subject(kind=Kind.SERVICEACCOUNT, name=sa))
if users is not None and isinstance(users, list):
for user in users:
subjects.append(Subject(kind=Kind.USER, name=user))
if groups is not None and isinstance(groups, list):
for group in groups:
subjects.append(Subject(kind=Kind.GROUP, name=group))
if len(subjects) == 0:
logger.error(f"No subjects for ClusterRoleBinding: {name}")
return None
return ClusterRoleBinding(
name=name,
api_version=ApiVersion.RBAC_AUTH_V1,
kind=Kind.CLUSTERROLEBINDING,
metadata=ObjectMeta(
name=name,
labels=crb_labels,
),
role_ref=RoleRef(
api_group=ApiGroup.RBAC_AUTH,
kind=Kind.CLUSTERROLE,
name=cluster_role,
),
subjects=subjects,
skip_create=skip_create,
skip_delete=skip_delete,
)
|