Add RBAC for autoregistration

- Also fix mistakes in the deployment.yaml
- Also hardcode the ownerRef kind and version because otherwise we get an error

Signed-off-by: Monis Khan <mok@vmware.com>
This commit is contained in:
Ryan Richard 2020-07-17 14:42:02 -07:00 committed by Monis Khan
parent 611859f04a
commit 260a271859
3 changed files with 79 additions and 21 deletions

View File

@ -9,6 +9,12 @@ metadata:
name: #@ data.values.namespace name: #@ data.values.namespace
--- ---
apiVersion: v1 apiVersion: v1
kind: ServiceAccount
metadata:
name: #@ data.values.app_name + "-service-account"
namespace: #@ data.values.namespace
---
apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: #@ data.values.app_name + "-config" name: #@ data.values.app_name + "-config"
@ -39,6 +45,7 @@ spec:
labels: labels:
app: #@ data.values.app_name app: #@ data.values.app_name
spec: spec:
serviceAccountName: #@ data.values.app_name + "-service-account"
containers: containers:
- name: placeholder-name - name: placeholder-name
#@ if data.values.image_digest: #@ if data.values.image_digest:
@ -49,18 +56,18 @@ spec:
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
command: command:
- ./app - ./app
args:
- --config=/etc/config/placeholder-config.yaml - --config=/etc/config/placeholder-config.yaml
- --downward-api-path=/etc/podinfo - --downward-api-path=/etc/podinfo
volumeMounts: volumeMounts:
- name: config-volume - name: config-volume
mountPath: /etc/config mountPath: /etc/config
- name: podinfo
mountPath: /etc/podinfo
volumes: volumes:
- name: config-volume - name: config-volume
configMap: configMap:
name: #@ data.values.app_name + "-config" name: #@ data.values.app_name + "-config"
- name: podinfo
mountPath: /etc/podinfo
volumes:
- name: podinfo - name: podinfo
downwardAPI: downwardAPI:
items: items:

51
deploy/rbac.yaml Normal file
View File

@ -0,0 +1,51 @@
#@ load("@ytt:data", "data")
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: #@ data.values.app_name + "-aggregated-api-server-cluster-role"
rules:
- apiGroups: [""]
resources: [namespaces]
verbs: [get, list, watch]
- apiGroups: [apiregistration.k8s.io]
resources: [apiservices]
verbs: [create, get, list, patch, update, watch]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: #@ data.values.app_name + "-aggregated-api-server-cluster-role-binding"
subjects:
- kind: ServiceAccount
name: #@ data.values.app_name + "-service-account"
namespace: #@ data.values.namespace
roleRef:
kind: ClusterRole
name: #@ data.values.app_name + "-aggregated-api-server-cluster-role"
apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: #@ data.values.app_name + "-aggregated-api-server-role"
namespace: #@ data.values.namespace
rules:
- apiGroups: [""]
resources: [services]
verbs: [create, get, list, patch, update, watch]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: #@ data.values.app_name + "-aggregated-api-server-role-binding"
namespace: #@ data.values.namespace
subjects:
- kind: ServiceAccount
name: #@ data.values.app_name + "-service-account"
namespace: #@ data.values.namespace
roleRef:
kind: Role
name: #@ data.values.app_name + "-aggregated-api-server-role"
apiGroup: rbac.authorization.k8s.io

View File

@ -64,8 +64,8 @@ func Setup(ctx context.Context, options SetupOptions) error {
Port: &svc.Spec.Ports[0].Port, Port: &svc.Spec.Ports[0].Port,
} }
apiSvc.ObjectMeta.OwnerReferences = []metav1.OwnerReference{{ apiSvc.ObjectMeta.OwnerReferences = []metav1.OwnerReference{{
APIVersion: ns.APIVersion, APIVersion: "v1", // TODO why did we need to hardcode this to avoid errors? was ns.APIVersion
Kind: ns.Kind, Kind: "Namespace", // TODO why did we need to hardcode this to avoid errors? was ns.Kind
UID: ns.UID, UID: ns.UID,
Name: ns.Name, Name: ns.Name,
}} }}