From 36758b65bf0da2f3fcc4ddedb5bea87fcef8a3fc Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Tue, 27 Jun 2023 21:39:12 +0200 Subject: [PATCH] OZG-3961 - serviceaccount update --- .../serviceaccount-keycloakclient-read.yaml | 53 +++++++++++++++++ .../serviceaccount-keycloakclient-write.yaml | 57 +++++++++++++++++++ .../serviceaccount-keycloakgroup-read.yaml | 53 +++++++++++++++++ .../serviceaccount-keycloakgroup-write.yaml | 57 +++++++++++++++++++ ...perator.ozgcloud.de_OzgKeycloakClient.yaml | 44 ++++++++++++++ ...operator.ozgcloud.de_OzgKeycloakGroup.yaml | 44 ++++++++++++++ .../realm/KeycloakRealmReconciler.java | 2 +- .../keycloak/user/OzgKeycloakUserSpec.java | 4 +- 8 files changed, 311 insertions(+), 3 deletions(-) create mode 100644 doc/ServiceAccount/serviceaccount-keycloakclient-read.yaml create mode 100644 doc/ServiceAccount/serviceaccount-keycloakclient-write.yaml create mode 100644 doc/ServiceAccount/serviceaccount-keycloakgroup-read.yaml create mode 100644 doc/ServiceAccount/serviceaccount-keycloakgroup-write.yaml create mode 100644 doc/crds/operator.ozgcloud.de_OzgKeycloakClient.yaml create mode 100644 doc/crds/operator.ozgcloud.de_OzgKeycloakGroup.yaml diff --git a/doc/ServiceAccount/serviceaccount-keycloakclient-read.yaml b/doc/ServiceAccount/serviceaccount-keycloakclient-read.yaml new file mode 100644 index 0000000..fdaada3 --- /dev/null +++ b/doc/ServiceAccount/serviceaccount-keycloakclient-read.yaml @@ -0,0 +1,53 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: ozg-operator-keycloakclient-viewer-role-binding +subjects: + - kind: ServiceAccount + name: ozg-operator-serviceaccount + namespace: by-torsten-ozg-operator-dev +roleRef: + kind: ClusterRole + name: ozg-operator-keycloakclient-viewer-role + apiGroup: rbac.authorization.k8s.io +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: ozg-operator-keycloakclient-viewer-role +rules: + - apiGroups: + - "*" + resources: + - ozgkeycloakclients + - ozgkeycloakclients/status + - ozgkeycloakclients/finalizers + verbs: + - get + - list + - watch diff --git a/doc/ServiceAccount/serviceaccount-keycloakclient-write.yaml b/doc/ServiceAccount/serviceaccount-keycloakclient-write.yaml new file mode 100644 index 0000000..f8bf6b1 --- /dev/null +++ b/doc/ServiceAccount/serviceaccount-keycloakclient-write.yaml @@ -0,0 +1,57 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: ozg-operator-keycloakclient-writer-role-binding +subjects: + - kind: ServiceAccount + name: ozg-operator-serviceaccount + namespace: by-torsten-ozg-operator-dev +roleRef: + kind: ClusterRole + name: ozg-operator-keycloakclient-writer-role + apiGroup: rbac.authorization.k8s.io +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: ozg-operator-keycloakclient-writer-role +rules: + - apiGroups: + - "*" + resources: + - ozgkeycloakclients/status + - ozgkeycloakclients/finalizers + - ozgkeycloakclients + verbs: + - get + - list + - create + - delete + - patch + - update + - watch diff --git a/doc/ServiceAccount/serviceaccount-keycloakgroup-read.yaml b/doc/ServiceAccount/serviceaccount-keycloakgroup-read.yaml new file mode 100644 index 0000000..b783031 --- /dev/null +++ b/doc/ServiceAccount/serviceaccount-keycloakgroup-read.yaml @@ -0,0 +1,53 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: ozg-operator-keycloakgroup-viewer-role-binding +subjects: + - kind: ServiceAccount + name: ozg-operator-serviceaccount + namespace: by-torsten-ozg-operator-dev +roleRef: + kind: ClusterRole + name: ozg-operator-keycloakgroup-viewer-role + apiGroup: rbac.authorization.k8s.io +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: ozg-operator-keycloakgroup-viewer-role +rules: + - apiGroups: + - "*" + resources: + - ozgkeycloakgroups + - ozgkeycloakgroups/status + - ozgkeycloakgroups/finalizers + verbs: + - get + - list + - watch diff --git a/doc/ServiceAccount/serviceaccount-keycloakgroup-write.yaml b/doc/ServiceAccount/serviceaccount-keycloakgroup-write.yaml new file mode 100644 index 0000000..4ec0488 --- /dev/null +++ b/doc/ServiceAccount/serviceaccount-keycloakgroup-write.yaml @@ -0,0 +1,57 @@ +# +# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: ozg-operator-keycloakgroup-writer-role-binding +subjects: + - kind: ServiceAccount + name: ozg-operator-serviceaccount + namespace: by-torsten-ozg-operator-dev +roleRef: + kind: ClusterRole + name: ozg-operator-keycloakgroup-writer-role + apiGroup: rbac.authorization.k8s.io +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: ozg-operator-keycloakgroup-writer-role +rules: + - apiGroups: + - "*" + resources: + - ozgkeycloakgroups/status + - ozgkeycloakgroups/finalizers + - ozgkeycloakgroups + verbs: + - get + - list + - create + - delete + - patch + - update + - watch diff --git a/doc/crds/operator.ozgcloud.de_OzgKeycloakClient.yaml b/doc/crds/operator.ozgcloud.de_OzgKeycloakClient.yaml new file mode 100644 index 0000000..52393be --- /dev/null +++ b/doc/crds/operator.ozgcloud.de_OzgKeycloakClient.yaml @@ -0,0 +1,44 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: ozgkeycloakclients.operator.ozgcloud.de +spec: + group: operator.ozgcloud.de + names: + kind: OzgKeycloakClient + listKind: OzgKeycloakClientList + plural: ozgkeycloakclients + singular: ozgkeycloakclient + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: OzgKeycloakClient is the Schema for the keycloaks API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec defines the desired state of Keycloak + type: object + x-kubernetes-preserve-unknown-fields: true + status: + description: Status defines the observed state of Keycloak + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + served: true + storage: true + subresources: + status: {} diff --git a/doc/crds/operator.ozgcloud.de_OzgKeycloakGroup.yaml b/doc/crds/operator.ozgcloud.de_OzgKeycloakGroup.yaml new file mode 100644 index 0000000..ee88ea0 --- /dev/null +++ b/doc/crds/operator.ozgcloud.de_OzgKeycloakGroup.yaml @@ -0,0 +1,44 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: ozgkeycloakgroups.operator.ozgcloud.de +spec: + group: operator.ozgcloud.de + names: + kind: OzgKeycloakGroup + listKind: OzgKeycloakGroupList + plural: ozgkeycloakgroups + singular: ozgkeycloakgroup + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + description: OzgKeycloakGroup is the Schema for the keycloaks API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec defines the desired state of Keycloak + type: object + x-kubernetes-preserve-unknown-fields: true + status: + description: Status defines the observed state of Keycloak + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + served: true + storage: true + subresources: + status: {} diff --git a/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java b/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java index a576eba..dc6f674 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/realm/KeycloakRealmReconciler.java @@ -29,7 +29,7 @@ public class KeycloakRealmReconciler implements Reconciler<OzgKeycloakRealm>, Cl String realmName = resource.getMetadata().getNamespace(); - log.info("Create KeycloakRealm " + realmName + " (crd name " + resource.getMetadata().getName() + ")"); + log.info("Reconcile KeycloakRealm " + realmName + " (crd name " + resource.getMetadata().getName() + ")"); service.createRealm(resource.getSpec(), realmName); diff --git a/src/main/java/de/ozgcloud/operator/keycloak/user/OzgKeycloakUserSpec.java b/src/main/java/de/ozgcloud/operator/keycloak/user/OzgKeycloakUserSpec.java index 84aff39..2cbc39f 100644 --- a/src/main/java/de/ozgcloud/operator/keycloak/user/OzgKeycloakUserSpec.java +++ b/src/main/java/de/ozgcloud/operator/keycloak/user/OzgKeycloakUserSpec.java @@ -87,10 +87,10 @@ class OzgKeycloakUserSpec { @AllArgsConstructor static class KeycloakUserSpecClientRole { - @JsonProperty("client_name") + @JsonProperty("name") private String clientName; - @JsonProperty("role_name") + @JsonProperty("role") private String roleName; } } -- GitLab