mirror of
https://github.com/zalando/postgres-operator.git
synced 2026-10-19 09:45:22 +02:00
align UI chart rbac with operator and update doc
This commit is contained in:
@@ -0,0 +1,52 @@
|
|||||||
|
{{ if .Values.rbac.create }}
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: {{ include "postgres-operator-ui.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ template "postgres-operator-ui.name" . }}
|
||||||
|
helm.sh/chart: {{ template "postgres-operator-ui.chart" . }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- acid.zalan.do
|
||||||
|
resources:
|
||||||
|
- postgresqls
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- delete
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- patch
|
||||||
|
- update
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- services
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- apiGroups:
|
||||||
|
- apps
|
||||||
|
resources:
|
||||||
|
- statefulsets
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- namespaces
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
{{ end }}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{{ if .Values.rbac.create }}
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: {{ include "postgres-operator-ui.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ template "postgres-operator-ui.name" . }}
|
||||||
|
helm.sh/chart: {{ template "postgres-operator-ui.chart" . }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: {{ include "postgres-operator-ui.serviceAccountName" . }}
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: {{ include "postgres-operator-ui.serviceAccountName" . }}
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
{{ end }}
|
||||||
@@ -20,7 +20,7 @@ spec:
|
|||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
team: "acid" # Parameterize?
|
team: "acid" # Parameterize?
|
||||||
spec:
|
spec:
|
||||||
serviceAccountName: {{ template "postgres-operator-ui.name" . }}
|
serviceAccountName: {{ include "postgres-operator-ui.serviceAccountName" . }}
|
||||||
containers:
|
containers:
|
||||||
- name: "service"
|
- name: "service"
|
||||||
image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||||
@@ -45,8 +45,8 @@ spec:
|
|||||||
value: {{ .Values.envs.targetNamespace }}
|
value: {{ .Values.envs.targetNamespace }}
|
||||||
- name: "TEAMS"
|
- name: "TEAMS"
|
||||||
value: |-
|
value: |-
|
||||||
[
|
[
|
||||||
"acid"
|
"acid"
|
||||||
]
|
]
|
||||||
- name: "OPERATOR_UI_CONFIG"
|
- name: "OPERATOR_UI_CONFIG"
|
||||||
value: |-
|
value: |-
|
||||||
@@ -66,4 +66,4 @@ spec:
|
|||||||
"9.6",
|
"9.6",
|
||||||
"9.5"
|
"9.5"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,81 +1,11 @@
|
|||||||
|
{{ if .Values.serviceAccount.create }}
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: ServiceAccount
|
kind: ServiceAccount
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ template "postgres-operator-ui.name" . }}
|
name: {{ include "postgres-operator-ui.serviceAccountName" . }}
|
||||||
labels:
|
labels:
|
||||||
app.kubernetes.io/name: {{ template "postgres-operator-ui.name" . }}
|
app.kubernetes.io/name: {{ template "postgres-operator-ui.name" . }}
|
||||||
helm.sh/chart: {{ template "postgres-operator-ui.chart" . }}
|
helm.sh/chart: {{ template "postgres-operator-ui.chart" . }}
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{ end }}
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: {{ template "postgres-operator-ui.name" . }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ template "postgres-operator-ui.name" . }}
|
|
||||||
helm.sh/chart: {{ template "postgres-operator-ui.chart" . }}
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
rules:
|
|
||||||
- apiGroups:
|
|
||||||
- acid.zalan.do
|
|
||||||
resources:
|
|
||||||
- postgresqls
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- delete
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- patch
|
|
||||||
- update
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- pods
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- watch
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- services
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- apiGroups:
|
|
||||||
- apps
|
|
||||||
resources:
|
|
||||||
- statefulsets
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- namespaces
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
---
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRoleBinding
|
|
||||||
metadata:
|
|
||||||
name: {{ template "postgres-operator-ui.name" . }}
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ template "postgres-operator-ui.name" . }}
|
|
||||||
helm.sh/chart: {{ template "postgres-operator-ui.chart" . }}
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
roleRef:
|
|
||||||
apiGroup: rbac.authorization.k8s.io
|
|
||||||
kind: ClusterRole
|
|
||||||
name: {{ template "postgres-operator-ui.name" . }}
|
|
||||||
subjects:
|
|
||||||
- kind: ServiceAccount
|
|
||||||
# note: the cluster role binding needs to be defined
|
|
||||||
# for every namespace the operator-ui service account lives in.
|
|
||||||
name: {{ template "postgres-operator-ui.name" . }}
|
|
||||||
namespace: {{ .Release.Namespace }}
|
|
||||||
|
|||||||
@@ -11,6 +11,17 @@ image:
|
|||||||
tag: v1.2.0
|
tag: v1.2.0
|
||||||
pullPolicy: "IfNotPresent"
|
pullPolicy: "IfNotPresent"
|
||||||
|
|
||||||
|
rbac:
|
||||||
|
# Specifies whether RBAC resources should be created
|
||||||
|
create: true
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a ServiceAccount should be created
|
||||||
|
create: true
|
||||||
|
# The name of the ServiceAccount to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name:
|
||||||
|
|
||||||
# configure UI pod resources
|
# configure UI pod resources
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
@@ -22,7 +33,7 @@ resources:
|
|||||||
|
|
||||||
# configure UI ENVs
|
# configure UI ENVs
|
||||||
envs:
|
envs:
|
||||||
# IMPORTANT: While operator chart and UI chart are idendependent, this is the interface between
|
# IMPORTANT: While operator chart and UI chart are idendependent, this is the interface between
|
||||||
# UI and operator API. Insert the service name of the operator API here!
|
# UI and operator API. Insert the service name of the operator API here!
|
||||||
operatorApiUrl: "http://postgres-operator:8080"
|
operatorApiUrl: "http://postgres-operator:8080"
|
||||||
targetNamespace: "default"
|
targetNamespace: "default"
|
||||||
@@ -44,4 +55,4 @@ ingress:
|
|||||||
tls: []
|
tls: []
|
||||||
# - secretName: ui-tls
|
# - secretName: ui-tls
|
||||||
# hosts:
|
# hosts:
|
||||||
# - ui.exmaple.org
|
# - ui.exmaple.org
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
{{ if .Values.rbac.create }}
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: postgres-pod
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: {{ template "postgres-operator.name" . }}
|
||||||
|
helm.sh/chart: {{ template "postgres-operator.chart" . }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
rules:
|
||||||
|
# Patroni needs to watch and manage endpoints
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- endpoints
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- delete
|
||||||
|
- deletecollection
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- patch
|
||||||
|
- update
|
||||||
|
- watch
|
||||||
|
# Patroni needs to watch pods
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- patch
|
||||||
|
- update
|
||||||
|
- watch
|
||||||
|
# to let Patroni create a headless service
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- services
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
# to run privileged pods
|
||||||
|
- apiGroups:
|
||||||
|
- extensions
|
||||||
|
resources:
|
||||||
|
- podsecuritypolicies
|
||||||
|
resourceNames:
|
||||||
|
- privileged
|
||||||
|
verbs:
|
||||||
|
- use
|
||||||
|
{{ end }}
|
||||||
@@ -178,57 +178,4 @@ rules:
|
|||||||
- list
|
- list
|
||||||
- patch
|
- patch
|
||||||
- update
|
- update
|
||||||
---
|
|
||||||
|
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
|
||||||
kind: ClusterRole
|
|
||||||
metadata:
|
|
||||||
name: postgres-pod
|
|
||||||
labels:
|
|
||||||
app.kubernetes.io/name: {{ template "postgres-operator.name" . }}
|
|
||||||
helm.sh/chart: {{ template "postgres-operator.chart" . }}
|
|
||||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
||||||
rules:
|
|
||||||
# Patroni needs to watch and manage endpoints
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- endpoints
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
- delete
|
|
||||||
- deletecollection
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- patch
|
|
||||||
- update
|
|
||||||
- watch
|
|
||||||
# Patroni needs to watch pods
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- pods
|
|
||||||
verbs:
|
|
||||||
- get
|
|
||||||
- list
|
|
||||||
- patch
|
|
||||||
- update
|
|
||||||
- watch
|
|
||||||
# to let Patroni create a headless service
|
|
||||||
- apiGroups:
|
|
||||||
- ""
|
|
||||||
resources:
|
|
||||||
- services
|
|
||||||
verbs:
|
|
||||||
- create
|
|
||||||
# to run privileged pods
|
|
||||||
- apiGroups:
|
|
||||||
- extensions
|
|
||||||
resources:
|
|
||||||
- podsecuritypolicies
|
|
||||||
resourceNames:
|
|
||||||
- privileged
|
|
||||||
verbs:
|
|
||||||
- use
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -14,8 +14,6 @@ roleRef:
|
|||||||
name: {{ include "postgres-operator.serviceAccountName" . }}
|
name: {{ include "postgres-operator.serviceAccountName" . }}
|
||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
# note: the cluster role binding needs to be defined
|
|
||||||
# for every namespace the postgres-pod service account lives in.
|
|
||||||
name: {{ include "postgres-operator.serviceAccountName" . }}
|
name: {{ include "postgres-operator.serviceAccountName" . }}
|
||||||
namespace: {{ .Release.Namespace }}
|
namespace: {{ .Release.Namespace }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|||||||
@@ -99,8 +99,9 @@ access rights.
|
|||||||
|
|
||||||
The manifest [`operator-service-account-rbac.yaml`](../manifests/operator-service-account-rbac.yaml)
|
The manifest [`operator-service-account-rbac.yaml`](../manifests/operator-service-account-rbac.yaml)
|
||||||
defines the service account, cluster roles and bindings needed for the operator
|
defines the service account, cluster roles and bindings needed for the operator
|
||||||
to function under access control restrictions. To deploy the operator with this
|
to function under access control restrictions. The file also includes a cluster
|
||||||
RBAC policy use:
|
role `postgres-pod` with privileges for Patroni to watch and manage pods and
|
||||||
|
endpoints. To deploy the operator with this RBAC policies use:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl create -f manifests/configmap.yaml
|
kubectl create -f manifests/configmap.yaml
|
||||||
@@ -109,13 +110,12 @@ kubectl create -f manifests/postgres-operator.yaml
|
|||||||
kubectl create -f manifests/minimal-postgres-manifest.yaml
|
kubectl create -f manifests/minimal-postgres-manifest.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
### Namespaced service account and roles
|
### Namespaced service account and role binding
|
||||||
|
|
||||||
For each namespace the operator watches it creates (or reads) a service account
|
For each namespace the operator watches it creates (or reads) a service account
|
||||||
to be used by the Postgres Pods when a new cluster is deployed. This service
|
and role binding to be used by the Postgres Pods. The service account is bound
|
||||||
account is bound to a ClusterRole via RoleBinding, which are also created (or
|
to the `postgres-pod` cluster role. The name and definitions of these resources
|
||||||
read) by the operator. The name and definitions of these resources can be
|
can be [configured](reference/operator_parameters.md#kubernetes-resources).
|
||||||
[configured](reference/operator_parameters.md#kubernetes-resources).
|
|
||||||
Note, that the operator performs **no** further syncing of namespaced service
|
Note, that the operator performs **no** further syncing of namespaced service
|
||||||
accounts and role bindings.
|
accounts and role bindings.
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,5 @@ roleRef:
|
|||||||
name: postgres-operator-ui
|
name: postgres-operator-ui
|
||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
# note: the cluster role binding needs to be defined
|
|
||||||
# for every namespace the operator-ui service account lives in.
|
|
||||||
name: postgres-operator-ui
|
name: postgres-operator-ui
|
||||||
namespace: default
|
namespace: default
|
||||||
|
|||||||
Reference in New Issue
Block a user