From 0d5c54d1720a498ed52b941a7ae74dba8d171c79 Mon Sep 17 00:00:00 2001 From: Ian Shen Date: Thu, 7 Jul 2022 11:05:18 +0800 Subject: [PATCH 1/6] SUBMARINE-1290. Add k8s labels to k8s resources in submarine-cloud-v3 --- go.mod | 3 +++ .../artifacts/submarine-database.yaml | 12 ++++++++++++ .../artifacts/submarine-minio.yaml | 12 ++++++++++++ .../artifacts/submarine-mlflow.yaml | 12 ++++++++++++ .../artifacts/submarine-observer-rbac.yaml | 8 ++++++++ .../artifacts/submarine-server-rbac.yaml | 16 ++++++++++++++++ .../artifacts/submarine-server.yaml | 15 +++++++++++++++ .../artifacts/submarine-storage-rbac.yaml | 12 ++++++++++++ .../artifacts/submarine-tensorboard.yaml | 12 ++++++++++++ .../artifacts/submarine-virtualservice.yaml | 4 ++++ 10 files changed, 106 insertions(+) create mode 100644 go.mod diff --git a/go.mod b/go.mod new file mode 100644 index 000000000..b1aab62e3 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module submarine + +go 1.18 diff --git a/submarine-cloud-v3/artifacts/submarine-database.yaml b/submarine-cloud-v3/artifacts/submarine-database.yaml index 9800a2d44..0d080cf15 100644 --- a/submarine-cloud-v3/artifacts/submarine-database.yaml +++ b/submarine-cloud-v3/artifacts/submarine-database.yaml @@ -20,6 +20,10 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: submarine-database-pvc + labels: + app.kubernetes.io/name: submarine-database + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: database spec: accessModes: - ReadWriteOnce @@ -32,6 +36,10 @@ apiVersion: v1 kind: Service metadata: name: "submarine-database" + labels: + app.kubernetes.io/name: submarine-database + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: database spec: ports: - name: "submarine-database" @@ -46,6 +54,10 @@ apiVersion: apps/v1 kind: StatefulSet metadata: name: "submarine-database" + labels: + app.kubernetes.io/name: submarine-database + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: database spec: serviceName: submarine-database replicas: 1 diff --git a/submarine-cloud-v3/artifacts/submarine-minio.yaml b/submarine-cloud-v3/artifacts/submarine-minio.yaml index 8cf624502..0f30cf3e5 100644 --- a/submarine-cloud-v3/artifacts/submarine-minio.yaml +++ b/submarine-cloud-v3/artifacts/submarine-minio.yaml @@ -20,6 +20,10 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: submarine-minio-pvc + labels: + app.kubernetes.io/name: submarine-minio + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: minio spec: accessModes: - ReadWriteOnce @@ -32,6 +36,10 @@ apiVersion: v1 kind: Service metadata: name: submarine-minio-service + labels: + app.kubernetes.io/name: submarine-minio + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: minio spec: type: ClusterIP selector: @@ -46,6 +54,10 @@ apiVersion: apps/v1 kind: Deployment metadata: name: submarine-minio + labels: + app.kubernetes.io/name: submarine-minio + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: minio spec: selector: matchLabels: diff --git a/submarine-cloud-v3/artifacts/submarine-mlflow.yaml b/submarine-cloud-v3/artifacts/submarine-mlflow.yaml index 71091016c..3758591a3 100644 --- a/submarine-cloud-v3/artifacts/submarine-mlflow.yaml +++ b/submarine-cloud-v3/artifacts/submarine-mlflow.yaml @@ -20,6 +20,10 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: submarine-mlflow-pvc + labels: + app.kubernetes.io/name: submarine-mlflow + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: mlflow spec: accessModes: - ReadWriteOnce @@ -32,6 +36,10 @@ apiVersion: v1 kind: Service metadata: name: submarine-mlflow-service + labels: + app.kubernetes.io/name: submarine-mlflow + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: mlflow spec: type: ClusterIP selector: @@ -46,6 +54,10 @@ apiVersion: apps/v1 kind: Deployment metadata: name: submarine-mlflow + labels: + app.kubernetes.io/name: submarine-mlflow + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: mlflow spec: selector: matchLabels: diff --git a/submarine-cloud-v3/artifacts/submarine-observer-rbac.yaml b/submarine-cloud-v3/artifacts/submarine-observer-rbac.yaml index 5779964ac..35a8d02f8 100644 --- a/submarine-cloud-v3/artifacts/submarine-observer-rbac.yaml +++ b/submarine-cloud-v3/artifacts/submarine-observer-rbac.yaml @@ -20,6 +20,10 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: "submarine-observer" + labels: + app.kubernetes.io/name: submarine-observer + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: observer rules: - apiGroups: - kubeflow.org @@ -54,6 +58,10 @@ kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: "submarine-observer" + labels: + app.kubernetes.io/name: submarine-observer + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: observer subjects: - kind: ServiceAccount name: "default" diff --git a/submarine-cloud-v3/artifacts/submarine-server-rbac.yaml b/submarine-cloud-v3/artifacts/submarine-server-rbac.yaml index 9e9b67e5d..1fa34828d 100644 --- a/submarine-cloud-v3/artifacts/submarine-server-rbac.yaml +++ b/submarine-cloud-v3/artifacts/submarine-server-rbac.yaml @@ -20,6 +20,10 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: "submarine-server" + labels: + app.kubernetes.io/name: submarine-server + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: server rules: - apiGroups: - kubeflow.org @@ -104,6 +108,10 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: "observer" + labels: + app.kubernetes.io/name: submarine-server + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: server rules: - apiGroups: - kubeflow.org @@ -125,6 +133,10 @@ kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: "submarine-server" + labels: + app.kubernetes.io/name: submarine-server + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: server subjects: - kind: ServiceAccount name: "submarine-server" @@ -137,6 +149,10 @@ kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: "observer" + labels: + app.kubernetes.io/name: submarine-server + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: server subjects: - kind: ServiceAccount name: "default" diff --git a/submarine-cloud-v3/artifacts/submarine-server.yaml b/submarine-cloud-v3/artifacts/submarine-server.yaml index 85d7b8b08..7c8603014 100644 --- a/submarine-cloud-v3/artifacts/submarine-server.yaml +++ b/submarine-cloud-v3/artifacts/submarine-server.yaml @@ -20,11 +20,19 @@ apiVersion: v1 kind: ServiceAccount metadata: name: "submarine-server" + labels: + app.kubernetes.io/name: submarine-server + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: server --- apiVersion: v1 kind: ServiceAccount metadata: name: "default" + labels: + app.kubernetes.io/name: submarine-server + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: server --- apiVersion: v1 kind: Service @@ -32,6 +40,9 @@ metadata: name: "submarine-server" labels: app: "submarine-server" + app.kubernetes.io/name: submarine-server + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: server spec: ports: - port: 8080 @@ -45,6 +56,10 @@ apiVersion: apps/v1 kind: Deployment metadata: name: "submarine-server" + labels: + app.kubernetes.io/name: submarine-server + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: server spec: selector: matchLabels: diff --git a/submarine-cloud-v3/artifacts/submarine-storage-rbac.yaml b/submarine-cloud-v3/artifacts/submarine-storage-rbac.yaml index 5fedc3879..3f448bbcc 100644 --- a/submarine-cloud-v3/artifacts/submarine-storage-rbac.yaml +++ b/submarine-cloud-v3/artifacts/submarine-storage-rbac.yaml @@ -20,17 +20,29 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: "submarine-storage" + labels: + app.kubernetes.io/name: submarine-storage + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: storage rules: [] --- apiVersion: v1 kind: ServiceAccount metadata: name: submarine-storage + labels: + app.kubernetes.io/name: submarine-storage + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: storage --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: "submarine-storage" + labels: + app.kubernetes.io/name: submarine-storage + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: storage subjects: - kind: ServiceAccount name: "submarine-storage" diff --git a/submarine-cloud-v3/artifacts/submarine-tensorboard.yaml b/submarine-cloud-v3/artifacts/submarine-tensorboard.yaml index b108f8bc1..c24cf915c 100644 --- a/submarine-cloud-v3/artifacts/submarine-tensorboard.yaml +++ b/submarine-cloud-v3/artifacts/submarine-tensorboard.yaml @@ -20,6 +20,10 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: submarine-tensorboard-pvc + labels: + app.kubernetes.io/name: submarine-tensorboard + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: tensorboard spec: accessModes: - ReadWriteOnce @@ -32,6 +36,10 @@ apiVersion: v1 kind: Service metadata: name: submarine-tensorboard-service + labels: + app.kubernetes.io/name: submarine-tensorboard + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: tensorboard spec: selector: app: submarine-tensorboard @@ -45,6 +53,10 @@ apiVersion: apps/v1 kind: Deployment metadata: name: submarine-tensorboard + labels: + app.kubernetes.io/name: submarine-tensorboard + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: tensorboard spec: selector: matchLabels: diff --git a/submarine-cloud-v3/artifacts/submarine-virtualservice.yaml b/submarine-cloud-v3/artifacts/submarine-virtualservice.yaml index 961ab006a..376a06f3b 100644 --- a/submarine-cloud-v3/artifacts/submarine-virtualservice.yaml +++ b/submarine-cloud-v3/artifacts/submarine-virtualservice.yaml @@ -20,6 +20,10 @@ apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: submarine-virtual-service + labels: + app.kubernetes.io/name: submarine-virtual-service + app.kubernetes.io/version: "0.8.0-SNAPSHOT" + app.kubernetes.io/component: virtual-service spec: hosts: - "*" From 1970c71b385a48cdd3e51fca812a6e760899189d Mon Sep 17 00:00:00 2001 From: Ian Shen Date: Thu, 7 Jul 2022 18:40:03 +0800 Subject: [PATCH 2/6] SUBMARINE-1290. Add k8s labels to k8s resources in submarine-cloud-v3 --- go.mod | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 go.mod diff --git a/go.mod b/go.mod deleted file mode 100644 index b1aab62e3..000000000 --- a/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module submarine - -go 1.18 From b269024cf0558af81319d3387755500c96a0e943 Mon Sep 17 00:00:00 2001 From: Ian Shen Date: Wed, 20 Jul 2022 13:28:01 -0700 Subject: [PATCH 3/6] Added appVersion const in submarine_controller Set objectMeta.Labels in all controller files --- .../bases/submarine.apache.org_submarines.yaml | 17 ----------------- submarine-cloud-v3/config/rbac/role.yaml | 17 ----------------- .../controllers/submarine_controller.go | 1 + .../controllers/submarine_database.go | 3 +++ .../controllers/submarine_minio.go | 3 +++ .../controllers/submarine_mlflow.go | 3 +++ .../controllers/submarine_observer_rbac.go | 2 ++ .../controllers/submarine_server.go | 3 +++ .../controllers/submarine_server_rbac.go | 2 ++ .../controllers/submarine_storage_rbac.go | 3 +++ .../controllers/submarine_tensorboard.go | 3 +++ .../controllers/submarine_virtualservice.go | 1 + 12 files changed, 24 insertions(+), 34 deletions(-) diff --git a/submarine-cloud-v3/config/crd/bases/submarine.apache.org_submarines.yaml b/submarine-cloud-v3/config/crd/bases/submarine.apache.org_submarines.yaml index 3db3c6b5a..8db47fbc0 100644 --- a/submarine-cloud-v3/config/crd/bases/submarine.apache.org_submarines.yaml +++ b/submarine-cloud-v3/config/crd/bases/submarine.apache.org_submarines.yaml @@ -1,20 +1,3 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition diff --git a/submarine-cloud-v3/config/rbac/role.yaml b/submarine-cloud-v3/config/rbac/role.yaml index 7384f94b4..76d56ef3e 100644 --- a/submarine-cloud-v3/config/rbac/role.yaml +++ b/submarine-cloud-v3/config/rbac/role.yaml @@ -1,20 +1,3 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole diff --git a/submarine-cloud-v3/controllers/submarine_controller.go b/submarine-cloud-v3/controllers/submarine_controller.go index fa334c8f6..7ee71b26e 100644 --- a/submarine-cloud-v3/controllers/submarine_controller.go +++ b/submarine-cloud-v3/controllers/submarine_controller.go @@ -65,6 +65,7 @@ const ( observerRbacYamlPath = artifactPath + "submarine-observer-rbac.yaml" storageRbacYamlPath = artifactPath + "submarine-storage-rbac.yaml" virtualServiceYamlPath = artifactPath + "submarine-virtualservice.yaml" + appVersion = "0.8.0-SNAPSHOT" ) // Name of deployments whose replica count and readiness need to be checked diff --git a/submarine-cloud-v3/controllers/submarine_database.go b/submarine-cloud-v3/controllers/submarine_database.go index 91e48aa8a..7b2189a60 100644 --- a/submarine-cloud-v3/controllers/submarine_database.go +++ b/submarine-cloud-v3/controllers/submarine_database.go @@ -38,6 +38,7 @@ func (r *SubmarineReconciler) newSubmarineDatabasePersistentVolumeClaim(ctx cont r.Log.Error(err, "ParsePersistentVolumeClaimYaml") } pvc.Namespace = submarine.Namespace + pvc.Labels = map[string]string{"app.kubernetes.io/name": databasePvcName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "database"} err = controllerutil.SetControllerReference(submarine, pvc, r.Scheme) if err != nil { r.Log.Error(err, "Set PVC ControllerReference") @@ -52,6 +53,7 @@ func (r *SubmarineReconciler) newSubmarineDatabaseStatefulSet(ctx context.Contex } statefulset.Namespace = submarine.Namespace + statefulset.Labels = map[string]string{"app.kubernetes.io/name": databaseName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "database"} err = controllerutil.SetControllerReference(submarine, statefulset, r.Scheme) if err != nil { r.Log.Error(err, "Set Stateful Set ControllerReference") @@ -71,6 +73,7 @@ func (r *SubmarineReconciler) newSubmarineDatabaseService(ctx context.Context, s r.Log.Error(err, "ParseServiceYaml") } service.Namespace = submarine.Namespace + service.Labels = map[string]string{"app.kubernetes.io/name": databaseName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "database"} err = controllerutil.SetControllerReference(submarine, service, r.Scheme) if err != nil { r.Log.Error(err, "Set Service ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_minio.go b/submarine-cloud-v3/controllers/submarine_minio.go index b5d5e8d61..1e9ac8e9d 100644 --- a/submarine-cloud-v3/controllers/submarine_minio.go +++ b/submarine-cloud-v3/controllers/submarine_minio.go @@ -38,6 +38,7 @@ func (r *SubmarineReconciler) newSubmarineMinioPersistentVolumeClaim(ctx context r.Log.Error(err, "ParsePersistentVolumeClaimYaml") } pvc.Namespace = submarine.Namespace + pvc.Labels = map[string]string{"app.kubernetes.io/name": minioPvcName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "minio"} err = controllerutil.SetControllerReference(submarine, pvc, r.Scheme) if err != nil { r.Log.Error(err, "Set PersistentVolumeClaim ControllerReference") @@ -51,6 +52,7 @@ func (r *SubmarineReconciler) newSubmarineMinioDeployment(ctx context.Context, s r.Log.Error(err, "ParseDeploymentYaml") } deployment.Namespace = submarine.Namespace + deployment.Labels = map[string]string{"app.kubernetes.io/name": minioName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "minio"} err = controllerutil.SetControllerReference(submarine, deployment, r.Scheme) if err != nil { r.Log.Error(err, "Set Deployment ControllerReference") @@ -64,6 +66,7 @@ func (r *SubmarineReconciler) newSubmarineMinioService(ctx context.Context, subm r.Log.Error(err, "ParseServiceYaml") } service.Namespace = submarine.Namespace + service.Labels = map[string]string{"app.kubernetes.io/name": minioServiceName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "minio"} err = controllerutil.SetControllerReference(submarine, service, r.Scheme) if err != nil { r.Log.Error(err, "Set Service ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_mlflow.go b/submarine-cloud-v3/controllers/submarine_mlflow.go index 5a3457766..c1d3d2986 100644 --- a/submarine-cloud-v3/controllers/submarine_mlflow.go +++ b/submarine-cloud-v3/controllers/submarine_mlflow.go @@ -38,6 +38,7 @@ func (r *SubmarineReconciler) newSubmarineMlflowPersistentVolumeClaim(ctx contex r.Log.Error(err, "ParsePersistentVolumeClaimYaml") } pvc.Namespace = submarine.Namespace + pvc.Labels = map[string]string{"app.kubernetes.io/name": mlflowPvcName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "mlflow"} err = controllerutil.SetControllerReference(submarine, pvc, r.Scheme) if err != nil { r.Log.Error(err, "Set PersistentVolumeClaim ControllerReference") @@ -51,6 +52,7 @@ func (r *SubmarineReconciler) newSubmarineMlflowDeployment(ctx context.Context, r.Log.Error(err, "ParseDeploymentYaml") } deployment.Namespace = submarine.Namespace + deployment.Labels = map[string]string{"app.kubernetes.io/name": mlflowName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "mlflow"} err = controllerutil.SetControllerReference(submarine, deployment, r.Scheme) if err != nil { r.Log.Error(err, "Set Deployment ControllerReference") @@ -64,6 +66,7 @@ func (r *SubmarineReconciler) newSubmarineMlflowService(ctx context.Context, sub r.Log.Error(err, "ParseServiceYaml") } service.Namespace = submarine.Namespace + service.Labels = map[string]string{"app.kubernetes.io/name": mlflowServiceName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "mlflow"} err = controllerutil.SetControllerReference(submarine, service, r.Scheme) if err != nil { r.Log.Error(err, "Set Service ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_observer_rbac.go b/submarine-cloud-v3/controllers/submarine_observer_rbac.go index b1126b7b5..47298ecb0 100644 --- a/submarine-cloud-v3/controllers/submarine_observer_rbac.go +++ b/submarine-cloud-v3/controllers/submarine_observer_rbac.go @@ -38,6 +38,7 @@ func (r *SubmarineReconciler) newSubmarineObserverRole(ctx context.Context, subm r.Log.Error(err, "ParseRoleYaml") } role.Namespace = submarine.Namespace + role.Labels = map[string]string{"app.kubernetes.io/name": observerName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "observer"} err = controllerutil.SetControllerReference(submarine, role, r.Scheme) if err != nil { r.Log.Error(err, "Set Role ControllerReference") @@ -51,6 +52,7 @@ func (r *SubmarineReconciler) newSubmarineObserverRoleBinding(ctx context.Contex r.Log.Error(err, "Set RoleBinding ControllerReference") } roleBinding.Namespace = submarine.Namespace + roleBinding.Labels = map[string]string{"app.kubernetes.io/name": observerName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "observer"} err = controllerutil.SetControllerReference(submarine, roleBinding, r.Scheme) if err != nil { r.Log.Error(err, "Set RoleBinding ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_server.go b/submarine-cloud-v3/controllers/submarine_server.go index f02e13ec6..92d9d3110 100644 --- a/submarine-cloud-v3/controllers/submarine_server.go +++ b/submarine-cloud-v3/controllers/submarine_server.go @@ -38,6 +38,7 @@ func (r *SubmarineReconciler) newSubmarineServerServiceAccount(ctx context.Conte r.Log.Error(err, "ParseServiceAccountYaml") } serviceAccount.Namespace = submarine.Namespace + serviceAccount.Labels = map[string]string{"app.kubernetes.io/name": serverName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "server"} err = controllerutil.SetControllerReference(submarine, serviceAccount, r.Scheme) if err != nil { r.Log.Error(err, "Set ServiceAccount ControllerReference") @@ -51,6 +52,7 @@ func (r *SubmarineReconciler) newSubmarineServerService(ctx context.Context, sub r.Log.Error(err, "ParseServiceYaml") } service.Namespace = submarine.Namespace + service.Labels = map[string]string{"app.kubernetes.io/name": serverName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "server"} err = controllerutil.SetControllerReference(submarine, service, r.Scheme) if err != nil { r.Log.Error(err, "Set Service ControllerReference") @@ -92,6 +94,7 @@ func (r *SubmarineReconciler) newSubmarineServerDeployment(ctx context.Context, r.Log.Error(err, "ParseDeploymentYaml") } deployment.Namespace = submarine.Namespace + deployment.Labels = map[string]string{"app.kubernetes.io/name": serverName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "server"} err = controllerutil.SetControllerReference(submarine, deployment, r.Scheme) if err != nil { r.Log.Error(err, "Set Deployment ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_server_rbac.go b/submarine-cloud-v3/controllers/submarine_server_rbac.go index 653361210..8cee12467 100644 --- a/submarine-cloud-v3/controllers/submarine_server_rbac.go +++ b/submarine-cloud-v3/controllers/submarine_server_rbac.go @@ -38,6 +38,7 @@ func (r *SubmarineReconciler) newSubmarineServerRole(ctx context.Context, submar r.Log.Error(err, "ParseRoleYaml") } role.Namespace = submarine.Namespace + role.Labels = map[string]string{"app.kubernetes.io/name": serverName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "server"} err = controllerutil.SetControllerReference(submarine, role, r.Scheme) if err != nil { r.Log.Error(err, "Set Role ControllerReference") @@ -61,6 +62,7 @@ func (r *SubmarineReconciler) newSubmarineServerRoleBinding(ctx context.Context, r.Log.Error(err, "Set RoleBinding ControllerReference") } roleBinding.Namespace = submarine.Namespace + roleBinding.Labels = map[string]string{"app.kubernetes.io/name": serverName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "server"} err = controllerutil.SetControllerReference(submarine, roleBinding, r.Scheme) if err != nil { r.Log.Error(err, "Set RoleBinding ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_storage_rbac.go b/submarine-cloud-v3/controllers/submarine_storage_rbac.go index 7a6d2234b..0b9bb1ee4 100644 --- a/submarine-cloud-v3/controllers/submarine_storage_rbac.go +++ b/submarine-cloud-v3/controllers/submarine_storage_rbac.go @@ -38,6 +38,7 @@ func (r *SubmarineReconciler) newSubmarineStorageRole(ctx context.Context, subma r.Log.Error(err, "ParseRoleYaml") } role.Namespace = submarine.Namespace + role.Labels = map[string]string{"app.kubernetes.io/name": storageName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "storage"} err = controllerutil.SetControllerReference(submarine, role, r.Scheme) if err != nil { r.Log.Error(err, "Set Role ControllerReference") @@ -59,6 +60,7 @@ func (r *SubmarineReconciler) newSubmarineStorageRoleBinding(ctx context.Context r.Log.Error(err, "Set RoleBinding ControllerReference") } roleBinding.Namespace = submarine.Namespace + roleBinding.Labels = map[string]string{"app.kubernetes.io/name": storageName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "storage"} err = controllerutil.SetControllerReference(submarine, roleBinding, r.Scheme) if err != nil { r.Log.Error(err, "Set RoleBinding ControllerReference") @@ -72,6 +74,7 @@ func (r *SubmarineReconciler) newSubmarineStorageServiceAccount(ctx context.Cont r.Log.Error(err, "ParseServiceAccountYaml") } serviceAccount.Namespace = submarine.Namespace + serviceAccount.Labels = map[string]string{"app.kubernetes.io/name": storageName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "storage"} err = controllerutil.SetControllerReference(submarine, serviceAccount, r.Scheme) if err != nil { r.Log.Error(err, "Set ServiceAccount ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_tensorboard.go b/submarine-cloud-v3/controllers/submarine_tensorboard.go index 898740fd5..6fc866491 100644 --- a/submarine-cloud-v3/controllers/submarine_tensorboard.go +++ b/submarine-cloud-v3/controllers/submarine_tensorboard.go @@ -38,6 +38,7 @@ func (r *SubmarineReconciler) newSubmarineTensorboardPersistentVolumeClaim(ctx c r.Log.Error(err, "ParsePersistentVolumeClaimYaml") } pvc.Namespace = submarine.Namespace + pvc.Labels = map[string]string{"app.kubernetes.io/name": tensorboardPvcName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "tensorboard"} err = controllerutil.SetControllerReference(submarine, pvc, r.Scheme) if err != nil { r.Log.Error(err, "Set PersistentVolumeClaim ControllerReference") @@ -51,6 +52,7 @@ func (r *SubmarineReconciler) newSubmarineTensorboardDeployment(ctx context.Cont r.Log.Error(err, "ParseDeploymentYaml") } deployment.Namespace = submarine.Namespace + deployment.Labels = map[string]string{"app.kubernetes.io/name": tensorboardName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "tensorboard"} err = controllerutil.SetControllerReference(submarine, deployment, r.Scheme) if err != nil { r.Log.Error(err, "Set Deployment ControllerReference") @@ -64,6 +66,7 @@ func (r *SubmarineReconciler) newSubmarineTensorboardService(ctx context.Context r.Log.Error(err, "ParseServiceYaml") } service.Namespace = submarine.Namespace + service.Labels = map[string]string{"app.kubernetes.io/name": tensorboardServiceName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "tensorboard"} err = controllerutil.SetControllerReference(submarine, service, r.Scheme) if err != nil { r.Log.Error(err, "Set Service ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_virtualservice.go b/submarine-cloud-v3/controllers/submarine_virtualservice.go index 2158817e9..97a4f5d40 100644 --- a/submarine-cloud-v3/controllers/submarine_virtualservice.go +++ b/submarine-cloud-v3/controllers/submarine_virtualservice.go @@ -39,6 +39,7 @@ func (r *SubmarineReconciler) newSubmarineVirtualService(ctx context.Context, su r.Log.Error(err, "ParseVirtualService") } virtualService.Namespace = submarine.Namespace + virtualService.Labels = map[string]string{"app.kubernetes.io/name": virtualServiceName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "virtual-service"} err = controllerutil.SetControllerReference(submarine, virtualService, r.Scheme) if err != nil { r.Log.Error(err, "Set VirtualService ControllerReference") From a005a9cd37cf06c38236a54b7a56b83876a116b2 Mon Sep 17 00:00:00 2001 From: Ian Shen Date: Thu, 21 Jul 2022 07:21:46 -0700 Subject: [PATCH 4/6] Took out changes to yaml from old commit --- .../artifacts/submarine-database.yaml | 12 ------------ .../artifacts/submarine-minio.yaml | 12 ------------ .../artifacts/submarine-mlflow.yaml | 12 ------------ .../artifacts/submarine-observer-rbac.yaml | 8 -------- .../artifacts/submarine-server-rbac.yaml | 16 ---------------- .../artifacts/submarine-server.yaml | 15 --------------- .../artifacts/submarine-storage-rbac.yaml | 12 ------------ .../artifacts/submarine-tensorboard.yaml | 12 ------------ .../artifacts/submarine-virtualservice.yaml | 4 ---- 9 files changed, 103 deletions(-) diff --git a/submarine-cloud-v3/artifacts/submarine-database.yaml b/submarine-cloud-v3/artifacts/submarine-database.yaml index 0d080cf15..9800a2d44 100644 --- a/submarine-cloud-v3/artifacts/submarine-database.yaml +++ b/submarine-cloud-v3/artifacts/submarine-database.yaml @@ -20,10 +20,6 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: submarine-database-pvc - labels: - app.kubernetes.io/name: submarine-database - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: database spec: accessModes: - ReadWriteOnce @@ -36,10 +32,6 @@ apiVersion: v1 kind: Service metadata: name: "submarine-database" - labels: - app.kubernetes.io/name: submarine-database - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: database spec: ports: - name: "submarine-database" @@ -54,10 +46,6 @@ apiVersion: apps/v1 kind: StatefulSet metadata: name: "submarine-database" - labels: - app.kubernetes.io/name: submarine-database - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: database spec: serviceName: submarine-database replicas: 1 diff --git a/submarine-cloud-v3/artifacts/submarine-minio.yaml b/submarine-cloud-v3/artifacts/submarine-minio.yaml index 0f30cf3e5..8cf624502 100644 --- a/submarine-cloud-v3/artifacts/submarine-minio.yaml +++ b/submarine-cloud-v3/artifacts/submarine-minio.yaml @@ -20,10 +20,6 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: submarine-minio-pvc - labels: - app.kubernetes.io/name: submarine-minio - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: minio spec: accessModes: - ReadWriteOnce @@ -36,10 +32,6 @@ apiVersion: v1 kind: Service metadata: name: submarine-minio-service - labels: - app.kubernetes.io/name: submarine-minio - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: minio spec: type: ClusterIP selector: @@ -54,10 +46,6 @@ apiVersion: apps/v1 kind: Deployment metadata: name: submarine-minio - labels: - app.kubernetes.io/name: submarine-minio - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: minio spec: selector: matchLabels: diff --git a/submarine-cloud-v3/artifacts/submarine-mlflow.yaml b/submarine-cloud-v3/artifacts/submarine-mlflow.yaml index 3758591a3..71091016c 100644 --- a/submarine-cloud-v3/artifacts/submarine-mlflow.yaml +++ b/submarine-cloud-v3/artifacts/submarine-mlflow.yaml @@ -20,10 +20,6 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: submarine-mlflow-pvc - labels: - app.kubernetes.io/name: submarine-mlflow - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: mlflow spec: accessModes: - ReadWriteOnce @@ -36,10 +32,6 @@ apiVersion: v1 kind: Service metadata: name: submarine-mlflow-service - labels: - app.kubernetes.io/name: submarine-mlflow - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: mlflow spec: type: ClusterIP selector: @@ -54,10 +46,6 @@ apiVersion: apps/v1 kind: Deployment metadata: name: submarine-mlflow - labels: - app.kubernetes.io/name: submarine-mlflow - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: mlflow spec: selector: matchLabels: diff --git a/submarine-cloud-v3/artifacts/submarine-observer-rbac.yaml b/submarine-cloud-v3/artifacts/submarine-observer-rbac.yaml index 35a8d02f8..5779964ac 100644 --- a/submarine-cloud-v3/artifacts/submarine-observer-rbac.yaml +++ b/submarine-cloud-v3/artifacts/submarine-observer-rbac.yaml @@ -20,10 +20,6 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: "submarine-observer" - labels: - app.kubernetes.io/name: submarine-observer - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: observer rules: - apiGroups: - kubeflow.org @@ -58,10 +54,6 @@ kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: "submarine-observer" - labels: - app.kubernetes.io/name: submarine-observer - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: observer subjects: - kind: ServiceAccount name: "default" diff --git a/submarine-cloud-v3/artifacts/submarine-server-rbac.yaml b/submarine-cloud-v3/artifacts/submarine-server-rbac.yaml index 1fa34828d..9e9b67e5d 100644 --- a/submarine-cloud-v3/artifacts/submarine-server-rbac.yaml +++ b/submarine-cloud-v3/artifacts/submarine-server-rbac.yaml @@ -20,10 +20,6 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: "submarine-server" - labels: - app.kubernetes.io/name: submarine-server - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: server rules: - apiGroups: - kubeflow.org @@ -108,10 +104,6 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: "observer" - labels: - app.kubernetes.io/name: submarine-server - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: server rules: - apiGroups: - kubeflow.org @@ -133,10 +125,6 @@ kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: "submarine-server" - labels: - app.kubernetes.io/name: submarine-server - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: server subjects: - kind: ServiceAccount name: "submarine-server" @@ -149,10 +137,6 @@ kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: "observer" - labels: - app.kubernetes.io/name: submarine-server - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: server subjects: - kind: ServiceAccount name: "default" diff --git a/submarine-cloud-v3/artifacts/submarine-server.yaml b/submarine-cloud-v3/artifacts/submarine-server.yaml index 7c8603014..85d7b8b08 100644 --- a/submarine-cloud-v3/artifacts/submarine-server.yaml +++ b/submarine-cloud-v3/artifacts/submarine-server.yaml @@ -20,19 +20,11 @@ apiVersion: v1 kind: ServiceAccount metadata: name: "submarine-server" - labels: - app.kubernetes.io/name: submarine-server - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: server --- apiVersion: v1 kind: ServiceAccount metadata: name: "default" - labels: - app.kubernetes.io/name: submarine-server - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: server --- apiVersion: v1 kind: Service @@ -40,9 +32,6 @@ metadata: name: "submarine-server" labels: app: "submarine-server" - app.kubernetes.io/name: submarine-server - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: server spec: ports: - port: 8080 @@ -56,10 +45,6 @@ apiVersion: apps/v1 kind: Deployment metadata: name: "submarine-server" - labels: - app.kubernetes.io/name: submarine-server - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: server spec: selector: matchLabels: diff --git a/submarine-cloud-v3/artifacts/submarine-storage-rbac.yaml b/submarine-cloud-v3/artifacts/submarine-storage-rbac.yaml index 3f448bbcc..5fedc3879 100644 --- a/submarine-cloud-v3/artifacts/submarine-storage-rbac.yaml +++ b/submarine-cloud-v3/artifacts/submarine-storage-rbac.yaml @@ -20,29 +20,17 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: "submarine-storage" - labels: - app.kubernetes.io/name: submarine-storage - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: storage rules: [] --- apiVersion: v1 kind: ServiceAccount metadata: name: submarine-storage - labels: - app.kubernetes.io/name: submarine-storage - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: storage --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: "submarine-storage" - labels: - app.kubernetes.io/name: submarine-storage - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: storage subjects: - kind: ServiceAccount name: "submarine-storage" diff --git a/submarine-cloud-v3/artifacts/submarine-tensorboard.yaml b/submarine-cloud-v3/artifacts/submarine-tensorboard.yaml index c24cf915c..b108f8bc1 100644 --- a/submarine-cloud-v3/artifacts/submarine-tensorboard.yaml +++ b/submarine-cloud-v3/artifacts/submarine-tensorboard.yaml @@ -20,10 +20,6 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: submarine-tensorboard-pvc - labels: - app.kubernetes.io/name: submarine-tensorboard - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: tensorboard spec: accessModes: - ReadWriteOnce @@ -36,10 +32,6 @@ apiVersion: v1 kind: Service metadata: name: submarine-tensorboard-service - labels: - app.kubernetes.io/name: submarine-tensorboard - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: tensorboard spec: selector: app: submarine-tensorboard @@ -53,10 +45,6 @@ apiVersion: apps/v1 kind: Deployment metadata: name: submarine-tensorboard - labels: - app.kubernetes.io/name: submarine-tensorboard - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: tensorboard spec: selector: matchLabels: diff --git a/submarine-cloud-v3/artifacts/submarine-virtualservice.yaml b/submarine-cloud-v3/artifacts/submarine-virtualservice.yaml index 376a06f3b..961ab006a 100644 --- a/submarine-cloud-v3/artifacts/submarine-virtualservice.yaml +++ b/submarine-cloud-v3/artifacts/submarine-virtualservice.yaml @@ -20,10 +20,6 @@ apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: submarine-virtual-service - labels: - app.kubernetes.io/name: submarine-virtual-service - app.kubernetes.io/version: "0.8.0-SNAPSHOT" - app.kubernetes.io/component: virtual-service spec: hosts: - "*" From e0c7588e8b980684e507eedb7ede5641e196042c Mon Sep 17 00:00:00 2001 From: Ian Shen Date: Tue, 2 Aug 2022 12:05:44 -0700 Subject: [PATCH 5/6] Set pod labels through spec.template.labels of deployments and statefulsets --- .../controllers/submarine_database.go | 35 +++++++++++++++++-- .../controllers/submarine_minio.go | 35 +++++++++++++++++-- .../controllers/submarine_mlflow.go | 35 +++++++++++++++++-- .../controllers/submarine_server.go | 35 +++++++++++++++++-- .../controllers/submarine_tensorboard.go | 35 +++++++++++++++++-- 5 files changed, 160 insertions(+), 15 deletions(-) diff --git a/submarine-cloud-v3/controllers/submarine_database.go b/submarine-cloud-v3/controllers/submarine_database.go index 7b2189a60..f31f42bd4 100644 --- a/submarine-cloud-v3/controllers/submarine_database.go +++ b/submarine-cloud-v3/controllers/submarine_database.go @@ -32,13 +32,22 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" ) +var databaseAdditionalLabels = map[string]string{"app.kubernetes.io/name": databaseName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "database"} + func (r *SubmarineReconciler) newSubmarineDatabasePersistentVolumeClaim(ctx context.Context, submarine *submarineapacheorgv1alpha1.Submarine) *corev1.PersistentVolumeClaim { pvc, err := ParsePersistentVolumeClaimYaml(databaseYamlPath) if err != nil { r.Log.Error(err, "ParsePersistentVolumeClaimYaml") } pvc.Namespace = submarine.Namespace - pvc.Labels = map[string]string{"app.kubernetes.io/name": databasePvcName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "database"} + pvcLabels := pvc.GetLabels() + if pvcLabels == nil { + pvc.SetLabels(make(map[string]string)) + pvcLabels = pvc.GetLabels() + } + for k, v := range databaseAdditionalLabels { + pvcLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, pvc, r.Scheme) if err != nil { r.Log.Error(err, "Set PVC ControllerReference") @@ -53,7 +62,20 @@ func (r *SubmarineReconciler) newSubmarineDatabaseStatefulSet(ctx context.Contex } statefulset.Namespace = submarine.Namespace - statefulset.Labels = map[string]string{"app.kubernetes.io/name": databaseName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "database"} + statefulsetLabels := statefulset.GetLabels() + if statefulsetLabels == nil { + statefulset.SetLabels(make(map[string]string)) + statefulsetLabels = statefulset.GetLabels() + } + podLabels := statefulset.Spec.Template.GetLabels() + if podLabels == nil { + statefulset.Spec.Template.SetLabels(make(map[string]string)) + podLabels = statefulset.Spec.Template.GetLabels() + } + for k, v := range databaseAdditionalLabels { + statefulsetLabels[k] = v + podLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, statefulset, r.Scheme) if err != nil { r.Log.Error(err, "Set Stateful Set ControllerReference") @@ -73,7 +95,14 @@ func (r *SubmarineReconciler) newSubmarineDatabaseService(ctx context.Context, s r.Log.Error(err, "ParseServiceYaml") } service.Namespace = submarine.Namespace - service.Labels = map[string]string{"app.kubernetes.io/name": databaseName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "database"} + serviceLabels := service.GetLabels() + if serviceLabels == nil { + service.SetLabels(make(map[string]string)) + serviceLabels = service.GetLabels() + } + for k, v := range databaseAdditionalLabels { + serviceLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, service, r.Scheme) if err != nil { r.Log.Error(err, "Set Service ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_minio.go b/submarine-cloud-v3/controllers/submarine_minio.go index 1e9ac8e9d..bebfb5fa9 100644 --- a/submarine-cloud-v3/controllers/submarine_minio.go +++ b/submarine-cloud-v3/controllers/submarine_minio.go @@ -32,13 +32,22 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" ) +var minioAdditionalLabels = map[string]string{"app.kubernetes.io/name": minioName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "minio"} + func (r *SubmarineReconciler) newSubmarineMinioPersistentVolumeClaim(ctx context.Context, submarine *submarineapacheorgv1alpha1.Submarine) *corev1.PersistentVolumeClaim { pvc, err := ParsePersistentVolumeClaimYaml(minioYamlPath) if err != nil { r.Log.Error(err, "ParsePersistentVolumeClaimYaml") } pvc.Namespace = submarine.Namespace - pvc.Labels = map[string]string{"app.kubernetes.io/name": minioPvcName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "minio"} + pvcLabels := pvc.GetLabels() + if pvcLabels == nil { + pvc.SetLabels(make(map[string]string)) + pvcLabels = pvc.GetLabels() + } + for k, v := range minioAdditionalLabels { + pvcLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, pvc, r.Scheme) if err != nil { r.Log.Error(err, "Set PersistentVolumeClaim ControllerReference") @@ -52,7 +61,20 @@ func (r *SubmarineReconciler) newSubmarineMinioDeployment(ctx context.Context, s r.Log.Error(err, "ParseDeploymentYaml") } deployment.Namespace = submarine.Namespace - deployment.Labels = map[string]string{"app.kubernetes.io/name": minioName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "minio"} + deploymentLabels := deployment.GetLabels() + if deploymentLabels == nil { + deployment.SetLabels(make(map[string]string)) + deploymentLabels = deployment.GetLabels() + } + podLabels := deployment.Spec.Template.GetLabels() + if podLabels == nil { + deployment.Spec.Template.SetLabels(make(map[string]string)) + podLabels = deployment.Spec.Template.GetLabels() + } + for k, v := range minioAdditionalLabels { + deploymentLabels[k] = v + podLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, deployment, r.Scheme) if err != nil { r.Log.Error(err, "Set Deployment ControllerReference") @@ -66,7 +88,14 @@ func (r *SubmarineReconciler) newSubmarineMinioService(ctx context.Context, subm r.Log.Error(err, "ParseServiceYaml") } service.Namespace = submarine.Namespace - service.Labels = map[string]string{"app.kubernetes.io/name": minioServiceName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "minio"} + serviceLabels := service.GetLabels() + if serviceLabels == nil { + service.SetLabels(make(map[string]string)) + serviceLabels = service.GetLabels() + } + for k, v := range minioAdditionalLabels { + serviceLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, service, r.Scheme) if err != nil { r.Log.Error(err, "Set Service ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_mlflow.go b/submarine-cloud-v3/controllers/submarine_mlflow.go index c1d3d2986..1214f3d2a 100644 --- a/submarine-cloud-v3/controllers/submarine_mlflow.go +++ b/submarine-cloud-v3/controllers/submarine_mlflow.go @@ -32,13 +32,22 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" ) +var mlflowAdditionalLabels = map[string]string{"app.kubernetes.io/name": mlflowName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "mlflow"} + func (r *SubmarineReconciler) newSubmarineMlflowPersistentVolumeClaim(ctx context.Context, submarine *submarineapacheorgv1alpha1.Submarine) *corev1.PersistentVolumeClaim { pvc, err := ParsePersistentVolumeClaimYaml(mlflowYamlPath) if err != nil { r.Log.Error(err, "ParsePersistentVolumeClaimYaml") } pvc.Namespace = submarine.Namespace - pvc.Labels = map[string]string{"app.kubernetes.io/name": mlflowPvcName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "mlflow"} + pvcLabels := pvc.GetLabels() + if pvcLabels == nil { + pvc.SetLabels(make(map[string]string)) + pvcLabels = pvc.GetLabels() + } + for k, v := range mlflowAdditionalLabels { + pvcLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, pvc, r.Scheme) if err != nil { r.Log.Error(err, "Set PersistentVolumeClaim ControllerReference") @@ -52,7 +61,20 @@ func (r *SubmarineReconciler) newSubmarineMlflowDeployment(ctx context.Context, r.Log.Error(err, "ParseDeploymentYaml") } deployment.Namespace = submarine.Namespace - deployment.Labels = map[string]string{"app.kubernetes.io/name": mlflowName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "mlflow"} + deploymentLabels := deployment.GetLabels() + if deploymentLabels == nil { + deployment.SetLabels(make(map[string]string)) + deploymentLabels = deployment.GetLabels() + } + podLabels := deployment.Spec.Template.GetLabels() + if podLabels == nil { + deployment.Spec.Template.SetLabels(make(map[string]string)) + podLabels = deployment.Spec.Template.GetLabels() + } + for k, v := range mlflowAdditionalLabels { + deploymentLabels[k] = v + podLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, deployment, r.Scheme) if err != nil { r.Log.Error(err, "Set Deployment ControllerReference") @@ -66,7 +88,14 @@ func (r *SubmarineReconciler) newSubmarineMlflowService(ctx context.Context, sub r.Log.Error(err, "ParseServiceYaml") } service.Namespace = submarine.Namespace - service.Labels = map[string]string{"app.kubernetes.io/name": mlflowServiceName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "mlflow"} + serviceLabels := service.GetLabels() + if serviceLabels == nil { + service.SetLabels(make(map[string]string)) + serviceLabels = service.GetLabels() + } + for k, v := range mlflowAdditionalLabels { + serviceLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, service, r.Scheme) if err != nil { r.Log.Error(err, "Set Service ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_server.go b/submarine-cloud-v3/controllers/submarine_server.go index 92d9d3110..69eced46e 100644 --- a/submarine-cloud-v3/controllers/submarine_server.go +++ b/submarine-cloud-v3/controllers/submarine_server.go @@ -32,13 +32,22 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" ) +var serverAdditionalLabels = map[string]string{"app.kubernetes.io/name": serverName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "server"} + func (r *SubmarineReconciler) newSubmarineServerServiceAccount(ctx context.Context, submarine *submarineapacheorgv1alpha1.Submarine) *corev1.ServiceAccount { serviceAccount, err := ParseServiceAccountYaml(serverYamlPath) if err != nil { r.Log.Error(err, "ParseServiceAccountYaml") } serviceAccount.Namespace = submarine.Namespace - serviceAccount.Labels = map[string]string{"app.kubernetes.io/name": serverName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "server"} + serviceAccountLabels := serviceAccount.GetLabels() + if serviceAccountLabels == nil { + serviceAccount.SetLabels(make(map[string]string)) + serviceAccountLabels = serviceAccount.GetLabels() + } + for k, v := range serverAdditionalLabels { + serviceAccountLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, serviceAccount, r.Scheme) if err != nil { r.Log.Error(err, "Set ServiceAccount ControllerReference") @@ -52,7 +61,14 @@ func (r *SubmarineReconciler) newSubmarineServerService(ctx context.Context, sub r.Log.Error(err, "ParseServiceYaml") } service.Namespace = submarine.Namespace - service.Labels = map[string]string{"app.kubernetes.io/name": serverName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "server"} + serviceLabels := service.GetLabels() + if serviceLabels == nil { + service.SetLabels(make(map[string]string)) + serviceLabels = service.GetLabels() + } + for k, v := range serverAdditionalLabels { + serviceLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, service, r.Scheme) if err != nil { r.Log.Error(err, "Set Service ControllerReference") @@ -94,7 +110,20 @@ func (r *SubmarineReconciler) newSubmarineServerDeployment(ctx context.Context, r.Log.Error(err, "ParseDeploymentYaml") } deployment.Namespace = submarine.Namespace - deployment.Labels = map[string]string{"app.kubernetes.io/name": serverName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "server"} + deploymentLabels := deployment.GetLabels() + if deploymentLabels == nil { + deployment.SetLabels(make(map[string]string)) + deploymentLabels = deployment.GetLabels() + } + podLabels := deployment.Spec.Template.GetLabels() + if podLabels == nil { + deployment.Spec.Template.SetLabels(make(map[string]string)) + podLabels = deployment.Spec.Template.GetLabels() + } + for k, v := range serverAdditionalLabels { + deploymentLabels[k] = v + podLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, deployment, r.Scheme) if err != nil { r.Log.Error(err, "Set Deployment ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_tensorboard.go b/submarine-cloud-v3/controllers/submarine_tensorboard.go index 6fc866491..a92e86550 100644 --- a/submarine-cloud-v3/controllers/submarine_tensorboard.go +++ b/submarine-cloud-v3/controllers/submarine_tensorboard.go @@ -32,13 +32,22 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" ) +var tensorboardAdditionalLabels = map[string]string{"app.kubernetes.io/name": tensorboardName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "tensorboard"} + func (r *SubmarineReconciler) newSubmarineTensorboardPersistentVolumeClaim(ctx context.Context, submarine *submarineapacheorgv1alpha1.Submarine) *corev1.PersistentVolumeClaim { pvc, err := ParsePersistentVolumeClaimYaml(tensorboardYamlPath) if err != nil { r.Log.Error(err, "ParsePersistentVolumeClaimYaml") } pvc.Namespace = submarine.Namespace - pvc.Labels = map[string]string{"app.kubernetes.io/name": tensorboardPvcName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "tensorboard"} + pvcLabels := pvc.GetLabels() + if pvcLabels == nil { + pvc.SetLabels(make(map[string]string)) + pvcLabels = pvc.GetLabels() + } + for k, v := range tensorboardAdditionalLabels { + pvcLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, pvc, r.Scheme) if err != nil { r.Log.Error(err, "Set PersistentVolumeClaim ControllerReference") @@ -52,7 +61,20 @@ func (r *SubmarineReconciler) newSubmarineTensorboardDeployment(ctx context.Cont r.Log.Error(err, "ParseDeploymentYaml") } deployment.Namespace = submarine.Namespace - deployment.Labels = map[string]string{"app.kubernetes.io/name": tensorboardName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "tensorboard"} + deploymentLabels := deployment.GetLabels() + if deploymentLabels == nil { + deployment.SetLabels(make(map[string]string)) + deploymentLabels = deployment.GetLabels() + } + podLabels := deployment.Spec.Template.GetLabels() + if podLabels == nil { + deployment.Spec.Template.SetLabels(make(map[string]string)) + podLabels = deployment.Spec.Template.GetLabels() + } + for k, v := range tensorboardAdditionalLabels { + deploymentLabels[k] = v + podLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, deployment, r.Scheme) if err != nil { r.Log.Error(err, "Set Deployment ControllerReference") @@ -66,7 +88,14 @@ func (r *SubmarineReconciler) newSubmarineTensorboardService(ctx context.Context r.Log.Error(err, "ParseServiceYaml") } service.Namespace = submarine.Namespace - service.Labels = map[string]string{"app.kubernetes.io/name": tensorboardServiceName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "tensorboard"} + serviceLabels := service.GetLabels() + if serviceLabels == nil { + service.SetLabels(make(map[string]string)) + serviceLabels = service.GetLabels() + } + for k, v := range tensorboardAdditionalLabels { + serviceLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, service, r.Scheme) if err != nil { r.Log.Error(err, "Set Service ControllerReference") From fcfd6a6fd0997a862ac60e249c46fc4a11d20e9c Mon Sep 17 00:00:00 2001 From: Ian Shen Date: Tue, 2 Aug 2022 12:45:34 -0700 Subject: [PATCH 6/6] Changed label setting to mutative in remaining controllers --- .../controllers/submarine_observer_rbac.go | 20 +++++++++++-- .../controllers/submarine_server_rbac.go | 18 ++++++++++-- .../controllers/submarine_storage_rbac.go | 29 +++++++++++++++++-- .../controllers/submarine_virtualservice.go | 11 ++++++- 4 files changed, 70 insertions(+), 8 deletions(-) diff --git a/submarine-cloud-v3/controllers/submarine_observer_rbac.go b/submarine-cloud-v3/controllers/submarine_observer_rbac.go index 47298ecb0..157595f3b 100644 --- a/submarine-cloud-v3/controllers/submarine_observer_rbac.go +++ b/submarine-cloud-v3/controllers/submarine_observer_rbac.go @@ -32,13 +32,22 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" ) +var observerAdditionalLabels = map[string]string{"app.kubernetes.io/name": observerName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "observer"} + func (r *SubmarineReconciler) newSubmarineObserverRole(ctx context.Context, submarine *submarineapacheorgv1alpha1.Submarine) *rbacv1.Role { role, err := ParseRoleYaml(observerRbacYamlPath) if err != nil { r.Log.Error(err, "ParseRoleYaml") } role.Namespace = submarine.Namespace - role.Labels = map[string]string{"app.kubernetes.io/name": observerName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "observer"} + roleLabels := role.GetLabels() + if roleLabels == nil { + role.SetLabels(make(map[string]string)) + roleLabels = role.GetLabels() + } + for k, v := range observerAdditionalLabels { + roleLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, role, r.Scheme) if err != nil { r.Log.Error(err, "Set Role ControllerReference") @@ -52,7 +61,14 @@ func (r *SubmarineReconciler) newSubmarineObserverRoleBinding(ctx context.Contex r.Log.Error(err, "Set RoleBinding ControllerReference") } roleBinding.Namespace = submarine.Namespace - roleBinding.Labels = map[string]string{"app.kubernetes.io/name": observerName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "observer"} + roleBindingLabels := roleBinding.GetLabels() + if roleBindingLabels == nil { + roleBinding.SetLabels(make(map[string]string)) + roleBindingLabels = roleBinding.GetLabels() + } + for k, v := range observerAdditionalLabels { + roleBindingLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, roleBinding, r.Scheme) if err != nil { r.Log.Error(err, "Set RoleBinding ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_server_rbac.go b/submarine-cloud-v3/controllers/submarine_server_rbac.go index 8cee12467..ce9fd8a97 100644 --- a/submarine-cloud-v3/controllers/submarine_server_rbac.go +++ b/submarine-cloud-v3/controllers/submarine_server_rbac.go @@ -38,7 +38,14 @@ func (r *SubmarineReconciler) newSubmarineServerRole(ctx context.Context, submar r.Log.Error(err, "ParseRoleYaml") } role.Namespace = submarine.Namespace - role.Labels = map[string]string{"app.kubernetes.io/name": serverName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "server"} + roleLabels := role.GetLabels() + if roleLabels == nil { + role.SetLabels(make(map[string]string)) + roleLabels = role.GetLabels() + } + for k, v := range serverAdditionalLabels { + roleLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, role, r.Scheme) if err != nil { r.Log.Error(err, "Set Role ControllerReference") @@ -62,7 +69,14 @@ func (r *SubmarineReconciler) newSubmarineServerRoleBinding(ctx context.Context, r.Log.Error(err, "Set RoleBinding ControllerReference") } roleBinding.Namespace = submarine.Namespace - roleBinding.Labels = map[string]string{"app.kubernetes.io/name": serverName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "server"} + roleBindingLabels := roleBinding.GetLabels() + if roleBindingLabels == nil { + roleBinding.SetLabels(make(map[string]string)) + roleBindingLabels = roleBinding.GetLabels() + } + for k, v := range serverAdditionalLabels { + roleBindingLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, roleBinding, r.Scheme) if err != nil { r.Log.Error(err, "Set RoleBinding ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_storage_rbac.go b/submarine-cloud-v3/controllers/submarine_storage_rbac.go index 0b9bb1ee4..112545b10 100644 --- a/submarine-cloud-v3/controllers/submarine_storage_rbac.go +++ b/submarine-cloud-v3/controllers/submarine_storage_rbac.go @@ -32,13 +32,22 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" ) +var storageAdditionalLabels = map[string]string{"app.kubernetes.io/name": storageName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "storage"} + func (r *SubmarineReconciler) newSubmarineStorageRole(ctx context.Context, submarine *submarineapacheorgv1alpha1.Submarine) *rbacv1.Role { role, err := ParseRoleYaml(storageRbacYamlPath) if err != nil { r.Log.Error(err, "ParseRoleYaml") } role.Namespace = submarine.Namespace - role.Labels = map[string]string{"app.kubernetes.io/name": storageName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "storage"} + roleLabels := role.GetLabels() + if roleLabels == nil { + role.SetLabels(make(map[string]string)) + roleLabels = role.GetLabels() + } + for k, v := range storageAdditionalLabels { + roleLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, role, r.Scheme) if err != nil { r.Log.Error(err, "Set Role ControllerReference") @@ -60,7 +69,14 @@ func (r *SubmarineReconciler) newSubmarineStorageRoleBinding(ctx context.Context r.Log.Error(err, "Set RoleBinding ControllerReference") } roleBinding.Namespace = submarine.Namespace - roleBinding.Labels = map[string]string{"app.kubernetes.io/name": storageName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "storage"} + roleBindingLabels := roleBinding.GetLabels() + if roleBindingLabels == nil { + roleBinding.SetLabels(make(map[string]string)) + roleBindingLabels = roleBinding.GetLabels() + } + for k, v := range storageAdditionalLabels { + roleBindingLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, roleBinding, r.Scheme) if err != nil { r.Log.Error(err, "Set RoleBinding ControllerReference") @@ -74,7 +90,14 @@ func (r *SubmarineReconciler) newSubmarineStorageServiceAccount(ctx context.Cont r.Log.Error(err, "ParseServiceAccountYaml") } serviceAccount.Namespace = submarine.Namespace - serviceAccount.Labels = map[string]string{"app.kubernetes.io/name": storageName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "storage"} + serviceAccountLabels := serviceAccount.GetLabels() + if serviceAccountLabels == nil { + serviceAccount.SetLabels(make(map[string]string)) + serviceAccountLabels = serviceAccount.GetLabels() + } + for k, v := range storageAdditionalLabels { + serviceAccountLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, serviceAccount, r.Scheme) if err != nil { r.Log.Error(err, "Set ServiceAccount ControllerReference") diff --git a/submarine-cloud-v3/controllers/submarine_virtualservice.go b/submarine-cloud-v3/controllers/submarine_virtualservice.go index 97a4f5d40..278fe60da 100644 --- a/submarine-cloud-v3/controllers/submarine_virtualservice.go +++ b/submarine-cloud-v3/controllers/submarine_virtualservice.go @@ -33,13 +33,22 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" ) +var virtualServiceAdditionalLabels = map[string]string{"app.kubernetes.io/name": virtualServiceName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "virtual-service"} + func (r *SubmarineReconciler) newSubmarineVirtualService(ctx context.Context, submarine *submarineapacheorgv1alpha1.Submarine) *istiov1alpha3.VirtualService { virtualService, err := ParseVirtualService(virtualServiceYamlPath) if err != nil { r.Log.Error(err, "ParseVirtualService") } virtualService.Namespace = submarine.Namespace - virtualService.Labels = map[string]string{"app.kubernetes.io/name": virtualServiceName, "app.kubernetes.io/version": appVersion, "app.kubernetes.io/component": "virtual-service"} + virtualServiceLabels := virtualService.GetLabels() + if virtualServiceLabels == nil { + virtualService.SetLabels(make(map[string]string)) + virtualServiceLabels = virtualService.GetLabels() + } + for k, v := range virtualServiceAdditionalLabels { + virtualServiceLabels[k] = v + } err = controllerutil.SetControllerReference(submarine, virtualService, r.Scheme) if err != nil { r.Log.Error(err, "Set VirtualService ControllerReference")