diff --git a/k8s/infra/poimen/kustomization.yaml b/k8s/infra/poimen/kustomization.yaml index a089cc3..32fdd35 100644 --- a/k8s/infra/poimen/kustomization.yaml +++ b/k8s/infra/poimen/kustomization.yaml @@ -6,3 +6,6 @@ kind: Kustomization # deployments (wave 0) are applied. resources: - memory-db.yaml + - poimen-sandbox-namespace.yaml + - poimen-sandbox-quota.yaml + - pi-session-netpol.yaml diff --git a/k8s/infra/poimen/pi-session-netpol.yaml b/k8s/infra/poimen/pi-session-netpol.yaml new file mode 100644 index 0000000..4f5c337 --- /dev/null +++ b/k8s/infra/poimen/pi-session-netpol.yaml @@ -0,0 +1,12 @@ +apiVersion: cilium.io/v2 +kind: CiliumNetworkPolicy +metadata: + name: pi-session-deny-kube-api + namespace: poimen-sandbox +spec: + endpointSelector: + matchLabels: + app: pi-session + egressDeny: + - toEntities: + - kube-apiserver diff --git a/k8s/infra/poimen/poimen-sandbox-namespace.yaml b/k8s/infra/poimen/poimen-sandbox-namespace.yaml new file mode 100644 index 0000000..d7f7cdc --- /dev/null +++ b/k8s/infra/poimen/poimen-sandbox-namespace.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: poimen-sandbox + labels: + pod-security.kubernetes.io/enforce: restricted + pod-security.kubernetes.io/enforce-version: latest + pod-security.kubernetes.io/audit: restricted + pod-security.kubernetes.io/warn: restricted diff --git a/k8s/infra/poimen/poimen-sandbox-quota.yaml b/k8s/infra/poimen/poimen-sandbox-quota.yaml new file mode 100644 index 0000000..23ad3b5 --- /dev/null +++ b/k8s/infra/poimen/poimen-sandbox-quota.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: ResourceQuota +metadata: + name: sandbox-quota + namespace: poimen-sandbox +spec: + hard: + pods: "20" + requests.cpu: "10" + requests.memory: 20Gi + limits.cpu: "20" + limits.memory: 40Gi diff --git a/k8s/infra/rbac/kustomization.yaml b/k8s/infra/rbac/kustomization.yaml index 4e21d34..a82ecf7 100644 --- a/k8s/infra/rbac/kustomization.yaml +++ b/k8s/infra/rbac/kustomization.yaml @@ -16,6 +16,7 @@ resources: - temporal-operator-role.yaml - llm-serving-operator-role.yaml - poimen-memory-operator-role.yaml + - sandbox-observer-role.yaml # paperless's Role/RoleBinding lives in k8s/apps/paperless/rbac.yaml instead - # that app already has its own kustomization + namespace, no need to # duplicate it here. All of these stay inert (grant nothing) until diff --git a/k8s/infra/rbac/sandbox-observer-role.yaml b/k8s/infra/rbac/sandbox-observer-role.yaml new file mode 100644 index 0000000..e134a8c --- /dev/null +++ b/k8s/infra/rbac/sandbox-observer-role.yaml @@ -0,0 +1,23 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: sandbox-observer + namespace: poimen-sandbox +rules: + - apiGroups: [""] + resources: [pods, pods/log, services] + verbs: [get, list, watch] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: poimen-devs-sandbox + namespace: poimen-sandbox +subjects: + - kind: Group + apiGroup: rbac.authorization.k8s.io + name: "oidc:poimen-devs" +roleRef: + kind: Role + name: sandbox-observer + apiGroup: rbac.authorization.k8s.io