diff --git a/admission-webhook/bootstrap/overlays/application/application.yaml b/admission-webhook/bootstrap/overlays/application/application.yaml new file mode 100644 index 00000000000..003213c5c93 --- /dev/null +++ b/admission-webhook/bootstrap/overlays/application/application.yaml @@ -0,0 +1,21 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: StatefulSet + - group: core + kind: ServiceAccount + - group: core + kind: ConfigMap + descriptor: + type: "admission-webhook-bootstrap" + version: "v1alpha1" + description: "admission-webhook bootstrap installs the admission-webhook controller" + keywords: + - "admission-webook" + links: + - description: About + url: "https://github.com/kubeflow/kubeflow/tree/master/components/admission-webhook" diff --git a/admission-webhook/bootstrap/overlays/application/kustomization.yaml b/admission-webhook/bootstrap/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..d14425ad38d --- /dev/null +++ b/admission-webhook/bootstrap/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: admission-webhook-bootstrap-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: admission-webhook-bootstrap-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: admission-webhook-bootstrap + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: admission-webhook + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/admission-webhook/bootstrap/overlays/application/params.env b/admission-webhook/bootstrap/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/admission-webhook/bootstrap/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/admission-webhook/bootstrap/overlays/application/params.yaml b/admission-webhook/bootstrap/overlays/application/params.yaml new file mode 100644 index 00000000000..04c3d2d8a3d --- /dev/null +++ b/admission-webhook/bootstrap/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: StatefulSet +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: StatefulSet diff --git a/admission-webhook/webhook/overlays/application/application.yaml b/admission-webhook/webhook/overlays/application/application.yaml new file mode 100644 index 00000000000..3a70f67a747 --- /dev/null +++ b/admission-webhook/webhook/overlays/application/application.yaml @@ -0,0 +1,23 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: admissionregistration.k8s.io + kind: MutatingWebhookConfiguration + - group: core + kind: ServiceAccount + - group: core + kind: Service + descriptor: + type: "admission-webhook-webhook" + version: "v1alpha1" + description: "admission-webhook webhook injects common data (env vars, volumes) into notebooks" + keywords: + - "admission-webook" + links: + - description: About + url: "https://github.com/kubeflow/kubeflow/tree/master/components/admission-webhook" diff --git a/admission-webhook/webhook/overlays/application/kustomization.yaml b/admission-webhook/webhook/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..d3241bd7238 --- /dev/null +++ b/admission-webhook/webhook/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: admission-webhook-webhook-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: admission-webhook-webhook-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: admission-webhook-webhook + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: admission-webhook + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/admission-webhook/webhook/overlays/application/params.env b/admission-webhook/webhook/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/admission-webhook/webhook/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/admission-webhook/webhook/overlays/application/params.yaml b/admission-webhook/webhook/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/admission-webhook/webhook/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/application/application/overlays/application/application.yaml b/application/application/overlays/application/application.yaml index d50635e9576..d61aa11cb3b 100644 --- a/application/application/overlays/application/application.yaml +++ b/application/application/overlays/application/application.yaml @@ -1,13 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: kubeflow + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: app.k8s.io kind: Application diff --git a/application/application/overlays/application/kustomization.yaml b/application/application/overlays/application/kustomization.yaml index d15622c7d48..9ac59a47f8c 100644 --- a/application/application/overlays/application/kustomization.yaml +++ b/application/application/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: kubeflow-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: kubeflow-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: kubeflow - app.kubernetes.io/instance: kubeflow + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: kubeflow app.kubernetes.io/part-of: kubeflow diff --git a/application/application/overlays/application/params.env b/application/application/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/application/application/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/application/application/overlays/application/params.yaml b/application/application/overlays/application/params.yaml new file mode 100644 index 00000000000..04c3d2d8a3d --- /dev/null +++ b/application/application/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: StatefulSet +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: StatefulSet diff --git a/argo/base/cluster-role-binding.yaml b/argo/base/cluster-role-binding.yaml index 979873c68d2..13bbd644919 100644 --- a/argo/base/cluster-role-binding.yaml +++ b/argo/base/cluster-role-binding.yaml @@ -12,7 +12,6 @@ roleRef: subjects: - kind: ServiceAccount name: argo - namespace: kubeflow --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding diff --git a/argo/base/config-map.yaml b/argo/base/config-map.yaml index 384473d759d..9abe5e5d29b 100644 --- a/argo/base/config-map.yaml +++ b/argo/base/config-map.yaml @@ -2,7 +2,6 @@ apiVersion: v1 kind: ConfigMap metadata: name: workflow-controller-configmap - namespace: kubeflow data: config: | { diff --git a/argo/base/deployment.yaml b/argo/base/deployment.yaml index 3accfae2c3c..bf26836b2c8 100644 --- a/argo/base/deployment.yaml +++ b/argo/base/deployment.yaml @@ -5,7 +5,6 @@ metadata: labels: app: argo-ui name: argo-ui - namespace: kubeflow spec: progressDeadlineSeconds: 600 replicas: 1 @@ -59,7 +58,6 @@ metadata: labels: app: workflow-controller name: workflow-controller - namespace: kubeflow spec: progressDeadlineSeconds: 600 replicas: 1 diff --git a/argo/base/kustomization.yaml b/argo/base/kustomization.yaml index 508a4225935..8c5028da492 100644 --- a/argo/base/kustomization.yaml +++ b/argo/base/kustomization.yaml @@ -8,6 +8,7 @@ resources: - deployment.yaml - service-account.yaml - service.yaml +namespace: kubeflow commonLabels: kustomize.component: argo images: diff --git a/argo/base/service-account.yaml b/argo/base/service-account.yaml index 6f463d96667..71d14033f72 100644 --- a/argo/base/service-account.yaml +++ b/argo/base/service-account.yaml @@ -8,4 +8,3 @@ apiVersion: v1 kind: ServiceAccount metadata: name: argo-ui - namespace: kubeflow diff --git a/argo/base/service.yaml b/argo/base/service.yaml index ee0e0bd4075..079f31b3bf7 100644 --- a/argo/base/service.yaml +++ b/argo/base/service.yaml @@ -12,7 +12,6 @@ metadata: labels: app: argo-ui name: argo-ui - namespace: kubeflow spec: ports: - port: 80 diff --git a/argo/overlays/application/application.yaml b/argo/overlays/application/application.yaml new file mode 100644 index 00000000000..bf35a9b1b2d --- /dev/null +++ b/argo/overlays/application/application.yaml @@ -0,0 +1,23 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: core + kind: ConfigMap + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + - group: core + kind: Service + descriptor: + type: "argo" + version: "v1beta1" + description: "installs argo controller to handle argo Workflows" + keywords: + - "argo" + links: + - description: About + url: "https://argoproj.github.io/argo" diff --git a/argo/overlays/application/kustomization.yaml b/argo/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..0a901bf9603 --- /dev/null +++ b/argo/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: argo-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: argo-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: argo + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: argo + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/argo/overlays/application/params.env b/argo/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/argo/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/argo/overlays/application/params.yaml b/argo/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/argo/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/common/centraldashboard/overlays/application/application.yaml b/common/centraldashboard/overlays/application/application.yaml index bfd02a9a4f3..6bb295358bc 100644 --- a/common/centraldashboard/overlays/application/application.yaml +++ b/common/centraldashboard/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: centraldashboard + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: - app.kubernetes.io/instance: centraldashboard - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: centraldashboard - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: ConfigMap diff --git a/common/centraldashboard/overlays/application/kustomization.yaml b/common/centraldashboard/overlays/application/kustomization.yaml index 8b5827bcba2..7c059e11dbe 100644 --- a/common/centraldashboard/overlays/application/kustomization.yaml +++ b/common/centraldashboard/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: centraldashboard-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: centraldashboard-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: centraldashboard - app.kubernetes.io/instance: centraldashboard + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: centraldashboard app.kubernetes.io/part-of: kubeflow diff --git a/common/centraldashboard/overlays/application/params.env b/common/centraldashboard/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/common/centraldashboard/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/common/centraldashboard/overlays/application/params.yaml b/common/centraldashboard/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/common/centraldashboard/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/jupyter/jupyter-web-app/overlays/application/application.yaml b/jupyter/jupyter-web-app/overlays/application/application.yaml index ce1b13d6ed0..b8f660908d5 100644 --- a/jupyter/jupyter-web-app/overlays/application/application.yaml +++ b/jupyter/jupyter-web-app/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: jupyter-web-app + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: jupyter-web-app - app.kubernetes.io/instance: jupyter-web-app - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: jupyter - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: ConfigMap diff --git a/jupyter/jupyter-web-app/overlays/application/kustomization.yaml b/jupyter/jupyter-web-app/overlays/application/kustomization.yaml index eed2a8dfaba..d1a7869129f 100644 --- a/jupyter/jupyter-web-app/overlays/application/kustomization.yaml +++ b/jupyter/jupyter-web-app/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: jupyter-web-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: jupyter-web-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: jupyter-web-app - app.kubernetes.io/instance: jupyter-web-app + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: jupyter app.kubernetes.io/part-of: kubeflow diff --git a/jupyter/jupyter-web-app/overlays/application/params.env b/jupyter/jupyter-web-app/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/jupyter/jupyter-web-app/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/jupyter/jupyter-web-app/overlays/application/params.yaml b/jupyter/jupyter-web-app/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/jupyter/jupyter-web-app/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/jupyter/notebook-controller/overlays/application/application.yaml b/jupyter/notebook-controller/overlays/application/application.yaml index 6355f0decaf..242a369db60 100644 --- a/jupyter/notebook-controller/overlays/application/application.yaml +++ b/jupyter/notebook-controller/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: notebook-controller + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: notebook-controller - app.kubernetes.io/instance: notebook-controller - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: notebook - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service diff --git a/jupyter/notebook-controller/overlays/application/kustomization.yaml b/jupyter/notebook-controller/overlays/application/kustomization.yaml index 698f691205d..66dfba7e35c 100644 --- a/jupyter/notebook-controller/overlays/application/kustomization.yaml +++ b/jupyter/notebook-controller/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: notebook-controller-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: notebook-controller-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: notebook-controller - app.kubernetes.io/instance: notebook-controller + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: notebook app.kubernetes.io/part-of: kubeflow diff --git a/jupyter/notebook-controller/overlays/application/params.env b/jupyter/notebook-controller/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/jupyter/notebook-controller/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/jupyter/notebook-controller/overlays/application/params.yaml b/jupyter/notebook-controller/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/jupyter/notebook-controller/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/katib-v1alpha2/katib-controller/overlays/application/application.yaml b/katib-v1alpha2/katib-controller/overlays/application/application.yaml index a9731f99924..bbb531337a5 100644 --- a/katib-v1alpha2/katib-controller/overlays/application/application.yaml +++ b/katib-v1alpha2/katib-controller/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: katib-controller + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: katib-controller - app.kubernetes.io/instance: katib-controller - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: katib - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service diff --git a/katib-v1alpha2/katib-controller/overlays/application/kustomization.yaml b/katib-v1alpha2/katib-controller/overlays/application/kustomization.yaml index d5dab31cfbd..045a499178b 100644 --- a/katib-v1alpha2/katib-controller/overlays/application/kustomization.yaml +++ b/katib-v1alpha2/katib-controller/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: katib-controller-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: katib-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: katib-controller - app.kubernetes.io/instance: katib-controller + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: katib app.kubernetes.io/part-of: kubeflow diff --git a/katib-v1alpha2/katib-controller/overlays/application/params.env b/katib-v1alpha2/katib-controller/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/katib-v1alpha2/katib-controller/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/katib-v1alpha2/katib-controller/overlays/application/params.yaml b/katib-v1alpha2/katib-controller/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/katib-v1alpha2/katib-controller/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/katib-v1alpha2/katib-db/overlays/application/application.yaml b/katib-v1alpha2/katib-db/overlays/application/application.yaml index 2420c2b854e..58e86bd938e 100644 --- a/katib-v1alpha2/katib-db/overlays/application/application.yaml +++ b/katib-v1alpha2/katib-db/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: katib-db + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: katib-db - app.kubernetes.io/instance: katib-db - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: katib - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service diff --git a/katib-v1alpha2/katib-db/overlays/application/kustomization.yaml b/katib-v1alpha2/katib-db/overlays/application/kustomization.yaml index af728a594a9..8507cc7badc 100644 --- a/katib-v1alpha2/katib-db/overlays/application/kustomization.yaml +++ b/katib-v1alpha2/katib-db/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: katib-db-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: katib-db-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: katib-db - app.kubernetes.io/instance: katib-db + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: katib app.kubernetes.io/part-of: kubeflow diff --git a/katib-v1alpha2/katib-db/overlays/application/params.env b/katib-v1alpha2/katib-db/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/katib-v1alpha2/katib-db/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/katib-v1alpha2/katib-db/overlays/application/params.yaml b/katib-v1alpha2/katib-db/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/katib-v1alpha2/katib-db/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/katib-v1alpha2/katib-manager/overlays/application/application.yaml b/katib-v1alpha2/katib-manager/overlays/application/application.yaml index 579bfbe6c2f..35f9de511ad 100644 --- a/katib-v1alpha2/katib-manager/overlays/application/application.yaml +++ b/katib-v1alpha2/katib-manager/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: katib-manager + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: katib-manager - app.kubernetes.io/instance: katib-manager - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: katib - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service diff --git a/katib-v1alpha2/katib-manager/overlays/application/kustomization.yaml b/katib-v1alpha2/katib-manager/overlays/application/kustomization.yaml index 1f8258a865c..984e3050920 100644 --- a/katib-v1alpha2/katib-manager/overlays/application/kustomization.yaml +++ b/katib-v1alpha2/katib-manager/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: katib-manager-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: katib-manager-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: katib-manager - app.kubernetes.io/instance: katib-manager + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: katib app.kubernetes.io/part-of: kubeflow diff --git a/katib-v1alpha2/katib-manager/overlays/application/params.env b/katib-v1alpha2/katib-manager/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/katib-v1alpha2/katib-manager/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/katib-v1alpha2/katib-manager/overlays/application/params.yaml b/katib-v1alpha2/katib-manager/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/katib-v1alpha2/katib-manager/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/katib-v1alpha2/katib-ui/overlays/application/application.yaml b/katib-v1alpha2/katib-ui/overlays/application/application.yaml index 4a396ed7d0d..b93014d0adc 100644 --- a/katib-v1alpha2/katib-ui/overlays/application/application.yaml +++ b/katib-v1alpha2/katib-ui/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: katib-ui + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: katib-ui - app.kubernetes.io/instance: katib-ui - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: katib - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service diff --git a/katib-v1alpha2/katib-ui/overlays/application/kustomization.yaml b/katib-v1alpha2/katib-ui/overlays/application/kustomization.yaml index f99ffdf3bf3..300988552b5 100644 --- a/katib-v1alpha2/katib-ui/overlays/application/kustomization.yaml +++ b/katib-v1alpha2/katib-ui/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: katib-ui-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: katib-ui-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: katib-ui - app.kubernetes.io/instance: katib-ui + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: katib app.kubernetes.io/part-of: kubeflow diff --git a/katib-v1alpha2/katib-ui/overlays/application/params.env b/katib-v1alpha2/katib-ui/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/katib-v1alpha2/katib-ui/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/katib-v1alpha2/katib-ui/overlays/application/params.yaml b/katib-v1alpha2/katib-ui/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/katib-v1alpha2/katib-ui/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/katib-v1alpha2/metrics-collector/overlays/application/application.yaml b/katib-v1alpha2/metrics-collector/overlays/application/application.yaml index b2bdab88885..7b7feeb0bbd 100644 --- a/katib-v1alpha2/metrics-collector/overlays/application/application.yaml +++ b/katib-v1alpha2/metrics-collector/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: metrics-collector + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: metrics-collector - app.kubernetes.io/instance: metrics-collector - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: katib - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: ConfigMap diff --git a/katib-v1alpha2/metrics-collector/overlays/application/kustomization.yaml b/katib-v1alpha2/metrics-collector/overlays/application/kustomization.yaml index 984fa2505fd..fe65e3f5d38 100644 --- a/katib-v1alpha2/metrics-collector/overlays/application/kustomization.yaml +++ b/katib-v1alpha2/metrics-collector/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: metrics-collector-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: metrics-collector-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: metrics-collector - app.kubernetes.io/instance: metrics-collector + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: katib app.kubernetes.io/part-of: kubeflow diff --git a/katib-v1alpha2/metrics-collector/overlays/application/params.env b/katib-v1alpha2/metrics-collector/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/katib-v1alpha2/metrics-collector/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/katib-v1alpha2/metrics-collector/overlays/application/params.yaml b/katib-v1alpha2/metrics-collector/overlays/application/params.yaml new file mode 100644 index 00000000000..d2b6d06f12c --- /dev/null +++ b/katib-v1alpha2/metrics-collector/overlays/application/params.yaml @@ -0,0 +1,3 @@ +varReference: +- path: metadata/name + kind: Application diff --git a/katib-v1alpha2/suggestion/overlays/application/application.yaml b/katib-v1alpha2/suggestion/overlays/application/application.yaml index 7f12e98cc37..106e09eceee 100644 --- a/katib-v1alpha2/suggestion/overlays/application/application.yaml +++ b/katib-v1alpha2/suggestion/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: suggestion + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: suggestion - app.kubernetes.io/instance: suggestion - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: katib - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service diff --git a/katib-v1alpha2/suggestion/overlays/application/kustomization.yaml b/katib-v1alpha2/suggestion/overlays/application/kustomization.yaml index f99ffdf3bf3..06bfafe8106 100644 --- a/katib-v1alpha2/suggestion/overlays/application/kustomization.yaml +++ b/katib-v1alpha2/suggestion/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: suggestion-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: suggestion-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: - app.kubernetes.io/name: katib-ui - app.kubernetes.io/instance: katib-ui + app.kubernetes.io/name: suggestion + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: katib app.kubernetes.io/part-of: kubeflow diff --git a/katib-v1alpha2/suggestion/overlays/application/params.env b/katib-v1alpha2/suggestion/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/katib-v1alpha2/suggestion/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/katib-v1alpha2/suggestion/overlays/application/params.yaml b/katib-v1alpha2/suggestion/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/katib-v1alpha2/suggestion/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/kfdef/kfctl_anthos.yaml b/kfdef/kfctl_anthos.yaml index de7d5841842..64cd8f0a98a 100644 --- a/kfdef/kfctl_anthos.yaml +++ b/kfdef/kfctl_anthos.yaml @@ -32,6 +32,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: kubeflow- repoRef: name: manifests path: application/application @@ -44,6 +47,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: argo- repoRef: name: manifests path: argo @@ -56,11 +63,21 @@ spec: path: common/centraldashboard name: centraldashboard - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: admission-bootstrap- repoRef: name: manifests path: admission-webhook/bootstrap name: bootstrap - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: admission-webhook- repoRef: name: manifests path: admission-webhook/webhook @@ -69,21 +86,39 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: jupyter-web-app- repoRef: name: manifests path: jupyter/jupyter-web-app name: jupyter-web-app - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-db- repoRef: name: manifests path: katib-v1alpha2/katib-db name: katib-db - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-manager- repoRef: name: manifests path: katib-v1alpha2/katib-manager name: katib-manager - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-controller- repoRef: name: manifests path: katib-v1alpha2/katib-controller @@ -91,6 +126,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: katib-ui- repoRef: name: manifests path: katib-v1alpha2/katib-ui @@ -108,6 +147,11 @@ spec: path: katib-v1alpha2/metrics-collector name: metrics-collector - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-suggestion- repoRef: name: manifests path: katib-v1alpha2/suggestion @@ -116,6 +160,9 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: notebook-controller- repoRef: name: manifests path: jupyter/notebook-controller @@ -171,6 +218,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: tensorboard- repoRef: name: manifests path: tensorboard @@ -183,16 +234,30 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: tf-job-operator- repoRef: name: manifests path: tf-training/tf-job-operator name: tf-job-operator - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-api-service- repoRef: name: manifests path: pipeline/api-service name: api-service - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-minio- parameters: - name: minioPvcName value: minio-pv-claim @@ -201,6 +266,11 @@ spec: path: pipeline/minio name: minio - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-mysql- parameters: - name: mysqlPvcName value: mysql-pv-claim @@ -209,36 +279,63 @@ spec: path: pipeline/mysql name: mysql - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-persistent-agent- repoRef: name: manifests path: pipeline/persistent-agent name: persistent-agent - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-runner- repoRef: name: manifests path: pipeline/pipelines-runner name: pipelines-runner - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: pipeline-pipelines-ui- repoRef: name: manifests path: pipeline/pipelines-ui name: pipelines-ui - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-viewer- repoRef: name: manifests path: pipeline/pipelines-viewer name: pipelines-viewer - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-scheduledworkflow- repoRef: name: manifests path: pipeline/scheduledworkflow name: scheduledworkflow - kustomizeConfig: overlays: + - application - istio parameters: + - name: generateName + value: profiles- - initRequired: true name: admin value: johnDoe@acme.com @@ -249,6 +346,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: seldon-core-operator- repoRef: name: manifests path: seldon/seldon-core-operator diff --git a/kfdef/kfctl_aws.yaml b/kfdef/kfctl_aws.yaml index 61f09fd5384..e304085daa6 100644 --- a/kfdef/kfctl_aws.yaml +++ b/kfdef/kfctl_aws.yaml @@ -38,6 +38,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: kubeflow- repoRef: name: manifests path: application/application @@ -50,6 +53,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: argo- repoRef: name: manifests path: argo @@ -58,17 +65,29 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: centraldashboard- repoRef: name: manifests path: common/centraldashboard name: centraldashboard - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: admission-webhook- repoRef: name: manifests path: admission-webhook/webhook name: webhook - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: admission-bootstrap- - name: webhookNamePrefix value: admission-webhook- repoRef: @@ -79,21 +98,39 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: jupyter-webapp- repoRef: name: manifests path: jupyter/jupyter-web-app name: jupyter-web-app - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-db- repoRef: name: manifests path: katib-v1alpha2/katib-db name: katib-db - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-manager- repoRef: name: manifests path: katib-v1alpha2/katib-manager name: katib-manager - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-controller- repoRef: name: manifests path: katib-v1alpha2/katib-controller @@ -101,6 +138,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: katib-ui- repoRef: name: manifests path: katib-v1alpha2/katib-ui @@ -118,6 +159,11 @@ spec: path: metadata name: metadata - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-suggestion- repoRef: name: manifests path: katib-v1alpha2/suggestion @@ -126,6 +172,9 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: notebook-controller- repoRef: name: manifests path: jupyter/notebook-controller @@ -138,6 +187,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: pytorch-operator- repoRef: name: manifests path: pytorch-job/pytorch-operator @@ -157,6 +209,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: tensorboard- repoRef: name: manifests path: tensorboard @@ -170,17 +226,29 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: tf-job-operator- repoRef: name: manifests path: tf-training/tf-job-operator name: tf-job-operator - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-api-service- repoRef: name: manifests path: pipeline/api-service name: api-service - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: pipeline-minio- - name: minioPvcName value: minio-pv-claim repoRef: @@ -188,7 +256,11 @@ spec: path: pipeline/minio name: minio - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: pipeline-mysql- - name: mysqlPvcName value: mysql-pv-claim repoRef: @@ -196,28 +268,52 @@ spec: path: pipeline/mysql name: mysql - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-persistent-agent- repoRef: name: manifests path: pipeline/persistent-agent name: persistent-agent - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-runner- repoRef: name: manifests path: pipeline/pipelines-runner name: pipelines-runner - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: pipeline-pipelines-ui- repoRef: name: manifests path: pipeline/pipelines-ui name: pipelines-ui - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-viewer- repoRef: name: manifests path: pipeline/pipelines-viewer name: pipelines-viewer - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-scheduledworkflow- repoRef: name: manifests path: pipeline/scheduledworkflow @@ -225,6 +321,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: profiles- repoRef: name: manifests path: profiles @@ -232,12 +332,18 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: seldon-core-operator- repoRef: name: manifests path: seldon/seldon-core-operator - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: mpi-operator-operator- repoRef: name: manifests path: mpi-job/mpi-operator diff --git a/kfdef/kfctl_aws_cognito.yaml b/kfdef/kfctl_aws_cognito.yaml index 223f8d0a76c..02533c4ca76 100644 --- a/kfdef/kfctl_aws_cognito.yaml +++ b/kfdef/kfctl_aws_cognito.yaml @@ -38,6 +38,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: kubeflow- repoRef: name: manifests path: application/application @@ -49,26 +52,42 @@ spec: name: metacontroller - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: argo- repoRef: name: manifests path: argo name: argo - kustomizeConfig: overlays: - - istio - application + - istio + parameters: + - name: generateName + value: centraldashboard- repoRef: name: manifests path: common/centraldashboard name: centraldashboard - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: admission-webhook- repoRef: name: manifests path: admission-webhook/webhook name: webhook - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: admission-bootstrap- - name: webhookNamePrefix value: admission-webhook- repoRef: @@ -77,23 +96,41 @@ spec: name: bootstrap - kustomizeConfig: overlays: - - istio - application + - istio + parameters: + - name: generateName + value: jupyter-webapp- repoRef: name: manifests path: jupyter/jupyter-web-app name: jupyter-web-app - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-db- repoRef: name: manifests path: katib-v1alpha2/katib-db name: katib-db - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-manager- repoRef: name: manifests path: katib-v1alpha2/katib-manager name: katib-manager - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-controller- repoRef: name: manifests path: katib-v1alpha2/katib-controller @@ -101,6 +138,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: katib-ui- repoRef: name: manifests path: katib-v1alpha2/katib-ui @@ -118,14 +159,22 @@ spec: path: metadata name: metadata - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-suggestion- repoRef: name: manifests path: katib-v1alpha2/suggestion name: suggestion - kustomizeConfig: overlays: - - istio - application + - istio + parameters: + - name: generateName + value: notebook-controller- repoRef: name: manifests path: jupyter/notebook-controller @@ -138,6 +187,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: pytorch-operator- repoRef: name: manifests path: pytorch-job/pytorch-operator @@ -157,6 +209,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: tensorboard- repoRef: name: manifests path: tensorboard @@ -168,19 +224,31 @@ spec: name: tf-job-crds - kustomizeConfig: overlays: - - istio - application + - istio + parameters: + - name: generateName + value: tf-job-operator- repoRef: name: manifests path: tf-training/tf-job-operator name: tf-job-operator - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-api-service- repoRef: name: manifests path: pipeline/api-service name: api-service - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: pipeline-minio- - name: minioPvName value: minio-pv - name: minioPvcName @@ -190,7 +258,11 @@ spec: path: pipeline/minio name: minio - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: pipeline-minio- - name: mysqlPvName value: mysql-pv - name: mysqlPvcName @@ -200,35 +272,63 @@ spec: path: pipeline/mysql name: mysql - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-persistent-agent- repoRef: name: manifests path: pipeline/persistent-agent name: persistent-agent - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-runner- repoRef: name: manifests path: pipeline/pipelines-runner name: pipelines-runner - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: pipeline-pipelines-ui- repoRef: name: manifests path: pipeline/pipelines-ui name: pipelines-ui - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-viewer- repoRef: name: manifests path: pipeline/pipelines-viewer name: pipelines-viewer - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-scheduledworkflow- repoRef: name: manifests path: pipeline/scheduledworkflow name: scheduledworkflow - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: profiles- repoRef: name: manifests path: profiles @@ -236,12 +336,18 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: seldon-core-operator- repoRef: name: manifests path: seldon/seldon-core-operator - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: mpi-operator-operator- repoRef: name: manifests path: mpi-job/mpi-operator diff --git a/kfdef/kfctl_existing_arrikto.yaml b/kfdef/kfctl_existing_arrikto.yaml index b6c8b2f9614..0a0279241fb 100644 --- a/kfdef/kfctl_existing_arrikto.yaml +++ b/kfdef/kfctl_existing_arrikto.yaml @@ -16,6 +16,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: kubeflow- repoRef: name: manifests path: application/application @@ -27,7 +30,11 @@ spec: name: metacontroller - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: argo- repoRef: name: manifests path: argo @@ -43,12 +50,18 @@ spec: path: common/centraldashboard name: centraldashboard - kustomizeConfig: + overlays: + - application repoRef: name: manifests path: admission-webhook/webhook name: webhook - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: admission-webhook- - name: webhookNamePrefix value: admission-webhook- repoRef: @@ -62,21 +75,39 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: jupyter-webapp- repoRef: name: manifests path: jupyter/jupyter-web-app name: jupyter-web-app - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-db- repoRef: name: manifests path: katib-v1alpha2/katib-db name: katib-db - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-manager- repoRef: name: manifests path: katib-v1alpha2/katib-manager name: katib-manager - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-controller- repoRef: name: manifests path: katib-v1alpha2/katib-controller @@ -84,6 +115,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: katib-ui- repoRef: name: manifests path: katib-v1alpha2/katib-ui @@ -101,6 +136,11 @@ spec: path: katib-v1alpha2/metrics-collector name: metrics-collector - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-suggestion- repoRef: name: manifests path: katib-v1alpha2/suggestion @@ -109,6 +149,9 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: notebook-controller- repoRef: name: manifests path: jupyter/notebook-controller @@ -138,6 +181,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: tensorboard- repoRef: name: manifests path: tensorboard @@ -151,17 +198,29 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: tf-job-operator- repoRef: name: manifests path: tf-training/tf-job-operator name: tf-job-operator - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-api-service- repoRef: name: manifests path: pipeline/api-service name: api-service - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: pipeline-minio- - name: minioPvcName value: minio-pv-claim repoRef: @@ -169,7 +228,11 @@ spec: path: pipeline/minio name: minio - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: pipeline-mysql- - name: mysqlPvcName value: mysql-pv-claim repoRef: @@ -177,38 +240,65 @@ spec: path: pipeline/mysql name: mysql - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-persistent-agent- repoRef: name: manifests path: pipeline/persistent-agent name: persistent-agent - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-runner- repoRef: name: manifests path: pipeline/pipelines-runner name: pipelines-runner - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: pipeline-pipelines-ui- repoRef: name: manifests path: pipeline/pipelines-ui name: pipelines-ui - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-viewer- repoRef: name: manifests path: pipeline/pipelines-viewer name: pipelines-viewer - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-scheduledworkflow- repoRef: name: manifests path: pipeline/scheduledworkflow name: scheduledworkflow - kustomizeConfig: + overlays: + - application + - istio parameters: + - name: generateName + value: profiles- - name: userid-header value: kubeflow-userid - overlays: - - istio repoRef: name: manifests path: profiles @@ -216,6 +306,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: seldon-core-operator- repoRef: name: manifests path: seldon/seldon-core-operator diff --git a/kfdef/kfctl_gcp_basic_auth.yaml b/kfdef/kfctl_gcp_basic_auth.yaml index d04c171e498..815e1c105f0 100644 --- a/kfdef/kfctl_gcp_basic_auth.yaml +++ b/kfdef/kfctl_gcp_basic_auth.yaml @@ -49,6 +49,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: kubeflow- repoRef: name: manifests path: application/application @@ -60,7 +63,11 @@ spec: name: metacontroller - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: argo- repoRef: name: manifests path: argo @@ -73,12 +80,21 @@ spec: path: common/centraldashboard name: centraldashboard - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: admission-webhook- repoRef: name: manifests path: admission-webhook/webhook name: webhook - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: admission-bootstrap- - name: webhookNamePrefix value: admission-webhook- repoRef: @@ -89,21 +105,39 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: jupyter-webapp- repoRef: name: manifests path: jupyter/jupyter-web-app name: jupyter-web-app - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-db- repoRef: name: manifests path: katib-v1alpha2/katib-db name: katib-db - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-manager- repoRef: name: manifests path: katib-v1alpha2/katib-manager name: katib-manager - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-controller- repoRef: name: manifests path: katib-v1alpha2/katib-controller @@ -111,6 +145,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: katib-ui- repoRef: name: manifests path: katib-v1alpha2/katib-ui @@ -128,6 +166,11 @@ spec: path: katib-v1alpha2/metrics-collector name: metrics-collector - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-suggestion- repoRef: name: manifests path: katib-v1alpha2/suggestion @@ -137,6 +180,8 @@ spec: - istio - application parameters: + - name: generateName + value: notebook-controller- - name: injectGcpCredentials value: "true" repoRef: @@ -151,6 +196,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: pytorch-operator- repoRef: name: manifests path: pytorch-job/pytorch-operator @@ -196,6 +244,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: tensorboard- repoRef: name: manifests path: tensorboard @@ -209,19 +261,30 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: tf-job-operator- repoRef: name: manifests path: tf-training/tf-job-operator name: tf-job-operator - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-api-service- repoRef: name: manifests path: pipeline/api-service name: api-service - kustomizeConfig: overlays: + - application - minioPd parameters: + - name: generateName + value: pipeline-minio- - name: minioPd value: test1-storage-artifact-store - name: minioPvName @@ -234,8 +297,11 @@ spec: name: minio - kustomizeConfig: overlays: + - application - mysqlPd parameters: + - name: generateName + value: pipeline-mysql- - name: mysqlPd value: test1-storage-metadata-store - name: mysqlPvName @@ -247,28 +313,52 @@ spec: path: pipeline/mysql name: mysql - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-persistent-agent- repoRef: name: manifests path: pipeline/persistent-agent name: persistent-agent - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-runner- repoRef: name: manifests path: pipeline/pipelines-runner name: pipelines-runner - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: pipeline-pipelines-ui- repoRef: name: manifests path: pipeline/pipelines-ui name: pipelines-ui - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-viewer- repoRef: name: manifests path: pipeline/pipelines-viewer name: pipelines-viewer - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-scheduledworkflow- repoRef: name: manifests path: pipeline/scheduledworkflow @@ -288,8 +378,11 @@ spec: name: cloud-endpoints - kustomizeConfig: overlays: + - application - istio parameters: + - name: generateName + value: profiles- - initRequired: true name: admin # emaill will be set automatically by kfctl init and generate @@ -306,6 +399,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: seldon-core-operator- repoRef: name: manifests path: seldon/seldon-core-operator diff --git a/kfdef/kfctl_gcp_iap.yaml b/kfdef/kfctl_gcp_iap.yaml index a30316e6b4c..a98aeceb9fc 100644 --- a/kfdef/kfctl_gcp_iap.yaml +++ b/kfdef/kfctl_gcp_iap.yaml @@ -8,7 +8,7 @@ metadata: spec: repos: - name: manifests - uri: https://github.com/kubeflow/manifests/archive/master.tar.gz + uri: https://github.com/kubeflow/manifests/archive/pull/342/head.tar.gz # To get manifest at a PR: #uri: https://github.com/kubeflow/manifests/archive/pull/235/head.tar.gz appdir: /tmp/myapp2 @@ -45,6 +45,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: kubeflow- repoRef: name: manifests path: application/application @@ -56,15 +59,22 @@ spec: name: metacontroller - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: argo- repoRef: name: manifests path: argo name: argo - kustomizeConfig: overlays: + - application - istio parameters: + - name: generateName + value: centraldashboard- - name: userid-header value: X-Goog-Authenticated-User-Email - name: userid-prefix @@ -74,12 +84,21 @@ spec: path: common/centraldashboard name: centraldashboard - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: admission-webhook- repoRef: name: manifests path: admission-webhook/webhook name: webhook - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: admission-bootstrap- - name: webhookNamePrefix value: admission-webhook- repoRef: @@ -91,6 +110,8 @@ spec: - istio - application parameters: + - name: generateName + value: jupyter-webapp- - name: userid-header value: X-Goog-Authenticated-User-Email - name: userid-prefix @@ -100,16 +121,31 @@ spec: path: jupyter/jupyter-web-app name: jupyter-web-app - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-db- repoRef: name: manifests path: katib-v1alpha2/katib-db name: katib-db - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-manager- repoRef: name: manifests path: katib-v1alpha2/katib-manager name: katib-manager - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-controller- repoRef: name: manifests path: katib-v1alpha2/katib-controller @@ -117,6 +153,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: katib-ui- repoRef: name: manifests path: katib-v1alpha2/katib-ui @@ -134,6 +174,11 @@ spec: path: katib-v1alpha2/metrics-collector name: metrics-collector - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-suggestion- repoRef: name: manifests path: katib-v1alpha2/suggestion @@ -143,6 +188,8 @@ spec: - istio - application parameters: + - name: generateName + value: notebook-controller- - name: injectGcpCredentials value: "true" repoRef: @@ -157,6 +204,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: pytorch-operator- repoRef: name: manifests path: pytorch-job/pytorch-operator @@ -202,6 +252,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: tensorboard- repoRef: name: manifests path: tensorboard @@ -215,19 +269,30 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: tf-job-operator- repoRef: name: manifests path: tf-training/tf-job-operator name: tf-job-operator - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-api-service- repoRef: name: manifests path: pipeline/api-service name: api-service - kustomizeConfig: overlays: + - application - minioPd parameters: + - name: generateName + value: pipeline-minio- - name: minioPd value: test1-storage-artifact-store - name: minioPvName @@ -240,8 +305,11 @@ spec: name: minio - kustomizeConfig: overlays: + - application - mysqlPd parameters: + - name: generateName + value: pipeline-mysql- - name: mysqlPd value: test1-storage-metadata-store - name: mysqlPvName @@ -253,28 +321,52 @@ spec: path: pipeline/mysql name: mysql - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-persistent-agent- repoRef: name: manifests path: pipeline/persistent-agent name: persistent-agent - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-runner- repoRef: name: manifests path: pipeline/pipelines-runner name: pipelines-runner - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: pipeline-pipelines-ui- repoRef: name: manifests path: pipeline/pipelines-ui name: pipelines-ui - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-viewer- repoRef: name: manifests path: pipeline/pipelines-viewer name: pipelines-viewer - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-scheduledworkflow- repoRef: name: manifests path: pipeline/scheduledworkflow @@ -286,8 +378,11 @@ spec: name: cloud-endpoints - kustomizeConfig: overlays: + - application - istio parameters: + - name: generateName + value: profiles- - initRequired: true name: admin value: SET_EMAIL @@ -325,6 +420,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: seldon-core-operator- repoRef: name: manifests path: seldon/seldon-core-operator diff --git a/kfdef/kfctl_k8s_istio.yaml b/kfdef/kfctl_k8s_istio.yaml index fa60fbb3f42..8f53f227271 100644 --- a/kfdef/kfctl_k8s_istio.yaml +++ b/kfdef/kfctl_k8s_istio.yaml @@ -46,6 +46,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: kubeflow- repoRef: name: manifests path: application/application @@ -57,7 +60,11 @@ spec: name: metacontroller - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: argo- repoRef: name: manifests path: argo @@ -70,11 +77,21 @@ spec: path: common/centraldashboard name: centraldashboard - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: admission-bootstrap- repoRef: name: manifests path: admission-webhook/bootstrap name: bootstrap - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: admission-webhook- repoRef: name: manifests path: admission-webhook/webhook @@ -83,21 +100,39 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: jupyter-webapp- repoRef: name: manifests path: jupyter/jupyter-web-app name: jupyter-web-app - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-db- repoRef: name: manifests path: katib-v1alpha2/katib-db name: katib-db - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-manager- repoRef: name: manifests path: katib-v1alpha2/katib-manager name: katib-manager - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-controller- repoRef: name: manifests path: katib-v1alpha2/katib-controller @@ -105,6 +140,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: katib-ui- repoRef: name: manifests path: katib-v1alpha2/katib-ui @@ -122,6 +161,11 @@ spec: path: katib-v1alpha2/metrics-collector name: metrics-collector - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: katib-suggestion- repoRef: name: manifests path: katib-v1alpha2/suggestion @@ -130,6 +174,9 @@ spec: overlays: - istio - application + parameters: + - name: generateName + value: notebook-controller- repoRef: name: manifests path: jupyter/notebook-controller @@ -140,6 +187,11 @@ spec: path: pytorch-job/pytorch-job-crds name: pytorch-job-crds - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pytorch-operator- repoRef: name: manifests path: pytorch-job/pytorch-operator @@ -185,6 +237,10 @@ spec: - kustomizeConfig: overlays: - istio + - application + parameters: + - name: generateName + value: tensorboard- repoRef: name: manifests path: tensorboard @@ -202,12 +258,21 @@ spec: path: tf-training/tf-job-operator name: tf-job-operator - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-api-service- repoRef: name: manifests path: pipeline/api-service name: api-service - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: pipeline-minio- - name: minioPvcName value: minio-pv-claim repoRef: @@ -215,7 +280,11 @@ spec: path: pipeline/minio name: minio - kustomizeConfig: + overlays: + - application parameters: + - name: generateName + value: pipeline-mysql- - name: mysqlPvcName value: mysql-pv-claim repoRef: @@ -223,36 +292,63 @@ spec: path: pipeline/mysql name: mysql - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-persistent-agent- repoRef: name: manifests path: pipeline/persistent-agent name: persistent-agent - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-runner- repoRef: name: manifests path: pipeline/pipelines-runner name: pipelines-runner - kustomizeConfig: overlays: + - application - istio + parameters: + - name: generateName + value: pipeline-pipelines-ui- repoRef: name: manifests path: pipeline/pipelines-ui name: pipelines-ui - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-pipelines-viewer- repoRef: name: manifests path: pipeline/pipelines-viewer name: pipelines-viewer - kustomizeConfig: + overlays: + - application + parameters: + - name: generateName + value: pipeline-scheduledworkflow- repoRef: name: manifests path: pipeline/scheduledworkflow name: scheduledworkflow - kustomizeConfig: overlays: + - application - istio parameters: + - name: generateName + value: profiles- - initRequired: true name: admin value: johnDoe@acme.com @@ -263,6 +359,9 @@ spec: - kustomizeConfig: overlays: - application + parameters: + - name: generateName + value: seldon-core-operator- repoRef: name: manifests path: seldon/seldon-core-operator diff --git a/kfserving/kfserving-install/overlays/application/application.yaml b/kfserving/kfserving-install/overlays/application/application.yaml index 33982093b29..7c8036b18bc 100644 --- a/kfserving/kfserving-install/overlays/application/application.yaml +++ b/kfserving/kfserving-install/overlays/application/application.yaml @@ -1,7 +1,7 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: "kfserving" + name: $(generateName) spec: type: "kfserving" componentKinds: diff --git a/kfserving/kfserving-install/overlays/application/kustomization.yaml b/kfserving/kfserving-install/overlays/application/kustomization.yaml index 55882837a63..a3ebf35a127 100644 --- a/kfserving/kfserving-install/overlays/application/kustomization.yaml +++ b/kfserving/kfserving-install/overlays/application/kustomization.yaml @@ -4,9 +4,23 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: kfserving-parameters + behavior: merge + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: kfserving-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: kfserving - app.kubernetes.io/instance: kfserving + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: serving app.kubernetes.io/part-of: kubeflow diff --git a/kfserving/kfserving-install/overlays/application/params.env b/kfserving/kfserving-install/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/kfserving/kfserving-install/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/kfserving/kfserving-install/overlays/application/params.yaml b/kfserving/kfserving-install/overlays/application/params.yaml new file mode 100644 index 00000000000..04c3d2d8a3d --- /dev/null +++ b/kfserving/kfserving-install/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: StatefulSet +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: StatefulSet diff --git a/metadata/overlays/application/application.yaml b/metadata/overlays/application/application.yaml index 9a2164160a1..313a5bf33fe 100644 --- a/metadata/overlays/application/application.yaml +++ b/metadata/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: metadata + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: metadata - app.kubernetes.io/instance: metadata - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: metadata - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service diff --git a/metadata/overlays/application/kustomization.yaml b/metadata/overlays/application/kustomization.yaml index 7c165bdafd8..32da5dba278 100644 --- a/metadata/overlays/application/kustomization.yaml +++ b/metadata/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: metadata-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: metadata-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: metadata - app.kubernetes.io/instance: metadata + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: metadata app.kubernetes.io/part-of: kubeflow diff --git a/metadata/overlays/application/params.env b/metadata/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/metadata/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/metadata/overlays/application/params.yaml b/metadata/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/metadata/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/mpi-job/mpi-operator/overlays/application/application.yaml b/mpi-job/mpi-operator/overlays/application/application.yaml index f1ee35fa6c8..671a68ed716 100644 --- a/mpi-job/mpi-operator/overlays/application/application.yaml +++ b/mpi-job/mpi-operator/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: mpi-operator + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: mpi-operator - app.kubernetes.io/instance: mpi-operator - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: mpijob - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.7 componentKinds: - group: apps kind: Deployment diff --git a/mpi-job/mpi-operator/overlays/application/kustomization.yaml b/mpi-job/mpi-operator/overlays/application/kustomization.yaml index 8c40aba53ed..073ff7e1986 100644 --- a/mpi-job/mpi-operator/overlays/application/kustomization.yaml +++ b/mpi-job/mpi-operator/overlays/application/kustomization.yaml @@ -4,10 +4,23 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: mpi-operator-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: mpi-operator-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: mpi-operator - app.kubernetes.io/instance: mpi-operator + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: mpijob app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.7 + app.kubernetes.io/version: v0.6 diff --git a/mpi-job/mpi-operator/overlays/application/params.env b/mpi-job/mpi-operator/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/mpi-job/mpi-operator/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/mpi-job/mpi-operator/overlays/application/params.yaml b/mpi-job/mpi-operator/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/mpi-job/mpi-operator/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/mxnet-job/mxnet-operator/overlays/application/application.yaml b/mxnet-job/mxnet-operator/overlays/application/application.yaml index f4542a8c2e0..81b91ff7692 100644 --- a/mxnet-job/mxnet-operator/overlays/application/application.yaml +++ b/mxnet-job/mxnet-operator/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: mxnet-operator + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: mxnet-operator - app.kubernetes.io/instance: mxnet-operator - app.kubernetes.io/version: v0.6.0 - app.kubernetes.io/component: mxnet - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/managed-by: kfctl componentKinds: - group: apps kind: Deployment diff --git a/mxnet-job/mxnet-operator/overlays/application/kustomization.yaml b/mxnet-job/mxnet-operator/overlays/application/kustomization.yaml index 9664ea65138..1e7508337e2 100644 --- a/mxnet-job/mxnet-operator/overlays/application/kustomization.yaml +++ b/mxnet-job/mxnet-operator/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: mxnet-operator-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: mxnet-operator-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: mxnet-operator - app.kubernetes.io/instance: mxnet-operator + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/version: v0.6.0 app.kubernetes.io/component: mxnet app.kubernetes.io/part-of: kubeflow diff --git a/mxnet-job/mxnet-operator/overlays/application/params.env b/mxnet-job/mxnet-operator/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/mxnet-job/mxnet-operator/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/mxnet-job/mxnet-operator/overlays/application/params.yaml b/mxnet-job/mxnet-operator/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/mxnet-job/mxnet-operator/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/pipeline/api-service/overlays/application/application.yaml b/pipeline/api-service/overlays/application/application.yaml new file mode 100644 index 00000000000..dc5cdc17846 --- /dev/null +++ b/pipeline/api-service/overlays/application/application.yaml @@ -0,0 +1,25 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: rbac.authorization.k8s.io + kind: Role + - group: rbac.authorization.k8s.io + kind: RoleBinding + - group: core + kind: ServiceAccount + - group: core + kind: Service + descriptor: + type: "pipeline-api-server" + version: "v1beta1" + description: "api-server for kubeflow pipelines" + keywords: + - "argo" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" diff --git a/pipeline/api-service/overlays/application/kustomization.yaml b/pipeline/api-service/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..33d1783732c --- /dev/null +++ b/pipeline/api-service/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-api-server-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-api-server-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-api-server + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-api-server + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/pipeline/api-service/overlays/application/params.env b/pipeline/api-service/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/pipeline/api-service/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/pipeline/api-service/overlays/application/params.yaml b/pipeline/api-service/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/pipeline/api-service/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/pipeline/minio/overlays/application/application.yaml b/pipeline/minio/overlays/application/application.yaml new file mode 100644 index 00000000000..f4812a28261 --- /dev/null +++ b/pipeline/minio/overlays/application/application.yaml @@ -0,0 +1,23 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: PersistentVolumeClaim + - group: core + kind: Secret + - group: core + kind: Service + descriptor: + type: "pipeline-minio" + version: "v1beta1" + description: "minio component for kubeflow pipelines" + keywords: + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" diff --git a/pipeline/minio/overlays/application/kustomization.yaml b/pipeline/minio/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..8d21f99ff39 --- /dev/null +++ b/pipeline/minio/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-minio-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-minio-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-minio-app-parameters + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-minio + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/pipeline/minio/overlays/application/params.env b/pipeline/minio/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/pipeline/minio/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/pipeline/minio/overlays/application/params.yaml b/pipeline/minio/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/pipeline/minio/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/pipeline/mysql/overlays/application/application.yaml b/pipeline/mysql/overlays/application/application.yaml new file mode 100644 index 00000000000..f52caea972a --- /dev/null +++ b/pipeline/mysql/overlays/application/application.yaml @@ -0,0 +1,22 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: PersistentVolumeClaim + - group: core + kind: Service + descriptor: + type: "pipeline-mysql" + version: "v1beta1" + description: "mysql component of kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" diff --git a/pipeline/mysql/overlays/application/kustomization.yaml b/pipeline/mysql/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..659ab20b583 --- /dev/null +++ b/pipeline/mysql/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-mysql-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-mysql-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-mysql + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-mysql + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/pipeline/mysql/overlays/application/params.env b/pipeline/mysql/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/pipeline/mysql/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/pipeline/mysql/overlays/application/params.yaml b/pipeline/mysql/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/pipeline/mysql/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/pipeline/persistent-agent/overlays/application/application.yaml b/pipeline/persistent-agent/overlays/application/application.yaml new file mode 100644 index 00000000000..77f43289e40 --- /dev/null +++ b/pipeline/persistent-agent/overlays/application/application.yaml @@ -0,0 +1,20 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + descriptor: + type: "pipeline-persisent-agent" + version: "v1beta1" + description: "persistent-agent component of kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" diff --git a/pipeline/persistent-agent/overlays/application/kustomization.yaml b/pipeline/persistent-agent/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..ee49d176f3c --- /dev/null +++ b/pipeline/persistent-agent/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-persistent-agent-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-persistent-agent-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-persistent-agent + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-persistent-agent + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/pipeline/persistent-agent/overlays/application/params.env b/pipeline/persistent-agent/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/pipeline/persistent-agent/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/pipeline/persistent-agent/overlays/application/params.yaml b/pipeline/persistent-agent/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/pipeline/persistent-agent/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/pipeline/pipeline-visualization-service/overlays/application/application.yaml b/pipeline/pipeline-visualization-service/overlays/application/application.yaml new file mode 100644 index 00000000000..865afd09b38 --- /dev/null +++ b/pipeline/pipeline-visualization-service/overlays/application/application.yaml @@ -0,0 +1,20 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: Service + descriptor: + type: "pipeline-visualization-service" + version: "v1beta1" + description: "visualisation-server for kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" diff --git a/pipeline/pipeline-visualization-service/overlays/application/kustomization.yaml b/pipeline/pipeline-visualization-service/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..8afc8863278 --- /dev/null +++ b/pipeline/pipeline-visualization-service/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-visualization-service-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-visualization-service-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-visualization-service + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-visualization-service + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/pipeline/pipeline-visualization-service/overlays/application/params.env b/pipeline/pipeline-visualization-service/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/pipeline/pipeline-visualization-service/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/pipeline/pipeline-visualization-service/overlays/application/params.yaml b/pipeline/pipeline-visualization-service/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/pipeline/pipeline-visualization-service/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/pipeline/pipelines-runner/overlays/application/application.yaml b/pipeline/pipelines-runner/overlays/application/application.yaml new file mode 100644 index 00000000000..4a99a535201 --- /dev/null +++ b/pipeline/pipelines-runner/overlays/application/application.yaml @@ -0,0 +1,18 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: core + kind: ServiceAccount + descriptor: + type: "pipeline-pipelines-runner" + version: "v1beta1" + description: "pipelines-runner for kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" diff --git a/pipeline/pipelines-runner/overlays/application/kustomization.yaml b/pipeline/pipelines-runner/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..d89cd94d53d --- /dev/null +++ b/pipeline/pipelines-runner/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-pipelines-runner-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-pipelines-runner-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-pipelines-runner + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-pipelines-runner + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/pipeline/pipelines-runner/overlays/application/params.env b/pipeline/pipelines-runner/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/pipeline/pipelines-runner/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/pipeline/pipelines-runner/overlays/application/params.yaml b/pipeline/pipelines-runner/overlays/application/params.yaml new file mode 100644 index 00000000000..d2b6d06f12c --- /dev/null +++ b/pipeline/pipelines-runner/overlays/application/params.yaml @@ -0,0 +1,3 @@ +varReference: +- path: metadata/name + kind: Application diff --git a/pipeline/pipelines-ui/overlays/application/application.yaml b/pipeline/pipelines-ui/overlays/application/application.yaml new file mode 100644 index 00000000000..426d74ce79d --- /dev/null +++ b/pipeline/pipelines-ui/overlays/application/application.yaml @@ -0,0 +1,26 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: rbac.authorization.k8s.io + kind: Role + - group: rbac.authorization.k8s.io + kind: RoleBinding + - group: core + kind: ServiceAccount + - group: core + kind: Service + descriptor: + type: "pipeline-pipelines-ui" + version: "v1beta1" + description: "pipelines-ui for kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" diff --git a/pipeline/pipelines-ui/overlays/application/kustomization.yaml b/pipeline/pipelines-ui/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..b6e5eacf2cd --- /dev/null +++ b/pipeline/pipelines-ui/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-pipelines-ui-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-pipelines-ui-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-pipelines-ui + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-pipelines-ui + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/pipeline/pipelines-ui/overlays/application/params.env b/pipeline/pipelines-ui/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/pipeline/pipelines-ui/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/pipeline/pipelines-ui/overlays/application/params.yaml b/pipeline/pipelines-ui/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/pipeline/pipelines-ui/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/pipeline/pipelines-viewer/overlays/application/application.yaml b/pipeline/pipelines-viewer/overlays/application/application.yaml new file mode 100644 index 00000000000..c115efd2310 --- /dev/null +++ b/pipeline/pipelines-viewer/overlays/application/application.yaml @@ -0,0 +1,20 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + descriptor: + type: "pipeline-pipelines-viewer" + version: "v1beta1" + description: "pipelines-viewer component of kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" diff --git a/pipeline/pipelines-viewer/overlays/application/kustomization.yaml b/pipeline/pipelines-viewer/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..197f7e04908 --- /dev/null +++ b/pipeline/pipelines-viewer/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-pipelines-viewer-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-pipelines-viewer-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-pipelines-viewer + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-pipelines-viewer + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/pipeline/pipelines-viewer/overlays/application/params.env b/pipeline/pipelines-viewer/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/pipeline/pipelines-viewer/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/pipeline/pipelines-viewer/overlays/application/params.yaml b/pipeline/pipelines-viewer/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/pipeline/pipelines-viewer/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/pipeline/scheduledworkflow/overlays/application/application.yaml b/pipeline/scheduledworkflow/overlays/application/application.yaml new file mode 100644 index 00000000000..070cdca8f8a --- /dev/null +++ b/pipeline/scheduledworkflow/overlays/application/application.yaml @@ -0,0 +1,24 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: rbac.authorization.k8s.io + kind: Role + - group: rbac.authorization.k8s.io + kind: RoleBinding + - group: core + kind: ServiceAccount + descriptor: + type: "pipeline-scheduledworkflow" + version: "v1beta1" + description: "scheduledworkflow component of kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" diff --git a/pipeline/scheduledworkflow/overlays/application/kustomization.yaml b/pipeline/scheduledworkflow/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..a5e315eff9d --- /dev/null +++ b/pipeline/scheduledworkflow/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-scheduledworkflow-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-scheduledworkflow-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-scheduledworkflow + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-scheduledworkflow + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/pipeline/scheduledworkflow/overlays/application/params.env b/pipeline/scheduledworkflow/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/pipeline/scheduledworkflow/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/pipeline/scheduledworkflow/overlays/application/params.yaml b/pipeline/scheduledworkflow/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/pipeline/scheduledworkflow/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/profiles/overlays/application/application.yaml b/profiles/overlays/application/application.yaml new file mode 100644 index 00000000000..9f200c96e2b --- /dev/null +++ b/profiles/overlays/application/application.yaml @@ -0,0 +1,25 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: rbac.authorization.k8s.io + kind: Role + - group: rbac.authorization.k8s.io + kind: RoleBinding + - group: core + kind: ServiceAccount + - group: core + kind: Service + descriptor: + type: "profiles" + version: "v1beta1" + description: "provides isolated namespaces for users" + keywords: + - "profiles" + links: + - description: About + url: "https://github.com/kubeflow/kubeflow/tree/master/components/profile-controller" diff --git a/profiles/overlays/application/kustomization.yaml b/profiles/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..0a901bf9603 --- /dev/null +++ b/profiles/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: argo-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: argo-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: argo + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: argo + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/profiles/overlays/application/params.env b/profiles/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/profiles/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/profiles/overlays/application/params.yaml b/profiles/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/profiles/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/pytorch-job/pytorch-operator/overlays/application/application.yaml b/pytorch-job/pytorch-operator/overlays/application/application.yaml index a4c2b0da215..8a35e461052 100644 --- a/pytorch-job/pytorch-operator/overlays/application/application.yaml +++ b/pytorch-job/pytorch-operator/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: pytorch-operator + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: pytorch-operator - app.kubernetes.io/instance: pytorch-operator - app.kubernetes.io/version: v0.6.0 - app.kubernetes.io/component: pytorch - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/managed-by: kfctl componentKinds: - group: core kind: Service diff --git a/pytorch-job/pytorch-operator/overlays/application/kustomization.yaml b/pytorch-job/pytorch-operator/overlays/application/kustomization.yaml index 13c17e88d70..5adbd58168d 100644 --- a/pytorch-job/pytorch-operator/overlays/application/kustomization.yaml +++ b/pytorch-job/pytorch-operator/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: pytorch-operator-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pytorch-operator-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: pytorch-operator - app.kubernetes.io/instance: pytorch-operator + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/version: v0.6.0 app.kubernetes.io/component: pytorch app.kubernetes.io/part-of: kubeflow diff --git a/pytorch-job/pytorch-operator/overlays/application/params.env b/pytorch-job/pytorch-operator/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/pytorch-job/pytorch-operator/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/pytorch-job/pytorch-operator/overlays/application/params.yaml b/pytorch-job/pytorch-operator/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/pytorch-job/pytorch-operator/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/seldon/seldon-core-operator/base/seldon-operator-controller-manager-statefulset.yaml b/seldon/seldon-core-operator/base/seldon-operator-controller-manager-statefulset.yaml index 968024667b2..a19c0e43c73 100644 --- a/seldon/seldon-core-operator/base/seldon-operator-controller-manager-statefulset.yaml +++ b/seldon/seldon-core-operator/base/seldon-operator-controller-manager-statefulset.yaml @@ -13,8 +13,6 @@ metadata: spec: selector: matchLabels: - app.kubernetes.io/instance: seldon-core-operator - app.kubernetes.io/name: seldon-core-operator control-plane: seldon-controller-manager controller-tools.k8s.io: "1.0" serviceName: seldon-operator-controller-manager-service @@ -23,8 +21,6 @@ spec: annotations: prometheus.io/scrape: "true" labels: - app.kubernetes.io/instance: seldon-core-operator - app.kubernetes.io/name: seldon-core-operator control-plane: seldon-controller-manager controller-tools.k8s.io: "1.0" spec: diff --git a/seldon/seldon-core-operator/overlays/application/application.yaml b/seldon/seldon-core-operator/overlays/application/application.yaml index 34bbd8177ba..b8352ea8f2d 100644 --- a/seldon/seldon-core-operator/overlays/application/application.yaml +++ b/seldon/seldon-core-operator/overlays/application/application.yaml @@ -1,7 +1,7 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: "seldon-core-operator" + name: $(generateName) spec: type: "seldon-core-operator" componentKinds: diff --git a/seldon/seldon-core-operator/overlays/application/kustomization.yaml b/seldon/seldon-core-operator/overlays/application/kustomization.yaml index 36e6f410a1a..9e974f1a262 100644 --- a/seldon/seldon-core-operator/overlays/application/kustomization.yaml +++ b/seldon/seldon-core-operator/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: seldon-core-operator-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: seldon-core-operator-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: seldon-core-operator - app.kubernetes.io/instance: seldon-core-operator + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: seldon app.kubernetes.io/part-of: kubeflow diff --git a/seldon/seldon-core-operator/overlays/application/params.env b/seldon/seldon-core-operator/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/seldon/seldon-core-operator/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/seldon/seldon-core-operator/overlays/application/params.yaml b/seldon/seldon-core-operator/overlays/application/params.yaml new file mode 100644 index 00000000000..04c3d2d8a3d --- /dev/null +++ b/seldon/seldon-core-operator/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: StatefulSet +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: StatefulSet diff --git a/spark/spark-operator/overlays/application/kustomization.yaml b/spark/spark-operator/overlays/application/kustomization.yaml index 7f88ff73221..700afc418f1 100644 --- a/spark/spark-operator/overlays/application/kustomization.yaml +++ b/spark/spark-operator/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: spark-operator-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: spark-operator-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: sparkoperator - app.kubernetes.io/instance: spark-operator + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: spark-operator app.kubernetes.io/part-of: kubeflow diff --git a/spark/spark-operator/overlays/application/params.env b/spark/spark-operator/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/spark/spark-operator/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/spark/spark-operator/overlays/application/params.yaml b/spark/spark-operator/overlays/application/params.yaml new file mode 100644 index 00000000000..04c3d2d8a3d --- /dev/null +++ b/spark/spark-operator/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: StatefulSet +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: StatefulSet diff --git a/tensorboard/overlays/application/application.yaml b/tensorboard/overlays/application/application.yaml new file mode 100644 index 00000000000..d9e9ffe9fb7 --- /dev/null +++ b/tensorboard/overlays/application/application.yaml @@ -0,0 +1,20 @@ +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: Service + descriptor: + type: "tensorboard" + version: "v1beta1" + description: "tensorboard is the visualization toolkit of tensorflow" + keywords: + - "tensorboard" + - "tensorflow" + links: + - description: About + url: "https://www.tensorflow.org/tensorboard" diff --git a/tensorboard/overlays/application/kustomization.yaml b/tensorboard/overlays/application/kustomization.yaml new file mode 100644 index 00000000000..a35a69e1eec --- /dev/null +++ b/tensorboard/overlays/application/kustomization.yaml @@ -0,0 +1,26 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: tensorboard-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: tensorboard-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: tensorboard + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: tensorboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 diff --git a/tensorboard/overlays/application/params.env b/tensorboard/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/tensorboard/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/tensorboard/overlays/application/params.yaml b/tensorboard/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/tensorboard/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment diff --git a/tests/api-service-overlays-application_test.go b/tests/api-service-overlays-application_test.go new file mode 100644 index 00000000000..ad5dd72d698 --- /dev/null +++ b/tests/api-service-overlays-application_test.go @@ -0,0 +1,219 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writeApiServiceOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/pipeline/api-service/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: rbac.authorization.k8s.io + kind: Role + - group: rbac.authorization.k8s.io + kind: RoleBinding + - group: core + kind: ServiceAccount + - group: core + kind: Service + descriptor: + type: "pipeline-api-server" + version: "v1beta1" + description: "api-server for kubeflow pipelines" + keywords: + - "argo" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" +`) + th.writeF("/manifests/pipeline/api-service/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/pipeline/api-service/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/pipeline/api-service/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-api-server-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-api-server-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-api-server + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-api-server + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/pipeline/api-service/base/deployment.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ml-pipeline +spec: + template: + spec: + containers: + - name: ml-pipeline-api-server + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: gcr.io/ml-pipeline/api-server:0.1.23 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8888 + - containerPort: 8887 + serviceAccountName: ml-pipeline +`) + th.writeF("/manifests/pipeline/api-service/base/role-binding.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: RoleBinding +metadata: + name: ml-pipeline +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: ml-pipeline +subjects: +- kind: ServiceAccount + name: ml-pipeline +`) + th.writeF("/manifests/pipeline/api-service/base/role.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: Role +metadata: + name: ml-pipeline +rules: +- apiGroups: + - argoproj.io + resources: + - workflows + verbs: + - create + - get + - list + - watch + - update + - patch + - delete +- apiGroups: + - kubeflow.org + resources: + - scheduledworkflows + verbs: + - create + - get + - list + - update + - patch + - delete +`) + th.writeF("/manifests/pipeline/api-service/base/service-account.yaml", ` +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ml-pipeline +`) + th.writeF("/manifests/pipeline/api-service/base/service.yaml", ` +apiVersion: v1 +kind: Service +metadata: + name: ml-pipeline +spec: + ports: + - name: http + port: 8888 + protocol: TCP + targetPort: 8888 + - name: grpc + port: 8887 + protocol: TCP + targetPort: 8887 +`) + th.writeK("/manifests/pipeline/api-service/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +commonLabels: + app: ml-pipeline +resources: +- deployment.yaml +- role-binding.yaml +- role.yaml +- service-account.yaml +- service.yaml +images: +- name: gcr.io/ml-pipeline/api-server + newTag: '0.1.23' +`) +} + +func TestApiServiceOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/pipeline/api-service/overlays/application") + writeApiServiceOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../pipeline/api-service/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/application-overlays-application_test.go b/tests/application-overlays-application_test.go index bec06df7c86..76dbb238b76 100644 --- a/tests/application-overlays-application_test.go +++ b/tests/application-overlays-application_test.go @@ -18,13 +18,8 @@ func writeApplicationOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: kubeflow + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: app.k8s.io kind: Application @@ -46,6 +41,20 @@ spec: - description: About url: "https://kubeflow.org" addOwnerRef: true +`) + th.writeF("/manifests/application/application/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: StatefulSet +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: StatefulSet +`) + th.writeF("/manifests/application/application/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/application/application/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -54,9 +63,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: kubeflow-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: kubeflow-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: kubeflow - app.kubernetes.io/instance: kubeflow + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: kubeflow app.kubernetes.io/part-of: kubeflow diff --git a/tests/argo-base_test.go b/tests/argo-base_test.go index cd5828939e2..e13f96a53db 100644 --- a/tests/argo-base_test.go +++ b/tests/argo-base_test.go @@ -29,7 +29,6 @@ roleRef: subjects: - kind: ServiceAccount name: argo - namespace: kubeflow --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding @@ -129,7 +128,6 @@ apiVersion: v1 kind: ConfigMap metadata: name: workflow-controller-configmap - namespace: kubeflow data: config: | { @@ -179,7 +177,6 @@ metadata: labels: app: argo-ui name: argo-ui - namespace: kubeflow spec: progressDeadlineSeconds: 600 replicas: 1 @@ -233,7 +230,6 @@ metadata: labels: app: workflow-controller name: workflow-controller - namespace: kubeflow spec: progressDeadlineSeconds: 600 replicas: 1 @@ -289,7 +285,6 @@ apiVersion: v1 kind: ServiceAccount metadata: name: argo-ui - namespace: kubeflow `) th.writeF("/manifests/argo/base/service.yaml", ` apiVersion: v1 @@ -306,7 +301,6 @@ metadata: labels: app: argo-ui name: argo-ui - namespace: kubeflow spec: ports: - port: 80 @@ -350,6 +344,7 @@ resources: - deployment.yaml - service-account.yaml - service.yaml +namespace: kubeflow commonLabels: kustomize.component: argo images: diff --git a/tests/argo-overlays-application_test.go b/tests/argo-overlays-application_test.go new file mode 100644 index 00000000000..46aa713f06b --- /dev/null +++ b/tests/argo-overlays-application_test.go @@ -0,0 +1,548 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writeArgoOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/argo/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: core + kind: ConfigMap + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + - group: core + kind: Service + descriptor: + type: "argo" + version: "v1beta1" + description: "installs argo controller to handle argo Workflows" + keywords: + - "argo" + links: + - description: About + url: "https://argoproj.github.io/argo" +`) + th.writeF("/manifests/argo/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/argo/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/argo/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: argo-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: argo-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: argo + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: argo + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/argo/base/cluster-role-binding.yaml", ` +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + labels: + app: argo + name: argo +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: argo +subjects: +- kind: ServiceAccount + name: argo +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + labels: + app: argo-ui + name: argo-ui +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: argo-ui +subjects: +- kind: ServiceAccount + name: argo-ui +`) + th.writeF("/manifests/argo/base/cluster-role.yaml", ` +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + labels: + app: argo + name: argo +rules: +- apiGroups: + - "" + resources: + - pods + - pods/exec + verbs: + - create + - get + - list + - watch + - update + - patch +- apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - watch + - list +- apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - create + - delete +- apiGroups: + - argoproj.io + resources: + - workflows + verbs: + - get + - list + - watch + - update + - patch +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + labels: + app: argo + name: argo-ui +rules: +- apiGroups: + - "" + resources: + - pods + - pods/exec + - pods/log + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - secrets + verbs: + - get +- apiGroups: + - argoproj.io + resources: + - workflows + verbs: + - get + - list + - watch +`) + th.writeF("/manifests/argo/base/config-map.yaml", ` +apiVersion: v1 +kind: ConfigMap +metadata: + name: workflow-controller-configmap +data: + config: | + { + executorImage: $(executorImage), + containerRuntimeExecutor: $(containerRuntimeExecutor), + artifactRepository: + { + s3: { + bucket: $(artifactRepositoryBucket), + keyPrefix: $(artifactRepositoryKeyPrefix), + endpoint: $(artifactRepositoryEndpoint), + insecure: $(artifactRepositoryInsecure), + accessKeySecret: { + name: $(artifactRepositoryAccessKeySecretName), + key: $(artifactRepositoryAccessKeySecretKey) + }, + secretKeySecret: { + name: $(artifactRepositorySecretKeySecretName), + key: $(artifactRepositorySecretKeySecretKey) + } + } + } + } +`) + th.writeF("/manifests/argo/base/crd.yaml", ` +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: workflows.argoproj.io +spec: + group: argoproj.io + names: + kind: Workflow + listKind: WorkflowList + plural: workflows + shortNames: + - wf + singular: workflow + scope: Namespaced + version: v1alpha1 +`) + th.writeF("/manifests/argo/base/deployment.yaml", ` +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: argo-ui + name: argo-ui +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app: argo-ui + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + creationTimestamp: null + labels: + app: argo-ui + spec: + containers: + - env: + - name: ARGO_NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + - name: IN_CLUSTER + value: "true" + - name: BASE_HREF + value: /argo/ + image: argoproj/argoui:v2.3.0 + imagePullPolicy: IfNotPresent + name: argo-ui + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + readinessProbe: + httpGet: + path: / + port: 8001 + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + serviceAccount: argo-ui + serviceAccountName: argo-ui + terminationGracePeriodSeconds: 30 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: workflow-controller + name: workflow-controller +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app: workflow-controller + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + creationTimestamp: null + labels: + app: workflow-controller + spec: + containers: + - args: + - --configmap + - workflow-controller-configmap + command: + - workflow-controller + env: + - name: ARGO_NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: argoproj/workflow-controller:v2.3.0 + imagePullPolicy: IfNotPresent + name: workflow-controller + resources: {} + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + securityContext: {} + serviceAccount: argo + serviceAccountName: argo + terminationGracePeriodSeconds: 30 +`) + th.writeF("/manifests/argo/base/service-account.yaml", ` +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: argo +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: argo-ui +`) + th.writeF("/manifests/argo/base/service.yaml", ` +apiVersion: v1 +kind: Service +metadata: + annotations: + getambassador.io/config: |- + --- + apiVersion: ambassador/v0 + kind: Mapping + name: argo-ui-mapping + prefix: /argo/ + service: argo-ui.$(namespace) + labels: + app: argo-ui + name: argo-ui +spec: + ports: + - port: 80 + targetPort: 8001 + selector: + app: argo-ui + sessionAffinity: None + type: NodePort +`) + th.writeF("/manifests/argo/base/params.yaml", ` +varReference: +- path: data/config + kind: ConfigMap +- path: data/config + kind: Deployment +- path: metadata/annotations/getambassador.io\/config + kind: Service +`) + th.writeF("/manifests/argo/base/params.env", ` +namespace= +executorImage=argoproj/argoexec:v2.3.0 +containerRuntimeExecutor=docker +artifactRepositoryBucket=mlpipeline +artifactRepositoryKeyPrefix=artifacts +artifactRepositoryEndpoint=minio-service.kubeflow:9000 +artifactRepositoryInsecure=true +artifactRepositoryAccessKeySecretName=mlpipeline-minio-artifact +artifactRepositoryAccessKeySecretKey=accesskey +artifactRepositorySecretKeySecretName=mlpipeline-minio-artifact +artifactRepositorySecretKeySecretKey=secretkey +clusterDomain=cluster.local +`) + th.writeK("/manifests/argo/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- cluster-role-binding.yaml +- cluster-role.yaml +- config-map.yaml +- crd.yaml +- deployment.yaml +- service-account.yaml +- service.yaml +namespace: kubeflow +commonLabels: + kustomize.component: argo +images: + - name: argoproj/argoui + newName: argoproj/argoui + newTag: v2.3.0 + - name: argoproj/workflow-controller + newName: argoproj/workflow-controller + newTag: v2.3.0 +configMapGenerator: +- name: workflow-controller-parameters + env: params.env +generatorOptions: + disableNameSuffixHash: true +vars: +- name: executorImage + objref: + kind: ConfigMap + name: workflow-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.executorImage +- name: containerRuntimeExecutor + objref: + kind: ConfigMap + name: workflow-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.containerRuntimeExecutor +- name: artifactRepositoryBucket + objref: + kind: ConfigMap + name: workflow-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.artifactRepositoryBucket +- name: artifactRepositoryKeyPrefix + objref: + kind: ConfigMap + name: workflow-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.artifactRepositoryKeyPrefix +- name: artifactRepositoryEndpoint + objref: + kind: ConfigMap + name: workflow-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.artifactRepositoryEndpoint +- name: artifactRepositoryInsecure + objref: + kind: ConfigMap + name: workflow-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.artifactRepositoryInsecure +- name: artifactRepositoryAccessKeySecretName + objref: + kind: ConfigMap + name: workflow-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.artifactRepositoryAccessKeySecretName +- name: artifactRepositoryAccessKeySecretKey + objref: + kind: ConfigMap + name: workflow-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.artifactRepositoryAccessKeySecretKey +- name: artifactRepositorySecretKeySecretName + objref: + kind: ConfigMap + name: workflow-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.artifactRepositorySecretKeySecretName +- name: artifactRepositorySecretKeySecretKey + objref: + kind: ConfigMap + name: workflow-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.artifactRepositorySecretKeySecretKey +- name: namespace + objref: + kind: ConfigMap + name: workflow-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.namespace +- name: clusterDomain + objref: + kind: ConfigMap + name: workflow-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.clusterDomain +configurations: +- params.yaml +`) +} + +func TestArgoOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/argo/overlays/application") + writeArgoOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../argo/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/argo-overlays-istio_test.go b/tests/argo-overlays-istio_test.go index 44281fe5caf..1fcca9a2b86 100644 --- a/tests/argo-overlays-istio_test.go +++ b/tests/argo-overlays-istio_test.go @@ -66,7 +66,6 @@ roleRef: subjects: - kind: ServiceAccount name: argo - namespace: kubeflow --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding @@ -166,7 +165,6 @@ apiVersion: v1 kind: ConfigMap metadata: name: workflow-controller-configmap - namespace: kubeflow data: config: | { @@ -216,7 +214,6 @@ metadata: labels: app: argo-ui name: argo-ui - namespace: kubeflow spec: progressDeadlineSeconds: 600 replicas: 1 @@ -270,7 +267,6 @@ metadata: labels: app: workflow-controller name: workflow-controller - namespace: kubeflow spec: progressDeadlineSeconds: 600 replicas: 1 @@ -326,7 +322,6 @@ apiVersion: v1 kind: ServiceAccount metadata: name: argo-ui - namespace: kubeflow `) th.writeF("/manifests/argo/base/service.yaml", ` apiVersion: v1 @@ -343,7 +338,6 @@ metadata: labels: app: argo-ui name: argo-ui - namespace: kubeflow spec: ports: - port: 80 @@ -387,6 +381,7 @@ resources: - deployment.yaml - service-account.yaml - service.yaml +namespace: kubeflow commonLabels: kustomize.component: argo images: diff --git a/tests/aws-alb-ingress-controller-base_test.go b/tests/aws-alb-ingress-controller-base_test.go index e8f0e31fabd..a044e5f6640 100644 --- a/tests/aws-alb-ingress-controller-base_test.go +++ b/tests/aws-alb-ingress-controller-base_test.go @@ -63,7 +63,8 @@ roleRef: name: alb-ingress-controller subjects: - kind: ServiceAccount - name: alb-ingress-controller`) + name: alb-ingress-controller +`) th.writeF("/manifests/aws/aws-alb-ingress-controller/base/deployment.yaml", ` # Application Load Balancer (ALB) Ingress Controller Deployment Manifest. # This manifest details sensible defaults for deploying an ALB Ingress Controller. @@ -115,14 +116,17 @@ spec: # Repository location of the ALB Ingress Controller. image: docker.io/amazon/aws-alb-ingress-controller:v1.1.2 imagePullPolicy: Always - serviceAccountName: alb-ingress-controller`) + serviceAccountName: alb-ingress-controller +`) th.writeF("/manifests/aws/aws-alb-ingress-controller/base/service-account.yaml", ` apiVersion: v1 kind: ServiceAccount metadata: - name: alb-ingress-controller`) + name: alb-ingress-controller +`) th.writeF("/manifests/aws/aws-alb-ingress-controller/base/params.env", ` -clusterName=`) +clusterName= +`) th.writeK("/manifests/aws/aws-alb-ingress-controller/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/aws-alb-ingress-controller-overlays-vpc_test.go b/tests/aws-alb-ingress-controller-overlays-vpc_test.go index 177686f4958..2ff22ff7f03 100644 --- a/tests/aws-alb-ingress-controller-overlays-vpc_test.go +++ b/tests/aws-alb-ingress-controller-overlays-vpc_test.go @@ -44,7 +44,8 @@ spec: `) th.writeF("/manifests/aws/aws-alb-ingress-controller/overlays/vpc/params.env", ` vpcId= -region=us-west-2`) +region=us-west-2 +`) th.writeK("/manifests/aws/aws-alb-ingress-controller/overlays/vpc", ` bases: - ../../base @@ -119,7 +120,8 @@ roleRef: name: alb-ingress-controller subjects: - kind: ServiceAccount - name: alb-ingress-controller`) + name: alb-ingress-controller +`) th.writeF("/manifests/aws/aws-alb-ingress-controller/base/deployment.yaml", ` # Application Load Balancer (ALB) Ingress Controller Deployment Manifest. # This manifest details sensible defaults for deploying an ALB Ingress Controller. @@ -171,14 +173,17 @@ spec: # Repository location of the ALB Ingress Controller. image: docker.io/amazon/aws-alb-ingress-controller:v1.1.2 imagePullPolicy: Always - serviceAccountName: alb-ingress-controller`) + serviceAccountName: alb-ingress-controller +`) th.writeF("/manifests/aws/aws-alb-ingress-controller/base/service-account.yaml", ` apiVersion: v1 kind: ServiceAccount metadata: - name: alb-ingress-controller`) + name: alb-ingress-controller +`) th.writeF("/manifests/aws/aws-alb-ingress-controller/base/params.env", ` -clusterName=`) +clusterName= +`) th.writeK("/manifests/aws/aws-alb-ingress-controller/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/aws-efs-csi-driver-base_test.go b/tests/aws-efs-csi-driver-base_test.go index 5ee229e61fd..5fd37ca873c 100644 --- a/tests/aws-efs-csi-driver-base_test.go +++ b/tests/aws-efs-csi-driver-base_test.go @@ -79,7 +79,8 @@ rules: verbs: ["get", "list", "watch"] - apiGroups: ["storage.k8s.io"] resources: ["volumeattachments"] - verbs: ["get", "list", "watch", "update"]`) + verbs: ["get", "list", "watch", "update"] +`) th.writeF("/manifests/aws/aws-efs-csi-driver/base/csi-attacher-cluster-role-binding.yaml", ` kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 @@ -92,12 +93,14 @@ subjects: roleRef: kind: ClusterRole name: efs-csi-external-attacher-clusterrole - apiGroup: rbac.authorization.k8s.io`) + apiGroup: rbac.authorization.k8s.io +`) th.writeF("/manifests/aws/aws-efs-csi-driver/base/csi-controller-sa.yaml", ` apiVersion: v1 kind: ServiceAccount metadata: - name: efs-csi-controller-sa`) + name: efs-csi-controller-sa +`) th.writeF("/manifests/aws/aws-efs-csi-driver/base/csi-node-cluster-role.yaml", ` kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 @@ -121,7 +124,8 @@ rules: verbs: ["get", "list", "watch", "update"] - apiGroups: ["csi.storage.k8s.io"] resources: ["csinodeinfos"] - verbs: ["get", "list", "watch", "update"]`) + verbs: ["get", "list", "watch", "update"] +`) th.writeF("/manifests/aws/aws-efs-csi-driver/base/csi-node-cluster-role-binding.yaml", ` kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 @@ -134,7 +138,8 @@ subjects: roleRef: kind: ClusterRole name: efs-csi-node-clusterrole - apiGroup: rbac.authorization.k8s.io`) + apiGroup: rbac.authorization.k8s.io +`) th.writeF("/manifests/aws/aws-efs-csi-driver/base/csi-node-daemon-set.yaml", ` kind: DaemonSet apiVersion: apps/v1 @@ -218,13 +223,15 @@ spec: apiVersion: v1 kind: ServiceAccount metadata: - name: efs-csi-node-sa`) + name: efs-csi-node-sa +`) th.writeF("/manifests/aws/aws-efs-csi-driver/base/csi-default-storage.yaml", ` apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: efs-default -provisioner: efs.csi.aws.com`) +provisioner: efs.csi.aws.com +`) th.writeK("/manifests/aws/aws-efs-csi-driver/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/aws-fsx-csi-driver-base_test.go b/tests/aws-fsx-csi-driver-base_test.go index 9476fa407c5..253d2c678ed 100644 --- a/tests/aws-fsx-csi-driver-base_test.go +++ b/tests/aws-fsx-csi-driver-base_test.go @@ -90,7 +90,8 @@ rules: verbs: ["get", "list", "watch"] - apiGroups: ["storage.k8s.io"] resources: ["volumeattachments"] - verbs: ["get", "list", "watch", "update"]`) + verbs: ["get", "list", "watch", "update"] +`) th.writeF("/manifests/aws/aws-fsx-csi-driver/base/csi-attacher-cluster-role-binding.yaml", ` kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 @@ -103,7 +104,8 @@ subjects: roleRef: kind: ClusterRole name: fsx-csi-external-attacher-clusterrole - apiGroup: rbac.authorization.k8s.io`) + apiGroup: rbac.authorization.k8s.io +`) th.writeF("/manifests/aws/aws-fsx-csi-driver/base/csi-controller-cluster-role.yaml", ` kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 @@ -121,7 +123,8 @@ rules: verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["events"] - verbs: ["get", "list", "watch", "create", "update", "patch"]`) + verbs: ["get", "list", "watch", "create", "update", "patch"] +`) th.writeF("/manifests/aws/aws-fsx-csi-driver/base/csi-controller-cluster-role-binding.yaml", ` kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 @@ -134,7 +137,8 @@ subjects: roleRef: kind: ClusterRole name: external-provisioner-role - apiGroup: rbac.authorization.k8s.io`) + apiGroup: rbac.authorization.k8s.io +`) th.writeF("/manifests/aws/aws-fsx-csi-driver/base/csi-controller-sa.yaml", ` apiVersion: v1 kind: ServiceAccount @@ -178,7 +182,8 @@ subjects: roleRef: kind: ClusterRole name: fsx-csi-node-clusterrole - apiGroup: rbac.authorization.k8s.io`) + apiGroup: rbac.authorization.k8s.io +`) th.writeF("/manifests/aws/aws-fsx-csi-driver/base/csi-node-daemonset.yaml", ` kind: DaemonSet apiVersion: apps/v1 @@ -279,7 +284,8 @@ rules: verbs: ["get", "list", "watch"] - apiGroups: [""] resources: ["events"] - verbs: ["get", "list", "watch", "create", "update", "patch"]`) + verbs: ["get", "list", "watch", "create", "update", "patch"] +`) th.writeF("/manifests/aws/aws-fsx-csi-driver/base/csi-provisioner-cluster-role-binding.yaml", ` kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 @@ -292,13 +298,15 @@ subjects: roleRef: kind: ClusterRole name: fsx-external-provisioner-clusterrole - apiGroup: rbac.authorization.k8s.io`) + apiGroup: rbac.authorization.k8s.io +`) th.writeF("/manifests/aws/aws-fsx-csi-driver/base/csi-default-storage.yaml", ` apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: fsx-default -provisioner: fsx.csi.aws.com`) +provisioner: fsx.csi.aws.com +`) th.writeK("/manifests/aws/aws-fsx-csi-driver/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/basic-auth-ingress-overlays-certmanager_test.go b/tests/basic-auth-ingress-overlays-certmanager_test.go index 07ce52d6743..755c013ee25 100644 --- a/tests/basic-auth-ingress-overlays-certmanager_test.go +++ b/tests/basic-auth-ingress-overlays-certmanager_test.go @@ -77,7 +77,8 @@ resources: - certificate.yaml namespace: kubeflow commonLabels: - kustomize.component: basic-auth-ingress`) + kustomize.component: basic-auth-ingress +`) th.writeF("/manifests/gcp/basic-auth-ingress/base/cloud-endpoint.yaml", ` apiVersion: ctl.isla.solutions/v1 kind: CloudEndpoint diff --git a/tests/basic-auth-ingress-overlays-gcp-credentials_test.go b/tests/basic-auth-ingress-overlays-gcp-credentials_test.go index 704ca641390..5f9219d54ce 100644 --- a/tests/basic-auth-ingress-overlays-gcp-credentials_test.go +++ b/tests/basic-auth-ingress-overlays-gcp-credentials_test.go @@ -43,7 +43,8 @@ kind: Kustomization bases: - ../../base patchesStrategicMerge: -- gcp-credentials-patch.yaml`) +- gcp-credentials-patch.yaml +`) th.writeF("/manifests/gcp/basic-auth-ingress/base/cloud-endpoint.yaml", ` apiVersion: ctl.isla.solutions/v1 kind: CloudEndpoint diff --git a/tests/basic-auth-ingress-overlays-managed-cert_test.go b/tests/basic-auth-ingress-overlays-managed-cert_test.go index 9943631d1c0..2b61b669b47 100644 --- a/tests/basic-auth-ingress-overlays-managed-cert_test.go +++ b/tests/basic-auth-ingress-overlays-managed-cert_test.go @@ -21,7 +21,8 @@ metadata: name: gke-certificate spec: domains: - - $(hostname)`) + - $(hostname) +`) th.writeK("/manifests/gcp/basic-auth-ingress/overlays/managed-cert", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization @@ -31,7 +32,8 @@ resources: - cert.yaml namespace: kubeflow commonLabels: - kustomize.component: basic-auth-ingress`) + kustomize.component: basic-auth-ingress +`) th.writeF("/manifests/gcp/basic-auth-ingress/base/cloud-endpoint.yaml", ` apiVersion: ctl.isla.solutions/v1 kind: CloudEndpoint diff --git a/tests/bootstrap-overlays-application_test.go b/tests/bootstrap-overlays-application_test.go new file mode 100644 index 00000000000..02674a81b50 --- /dev/null +++ b/tests/bootstrap-overlays-application_test.go @@ -0,0 +1,370 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writeBootstrapOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/admission-webhook/bootstrap/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: StatefulSet + - group: core + kind: ServiceAccount + - group: core + kind: ConfigMap + descriptor: + type: "admission-webhook-bootstrap" + version: "v1alpha1" + description: "admission-webhook bootstrap installs the admission-webhook controller" + keywords: + - "admission-webook" + links: + - description: About + url: "https://github.com/kubeflow/kubeflow/tree/master/components/admission-webhook" +`) + th.writeF("/manifests/admission-webhook/bootstrap/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: StatefulSet +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: StatefulSet +`) + th.writeF("/manifests/admission-webhook/bootstrap/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/admission-webhook/bootstrap/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: admission-webhook-bootstrap-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: admission-webhook-bootstrap-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: admission-webhook-bootstrap + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: admission-webhook + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/admission-webhook/bootstrap/base/cluster-role-binding.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: cluster-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-role +subjects: +- kind: ServiceAccount + name: service-account +`) + th.writeF("/manifests/admission-webhook/bootstrap/base/cluster-role.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: cluster-role +rules: +- apiGroups: + - admissionregistration.k8s.io + resources: + - mutatingwebhookconfigurations + verbs: + - '*' +- apiGroups: + - "" + resources: + - secrets + verbs: + - '*' +- apiGroups: + - "" + resources: + - pods + verbs: + - list + - delete + +`) + th.writeF("/manifests/admission-webhook/bootstrap/base/config-map.yaml", ` +apiVersion: v1 +data: + create_ca.sh: | + #!/bin/bash + + set -e + + usage() { + cat <> ${tmpdir}/csr.conf + [req] + req_extensions = v3_req + distinguished_name = req_distinguished_name + [req_distinguished_name] + [ v3_req ] + basicConstraints = CA:FALSE + keyUsage = nonRepudiation, digitalSignature, keyEncipherment + extendedKeyUsage = serverAuth + subjectAltName = @alt_names + [alt_names] + DNS.1 = ${service} + DNS.2 = ${service}.${namespace} + DNS.3 = ${service}.${namespace}.svc + EOF + + openssl genrsa -out ${tmpdir}/server-key.pem 2048 + openssl req -new -key ${tmpdir}/server-key.pem -subj "/CN=${service}.${namespace}.svc" -out ${tmpdir}/server.csr -config ${tmpdir}/csr.conf + + # Self sign + openssl x509 -req -days 365 -in ${tmpdir}/server.csr -CA ${tmpdir}/self_ca.crt -CAkey ${tmpdir}/self_ca.key -CAcreateserial -out ${tmpdir}/server-cert.pem + + # create the secret with CA cert and server cert/key + kubectl create secret generic ${secret} \ + --from-file=key.pem=${tmpdir}/server-key.pem \ + --from-file=cert.pem=${tmpdir}/server-cert.pem \ + --dry-run -o yaml | + kubectl -n ${namespace} apply -f - + + # Webhook pod needs to be restarted so that the service reload the secret + # http://github.com/kueflow/kubeflow/issues/3227 + webhookPod=$(kubectl get pods -n ${namespace} |grep ${webhookDeploymentName} |awk '{print $1;}') + # ignore error if webhook pod does not exist + kubectl delete pod ${webhookPod} 2>/dev/null || true + echo "webhook ${webhookPod} is restarted to utilize the new secret" + + cat ${tmpdir}/self_ca.crt + + # -a means base64 encode + caBundle=$(cat ${tmpdir}/self_ca.crt | openssl enc -a -A) + echo ${caBundle} + + patchString='[{"op": "replace", "path": "/webhooks/0/clientConfig/caBundle", "value":"{{CA_BUNDLE}}"}]' + patchString=$(echo ${patchString} | sed "s|{{CA_BUNDLE}}|${caBundle}|g") + echo ${patchString} + + checkWebhookConfig() { + currentBundle=$(kubectl get mutatingwebhookconfigurations -n ${namespace} ${mutatingWebhookConfigName} -o jsonpath='{.webhooks[0].clientConfig.caBundle}') + [[ "$currentBundle" == "$caBundle" ]] + } + + while true; do + if ! checkWebhookConfig; then + echo "patching ca bundle for webhook configuration..." + kubectl patch mutatingwebhookconfiguration ${mutatingWebhookConfigName} \ + --type='json' -p="${patchString}" + fi + sleep 10 + done +kind: ConfigMap +metadata: + name: config-map +`) + th.writeF("/manifests/admission-webhook/bootstrap/base/service-account.yaml", ` +apiVersion: v1 +kind: ServiceAccount +metadata: + name: service-account +`) + th.writeF("/manifests/admission-webhook/bootstrap/base/stateful-set.yaml", ` +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: stateful-set +spec: + replicas: 1 + serviceName: service + template: + spec: + containers: + - command: + - sh + - /var/webhook-config/create_ca.sh + image: gcr.io/kubeflow-images-public/ingress-setup:latest + name: bootstrap + volumeMounts: + - mountPath: /var/webhook-config/ + name: admission-webhook-config + restartPolicy: Always + serviceAccountName: service-account + volumes: + - configMap: + name: config-map + name: admission-webhook-config + # Workaround for https://github.com/kubernetes-sigs/kustomize/issues/677 + volumeClaimTemplates: [] +`) + th.writeF("/manifests/admission-webhook/bootstrap/base/params.yaml", ` +varReference: +- path: data/create_ca.sh + kind: ConfigMap +`) + th.writeF("/manifests/admission-webhook/bootstrap/base/params.env", ` +namespace=kubeflow +webhookNamePrefix=admission-webhook- +`) + th.writeK("/manifests/admission-webhook/bootstrap/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- cluster-role-binding.yaml +- cluster-role.yaml +- config-map.yaml +- service-account.yaml +- stateful-set.yaml +commonLabels: + kustomize.component: admission-webhook-bootstrap +namePrefix: admission-webhook-bootstrap- +images: + - name: gcr.io/kubeflow-images-public/ingress-setup + newName: gcr.io/kubeflow-images-public/ingress-setup + newTag: latest +generatorOptions: + disableNameSuffixHash: true +configurations: +- params.yaml +namespace: kubeflow +configMapGenerator: +- name: config-map + behavior: merge + env: params.env +vars: +- name: webhookNamePrefix + objref: + kind: ConfigMap + name: config-map + apiVersion: v1 + fieldref: + fieldpath: data.webhookNamePrefix +- name: namespace + objref: + kind: ConfigMap + name: config-map + apiVersion: v1 + fieldref: + fieldpath: data.namespace +`) +} + +func TestBootstrapOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/admission-webhook/bootstrap/overlays/application") + writeBootstrapOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../admission-webhook/bootstrap/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/centraldashboard-base_test.go b/tests/centraldashboard-base_test.go index e63883dbbee..b6044e92ffe 100644 --- a/tests/centraldashboard-base_test.go +++ b/tests/centraldashboard-base_test.go @@ -166,11 +166,13 @@ varReference: - path: spec/template/spec/containers/0/env/0/value kind: Deployment - path: spec/template/spec/containers/0/env/1/value - kind: Deployment`) + kind: Deployment +`) th.writeF("/manifests/common/centraldashboard/base/params.env", ` clusterDomain=cluster.local userid-header= -userid-prefix=`) +userid-prefix= +`) th.writeK("/manifests/common/centraldashboard/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/centraldashboard-overlays-application_test.go b/tests/centraldashboard-overlays-application_test.go index bde9dac6b50..26695d7539e 100644 --- a/tests/centraldashboard-overlays-application_test.go +++ b/tests/centraldashboard-overlays-application_test.go @@ -18,16 +18,8 @@ func writeCentraldashboardOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: centraldashboard + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: - app.kubernetes.io/instance: centraldashboard - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: centraldashboard - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: ConfigMap @@ -67,6 +59,20 @@ spec: url: https://github.com/kubeflow/kubeflow/tree/master/components/centraldashboard addOwnerRef: true +`) + th.writeF("/manifests/common/centraldashboard/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/common/centraldashboard/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/common/centraldashboard/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -75,9 +81,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: centraldashboard-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: centraldashboard-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: centraldashboard - app.kubernetes.io/instance: centraldashboard + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: centraldashboard app.kubernetes.io/part-of: kubeflow @@ -235,11 +254,13 @@ varReference: - path: spec/template/spec/containers/0/env/0/value kind: Deployment - path: spec/template/spec/containers/0/env/1/value - kind: Deployment`) + kind: Deployment +`) th.writeF("/manifests/common/centraldashboard/base/params.env", ` clusterDomain=cluster.local userid-header= -userid-prefix=`) +userid-prefix= +`) th.writeK("/manifests/common/centraldashboard/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/centraldashboard-overlays-istio_test.go b/tests/centraldashboard-overlays-istio_test.go index 94596f3bd8b..ea9700dfffd 100644 --- a/tests/centraldashboard-overlays-istio_test.go +++ b/tests/centraldashboard-overlays-istio_test.go @@ -204,11 +204,13 @@ varReference: - path: spec/template/spec/containers/0/env/0/value kind: Deployment - path: spec/template/spec/containers/0/env/1/value - kind: Deployment`) + kind: Deployment +`) th.writeF("/manifests/common/centraldashboard/base/params.env", ` clusterDomain=cluster.local userid-header= -userid-prefix=`) +userid-prefix= +`) th.writeK("/manifests/common/centraldashboard/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/cloud-endpoints-overlays-gcp-credentials_test.go b/tests/cloud-endpoints-overlays-gcp-credentials_test.go index a23ab9d36d9..f9afe155476 100644 --- a/tests/cloud-endpoints-overlays-gcp-credentials_test.go +++ b/tests/cloud-endpoints-overlays-gcp-credentials_test.go @@ -43,7 +43,8 @@ kind: Kustomization bases: - ../../base patchesStrategicMerge: -- gcp-credentials-patch.yaml`) +- gcp-credentials-patch.yaml +`) th.writeF("/manifests/gcp/cloud-endpoints/base/cluster-role-binding.yaml", ` apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding diff --git a/tests/fluentd-cloud-watch-base_test.go b/tests/fluentd-cloud-watch-base_test.go index 01eebfd1a9b..14c2cd1508e 100644 --- a/tests/fluentd-cloud-watch-base_test.go +++ b/tests/fluentd-cloud-watch-base_test.go @@ -24,7 +24,8 @@ rules: resources: - namespaces - pods - verbs: ["get", "list", "watch"]`) + verbs: ["get", "list", "watch"] +`) th.writeF("/manifests/aws/fluentd-cloud-watch/base/cluster-role-binding.yaml", ` apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding @@ -37,7 +38,8 @@ roleRef: subjects: - kind: ServiceAccount name: fluentd - namespace: kube-system`) + namespace: kube-system +`) th.writeF("/manifests/aws/fluentd-cloud-watch/base/configmap.yaml", ` apiVersion: v1 kind: ConfigMap @@ -160,7 +162,8 @@ data: retry_forever true - `) + +`) th.writeF("/manifests/aws/fluentd-cloud-watch/base/daemonset.yaml", ` apiVersion: apps/v1 kind: DaemonSet @@ -235,7 +238,8 @@ spec: apiVersion: v1 kind: ServiceAccount metadata: - name: fluentd`) + name: fluentd +`) th.writeF("/manifests/aws/fluentd-cloud-watch/base/params.env", ` region=us-west-2 clusterName= diff --git a/tests/iap-ingress-base_test.go b/tests/iap-ingress-base_test.go index 7e5c7d54930..c391896dee3 100644 --- a/tests/iap-ingress-base_test.go +++ b/tests/iap-ingress-base_test.go @@ -545,7 +545,8 @@ varReference: - path: data/healthcheck_route.yaml kind: ConfigMap - path: spec/domains - kind: ManagedCertificate`) + kind: ManagedCertificate +`) th.writeF("/manifests/gcp/iap-ingress/base/params.env", ` namespace=kubeflow appName=kubeflow @@ -557,7 +558,8 @@ oauthSecretName=kubeflow-oauth project= adminSaSecretName=admin-gcp-sa tlsSecretName=envoy-ingress-tls -istioNamespace=istio-system`) +istioNamespace=istio-system +`) th.writeK("/manifests/gcp/iap-ingress/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization @@ -670,7 +672,8 @@ vars: fieldref: fieldpath: data.istioNamespace configurations: -- params.yaml`) +- params.yaml +`) } func TestIapIngressBase(t *testing.T) { diff --git a/tests/iap-ingress-overlays-certmanager_test.go b/tests/iap-ingress-overlays-certmanager_test.go index 40d394b60ff..69be5c95138 100644 --- a/tests/iap-ingress-overlays-certmanager_test.go +++ b/tests/iap-ingress-overlays-certmanager_test.go @@ -622,7 +622,8 @@ varReference: - path: data/healthcheck_route.yaml kind: ConfigMap - path: spec/domains - kind: ManagedCertificate`) + kind: ManagedCertificate +`) th.writeF("/manifests/gcp/iap-ingress/base/params.env", ` namespace=kubeflow appName=kubeflow @@ -634,7 +635,8 @@ oauthSecretName=kubeflow-oauth project= adminSaSecretName=admin-gcp-sa tlsSecretName=envoy-ingress-tls -istioNamespace=istio-system`) +istioNamespace=istio-system +`) th.writeK("/manifests/gcp/iap-ingress/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization @@ -747,7 +749,8 @@ vars: fieldref: fieldpath: data.istioNamespace configurations: -- params.yaml`) +- params.yaml +`) } func TestIapIngressOverlaysCertmanager(t *testing.T) { diff --git a/tests/iap-ingress-overlays-gcp-credentials_test.go b/tests/iap-ingress-overlays-gcp-credentials_test.go index ed234321403..9d3854a3ae1 100644 --- a/tests/iap-ingress-overlays-gcp-credentials_test.go +++ b/tests/iap-ingress-overlays-gcp-credentials_test.go @@ -600,7 +600,8 @@ varReference: - path: data/healthcheck_route.yaml kind: ConfigMap - path: spec/domains - kind: ManagedCertificate`) + kind: ManagedCertificate +`) th.writeF("/manifests/gcp/iap-ingress/base/params.env", ` namespace=kubeflow appName=kubeflow @@ -612,7 +613,8 @@ oauthSecretName=kubeflow-oauth project= adminSaSecretName=admin-gcp-sa tlsSecretName=envoy-ingress-tls -istioNamespace=istio-system`) +istioNamespace=istio-system +`) th.writeK("/manifests/gcp/iap-ingress/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization @@ -725,7 +727,8 @@ vars: fieldref: fieldpath: data.istioNamespace configurations: -- params.yaml`) +- params.yaml +`) } func TestIapIngressOverlaysGcpCredentials(t *testing.T) { diff --git a/tests/iap-ingress-overlays-managed-cert_test.go b/tests/iap-ingress-overlays-managed-cert_test.go index 9d41be6734e..fb316498c24 100644 --- a/tests/iap-ingress-overlays-managed-cert_test.go +++ b/tests/iap-ingress-overlays-managed-cert_test.go @@ -565,7 +565,8 @@ varReference: - path: data/healthcheck_route.yaml kind: ConfigMap - path: spec/domains - kind: ManagedCertificate`) + kind: ManagedCertificate +`) th.writeF("/manifests/gcp/iap-ingress/base/params.env", ` namespace=kubeflow appName=kubeflow @@ -577,7 +578,8 @@ oauthSecretName=kubeflow-oauth project= adminSaSecretName=admin-gcp-sa tlsSecretName=envoy-ingress-tls -istioNamespace=istio-system`) +istioNamespace=istio-system +`) th.writeK("/manifests/gcp/iap-ingress/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization @@ -690,7 +692,8 @@ vars: fieldref: fieldpath: data.istioNamespace configurations: -- params.yaml`) +- params.yaml +`) } func TestIapIngressOverlaysManagedCert(t *testing.T) { diff --git a/tests/istio-ingress-base_test.go b/tests/istio-ingress-base_test.go index 6cbc4107a14..2c2484c588a 100644 --- a/tests/istio-ingress-base_test.go +++ b/tests/istio-ingress-base_test.go @@ -47,7 +47,8 @@ spec: port: name: http number: 80 - protocol: HTTP`) + protocol: HTTP +`) th.writeK("/manifests/aws/istio-ingress/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/istio-ingress-overlays-cognito_test.go b/tests/istio-ingress-overlays-cognito_test.go index c3a16fadafd..4da5a000a9a 100644 --- a/tests/istio-ingress-overlays-cognito_test.go +++ b/tests/istio-ingress-overlays-cognito_test.go @@ -30,12 +30,14 @@ metadata: th.writeF("/manifests/aws/istio-ingress/overlays/cognito/params.yaml", ` varReference: - path: metadata/annotations - kind: Ingress`) + kind: Ingress +`) th.writeF("/manifests/aws/istio-ingress/overlays/cognito/params.env", ` CognitoUserPoolArn= CognitoAppClientId= CognitoUserPoolDomain= -certArn=`) +certArn= +`) th.writeK("/manifests/aws/istio-ingress/overlays/cognito", ` bases: - ../../base @@ -74,7 +76,8 @@ vars: fieldref: fieldpath: data.certArn configurations: -- params.yaml`) +- params.yaml +`) th.writeF("/manifests/aws/istio-ingress/base/ingress.yaml", ` apiVersion: extensions/v1beta1 # networking.k8s.io/v1beta1 kind: Ingress @@ -108,7 +111,8 @@ spec: port: name: http number: 80 - protocol: HTTP`) + protocol: HTTP +`) th.writeK("/manifests/aws/istio-ingress/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/istio-ingress-overlays-oidc_test.go b/tests/istio-ingress-overlays-oidc_test.go index 7d2090d5e13..c88b04f9171 100644 --- a/tests/istio-ingress-overlays-oidc_test.go +++ b/tests/istio-ingress-overlays-oidc_test.go @@ -39,7 +39,8 @@ oidcAuthorizationEndpoint= oidcTokenEndpoint= oidcUserInfoEndpoint= oidcSecretName=istio-oidc-secret -certArn=`) +certArn= +`) th.writeF("/manifests/aws/istio-ingress/overlays/oidc/secrets.env", ` clientId= clientSecret= @@ -101,7 +102,8 @@ vars: fieldref: fieldpath: data.certArn configurations: -- params.yaml`) +- params.yaml +`) th.writeF("/manifests/aws/istio-ingress/base/ingress.yaml", ` apiVersion: extensions/v1beta1 # networking.k8s.io/v1beta1 kind: Ingress @@ -135,7 +137,8 @@ spec: port: name: http number: 80 - protocol: HTTP`) + protocol: HTTP +`) th.writeK("/manifests/aws/istio-ingress/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/jupyter-web-app-base_test.go b/tests/jupyter-web-app-base_test.go index 303e720b2e8..0af933503e1 100644 --- a/tests/jupyter-web-app-base_test.go +++ b/tests/jupyter-web-app-base_test.go @@ -344,7 +344,8 @@ varReference: - path: spec/template/spec/containers/0/env/2/value kind: Deployment - path: spec/template/spec/containers/0/env/3/value - kind: Deployment`) + kind: Deployment +`) th.writeF("/manifests/jupyter/jupyter-web-app/base/params.env", ` UI=default ROK_SECRET_NAME=secret-rok-{username} @@ -352,7 +353,8 @@ policy=Always prefix=jupyter clusterDomain=cluster.local userid-header= -userid-prefix=`) +userid-prefix= +`) th.writeK("/manifests/jupyter/jupyter-web-app/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/jupyter-web-app-overlays-application_test.go b/tests/jupyter-web-app-overlays-application_test.go index edc1d1a5678..281ce737a66 100644 --- a/tests/jupyter-web-app-overlays-application_test.go +++ b/tests/jupyter-web-app-overlays-application_test.go @@ -18,16 +18,8 @@ func writeJupyterWebAppOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: jupyter-web-app + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: jupyter-web-app - app.kubernetes.io/instance: jupyter-web-app - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: jupyter - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: ConfigMap @@ -62,6 +54,20 @@ spec: url: https://www.kubeflow.org/docs/notebooks addOwnerRef: true +`) + th.writeF("/manifests/jupyter/jupyter-web-app/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/jupyter/jupyter-web-app/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/jupyter/jupyter-web-app/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -70,9 +76,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: jupyter-web-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: jupyter-web-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: jupyter-web-app - app.kubernetes.io/instance: jupyter-web-app + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: jupyter app.kubernetes.io/part-of: kubeflow @@ -408,7 +427,8 @@ varReference: - path: spec/template/spec/containers/0/env/2/value kind: Deployment - path: spec/template/spec/containers/0/env/3/value - kind: Deployment`) + kind: Deployment +`) th.writeF("/manifests/jupyter/jupyter-web-app/base/params.env", ` UI=default ROK_SECRET_NAME=secret-rok-{username} @@ -416,7 +436,8 @@ policy=Always prefix=jupyter clusterDomain=cluster.local userid-header= -userid-prefix=`) +userid-prefix= +`) th.writeK("/manifests/jupyter/jupyter-web-app/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/jupyter-web-app-overlays-istio_test.go b/tests/jupyter-web-app-overlays-istio_test.go index 00699ba2f29..19c03263ce5 100644 --- a/tests/jupyter-web-app-overlays-istio_test.go +++ b/tests/jupyter-web-app-overlays-istio_test.go @@ -383,7 +383,8 @@ varReference: - path: spec/template/spec/containers/0/env/2/value kind: Deployment - path: spec/template/spec/containers/0/env/3/value - kind: Deployment`) + kind: Deployment +`) th.writeF("/manifests/jupyter/jupyter-web-app/base/params.env", ` UI=default ROK_SECRET_NAME=secret-rok-{username} @@ -391,7 +392,8 @@ policy=Always prefix=jupyter clusterDomain=cluster.local userid-header= -userid-prefix=`) +userid-prefix= +`) th.writeK("/manifests/jupyter/jupyter-web-app/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/katib-controller-overlays-application_test.go b/tests/katib-controller-overlays-application_test.go index d7389a0a81e..774e8e8a4a3 100644 --- a/tests/katib-controller-overlays-application_test.go +++ b/tests/katib-controller-overlays-application_test.go @@ -18,16 +18,8 @@ func writeKatibControllerOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: katib-controller + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: katib-controller - app.kubernetes.io/instance: katib-controller - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: katib - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service @@ -77,6 +69,20 @@ spec: - description: About url: "https://github.com/kubeflow/katib" addOwnerRef: true +`) + th.writeF("/manifests/katib-v1alpha2/katib-controller/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/katib-v1alpha2/katib-controller/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/katib-v1alpha2/katib-controller/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -85,9 +91,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: katib-controller-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: katib-controller-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: katib-controller - app.kubernetes.io/instance: katib-controller + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: katib app.kubernetes.io/part-of: kubeflow diff --git a/tests/katib-db-overlays-application_test.go b/tests/katib-db-overlays-application_test.go index 7b06b75fc72..69357def377 100644 --- a/tests/katib-db-overlays-application_test.go +++ b/tests/katib-db-overlays-application_test.go @@ -18,16 +18,8 @@ func writeKatibDbOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: katib-db + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: katib-db - app.kubernetes.io/instance: katib-db - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: katib - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service @@ -73,6 +65,20 @@ spec: - description: About url: "https://github.com/kubeflow/katib" addOwnerRef: true +`) + th.writeF("/manifests/katib-v1alpha2/katib-db/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/katib-v1alpha2/katib-db/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/katib-v1alpha2/katib-db/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -81,9 +87,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: katib-db-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: katib-db-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: katib-db - app.kubernetes.io/instance: katib-db + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: katib app.kubernetes.io/part-of: kubeflow diff --git a/tests/katib-manager-overlays-application_test.go b/tests/katib-manager-overlays-application_test.go index 99e61532560..733872d8b08 100644 --- a/tests/katib-manager-overlays-application_test.go +++ b/tests/katib-manager-overlays-application_test.go @@ -18,16 +18,8 @@ func writeKatibManagerOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: katib-manager + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: katib-manager - app.kubernetes.io/instance: katib-manager - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: katib - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service @@ -69,6 +61,20 @@ spec: - description: About url: "https://github.com/kubeflow/katib" addOwnerRef: true +`) + th.writeF("/manifests/katib-v1alpha2/katib-manager/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/katib-v1alpha2/katib-manager/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/katib-v1alpha2/katib-manager/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -77,9 +83,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: katib-manager-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: katib-manager-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: katib-manager - app.kubernetes.io/instance: katib-manager + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: katib app.kubernetes.io/part-of: kubeflow diff --git a/tests/katib-ui-overlays-application_test.go b/tests/katib-ui-overlays-application_test.go index a0ec835586a..972c766487e 100644 --- a/tests/katib-ui-overlays-application_test.go +++ b/tests/katib-ui-overlays-application_test.go @@ -18,16 +18,8 @@ func writeKatibUiOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: katib-ui + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: katib-ui - app.kubernetes.io/instance: katib-ui - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: katib - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service @@ -71,6 +63,20 @@ spec: - description: About url: "https://github.com/kubeflow/katib" addOwnerRef: true +`) + th.writeF("/manifests/katib-v1alpha2/katib-ui/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/katib-v1alpha2/katib-ui/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/katib-v1alpha2/katib-ui/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -79,9 +85,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: katib-ui-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: katib-ui-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: katib-ui - app.kubernetes.io/instance: katib-ui + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: katib app.kubernetes.io/part-of: kubeflow diff --git a/tests/kfserving-install-overlays-application_test.go b/tests/kfserving-install-overlays-application_test.go index 0d1dbf23151..5786d3d9041 100644 --- a/tests/kfserving-install-overlays-application_test.go +++ b/tests/kfserving-install-overlays-application_test.go @@ -18,7 +18,7 @@ func writeKfservingInstallOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: "kfserving" + name: $(generateName) spec: type: "kfserving" componentKinds: @@ -47,6 +47,20 @@ spec: links: - description: About url: "https://github.com/kubeflow/kfserving" +`) + th.writeF("/manifests/kfserving/kfserving-install/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: StatefulSet +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: StatefulSet +`) + th.writeF("/manifests/kfserving/kfserving-install/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/kfserving/kfserving-install/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -55,9 +69,23 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: kfserving-parameters + behavior: merge + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: kfserving-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: kfserving - app.kubernetes.io/instance: kfserving + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: serving app.kubernetes.io/part-of: kubeflow diff --git a/tests/metadata-base_test.go b/tests/metadata-base_test.go index 040fd92ab27..276f8378969 100644 --- a/tests/metadata-base_test.go +++ b/tests/metadata-base_test.go @@ -387,7 +387,8 @@ vars: name: ui apiVersion: v1 fieldref: - fieldpath: metadata.name`) + fieldpath: metadata.name +`) } func TestMetadataBase(t *testing.T) { diff --git a/tests/metadata-overlays-application_test.go b/tests/metadata-overlays-application_test.go index 3d370a56e8d..9fd18e3189c 100644 --- a/tests/metadata-overlays-application_test.go +++ b/tests/metadata-overlays-application_test.go @@ -18,16 +18,8 @@ func writeMetadataOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: metadata + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: metadata - app.kubernetes.io/instance: metadata - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: metadata - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service @@ -55,6 +47,20 @@ spec: - description: Docs url: "https://www.kubeflow.org/docs/components/misc/metadata/" addOwnerRef: true +`) + th.writeF("/manifests/metadata/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/metadata/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/metadata/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -63,9 +69,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: metadata-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: metadata-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: metadata - app.kubernetes.io/instance: metadata + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: metadata app.kubernetes.io/part-of: kubeflow @@ -444,7 +463,8 @@ vars: name: ui apiVersion: v1 fieldref: - fieldpath: metadata.name`) + fieldpath: metadata.name +`) } func TestMetadataOverlaysApplication(t *testing.T) { diff --git a/tests/metadata-overlays-istio_test.go b/tests/metadata-overlays-istio_test.go index f543ded883f..431ec4b4e27 100644 --- a/tests/metadata-overlays-istio_test.go +++ b/tests/metadata-overlays-istio_test.go @@ -425,7 +425,8 @@ vars: name: ui apiVersion: v1 fieldref: - fieldpath: metadata.name`) + fieldpath: metadata.name +`) } func TestMetadataOverlaysIstio(t *testing.T) { diff --git a/tests/metrics-collector-overlays-application_test.go b/tests/metrics-collector-overlays-application_test.go index 073b005df48..0b293ea6371 100644 --- a/tests/metrics-collector-overlays-application_test.go +++ b/tests/metrics-collector-overlays-application_test.go @@ -18,16 +18,8 @@ func writeMetricsCollectorOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: metrics-collector + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: metrics-collector - app.kubernetes.io/instance: metrics-collector - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: katib - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: ConfigMap @@ -69,6 +61,14 @@ spec: - description: About url: "https://github.com/kubeflow/katib" addOwnerRef: true +`) + th.writeF("/manifests/katib-v1alpha2/metrics-collector/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +`) + th.writeF("/manifests/katib-v1alpha2/metrics-collector/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/katib-v1alpha2/metrics-collector/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -77,9 +77,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: metrics-collector-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: metrics-collector-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: metrics-collector - app.kubernetes.io/instance: metrics-collector + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: katib app.kubernetes.io/part-of: kubeflow diff --git a/tests/minio-base_test.go b/tests/minio-base_test.go index de4598833f4..88e0341e936 100644 --- a/tests/minio-base_test.go +++ b/tests/minio-base_test.go @@ -86,9 +86,11 @@ varReference: - path: spec/template/spec/volumes/persistentVolumeClaim/claimName kind: Deployment - path: metadata/name - kind: PersistentVolumeClaim`) + kind: PersistentVolumeClaim +`) th.writeF("/manifests/pipeline/minio/base/params.env", ` -minioPvcName=`) +minioPvcName= +`) th.writeK("/manifests/pipeline/minio/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/minio-overlays-application_test.go b/tests/minio-overlays-application_test.go new file mode 100644 index 00000000000..4cc48a77429 --- /dev/null +++ b/tests/minio-overlays-application_test.go @@ -0,0 +1,221 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writeMinioOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/pipeline/minio/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: PersistentVolumeClaim + - group: core + kind: Secret + - group: core + kind: Service + descriptor: + type: "pipeline-minio" + version: "v1beta1" + description: "minio component for kubeflow pipelines" + keywords: + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" +`) + th.writeF("/manifests/pipeline/minio/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/pipeline/minio/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/pipeline/minio/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-minio-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-minio-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-minio-app-parameters + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-minio + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/pipeline/minio/base/deployment.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: minio +spec: + strategy: + type: Recreate + template: + spec: + containers: + - name: minio + args: + - server + - /data + env: + - name: MINIO_ACCESS_KEY + value: minio + - name: MINIO_SECRET_KEY + value: minio123 + image: minio/minio:RELEASE.2018-02-09T22-40-05Z + ports: + - containerPort: 9000 + volumeMounts: + - mountPath: /data + name: data + subPath: minio + volumes: + - name: data + persistentVolumeClaim: + claimName: $(minioPvcName) +`) + th.writeF("/manifests/pipeline/minio/base/secret.yaml", ` +apiVersion: v1 +data: + accesskey: bWluaW8= + secretkey: bWluaW8xMjM= +kind: Secret +metadata: + name: mlpipeline-minio-artifact +type: Opaque +`) + th.writeF("/manifests/pipeline/minio/base/service.yaml", ` +apiVersion: v1 +kind: Service +metadata: + name: minio-service +spec: + ports: + - port: 9000 + protocol: TCP + targetPort: 9000 + selector: + app: minio +`) + th.writeF("/manifests/pipeline/minio/base/persistent-volume-claim.yaml", ` +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: $(minioPvcName) +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi +`) + th.writeF("/manifests/pipeline/minio/base/params.yaml", ` +varReference: +- path: spec/template/spec/volumes/persistentVolumeClaim/claimName + kind: Deployment +- path: metadata/name + kind: PersistentVolumeClaim +`) + th.writeF("/manifests/pipeline/minio/base/params.env", ` +minioPvcName= +`) + th.writeK("/manifests/pipeline/minio/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +commonLabels: + app: minio +resources: +- deployment.yaml +- secret.yaml +- service.yaml +- persistent-volume-claim.yaml +configMapGenerator: +- name: pipeline-minio-parameters + env: params.env +generatorOptions: + disableNameSuffixHash: true +vars: +- name: minioPvcName + objref: + kind: ConfigMap + name: pipeline-minio-parameters + apiVersion: v1 + fieldref: + fieldpath: data.minioPvcName +images: +- name: minio/minio + newTag: RELEASE.2018-02-09T22-40-05Z +configurations: +- params.yaml +`) +} + +func TestMinioOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/pipeline/minio/overlays/application") + writeMinioOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../pipeline/minio/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/minio-overlays-minioPd_test.go b/tests/minio-overlays-minioPd_test.go index fcb14aeb772..b99c5629bf9 100644 --- a/tests/minio-overlays-minioPd_test.go +++ b/tests/minio-overlays-minioPd_test.go @@ -35,7 +35,8 @@ metadata: name: $(minioPvcName) spec: volumeName: $(minioPvName) - storageClassName: ""`) + storageClassName: "" +`) th.writeF("/manifests/pipeline/minio/overlays/minioPd/params.yaml", ` varReference: - path: spec/gcePersistentDisk/pdName @@ -156,9 +157,11 @@ varReference: - path: spec/template/spec/volumes/persistentVolumeClaim/claimName kind: Deployment - path: metadata/name - kind: PersistentVolumeClaim`) + kind: PersistentVolumeClaim +`) th.writeF("/manifests/pipeline/minio/base/params.env", ` -minioPvcName=`) +minioPvcName= +`) th.writeK("/manifests/pipeline/minio/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/mpi-operator-overlays-application_test.go b/tests/mpi-operator-overlays-application_test.go index e840989ed41..0cbc2844565 100644 --- a/tests/mpi-operator-overlays-application_test.go +++ b/tests/mpi-operator-overlays-application_test.go @@ -18,16 +18,8 @@ func writeMpiOperatorOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: mpi-operator + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: mpi-operator - app.kubernetes.io/instance: mpi-operator - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: mpijob - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.7 componentKinds: - group: apps kind: Deployment @@ -45,6 +37,20 @@ spec: links: - description: About url: "https://github.com/kubeflow/mpi-operator" +`) + th.writeF("/manifests/mpi-job/mpi-operator/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/mpi-job/mpi-operator/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/mpi-job/mpi-operator/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -53,13 +59,26 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: mpi-operator-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: mpi-operator-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: mpi-operator - app.kubernetes.io/instance: mpi-operator + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: mpijob app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.7 + app.kubernetes.io/version: v0.6 `) th.writeF("/manifests/mpi-job/mpi-operator/base/cluster-role-binding.yaml", ` apiVersion: rbac.authorization.k8s.io/v1 diff --git a/tests/mxnet-operator-base_test.go b/tests/mxnet-operator-base_test.go index 074c59b169d..146b6b2f189 100644 --- a/tests/mxnet-operator-base_test.go +++ b/tests/mxnet-operator-base_test.go @@ -27,7 +27,8 @@ roleRef: name: mxnet-operator subjects: - kind: ServiceAccount - name: mxnet-operator`) + name: mxnet-operator +`) th.writeF("/manifests/mxnet-job/mxnet-operator/base/cluster-role.yaml", ` apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole @@ -77,7 +78,8 @@ rules: resources: - deployments verbs: - - '*'`) + - '*' +`) th.writeF("/manifests/mxnet-job/mxnet-operator/base/crd.yaml", ` apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition @@ -129,7 +131,8 @@ kind: ServiceAccount metadata: labels: app: mxnet-operator - name: mxnet-operator`) + name: mxnet-operator +`) th.writeK("/manifests/mxnet-job/mxnet-operator/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/mxnet-operator-overlays-application_test.go b/tests/mxnet-operator-overlays-application_test.go index 4f91da32baa..310c1d07f38 100644 --- a/tests/mxnet-operator-overlays-application_test.go +++ b/tests/mxnet-operator-overlays-application_test.go @@ -18,16 +18,8 @@ func writeMxnetOperatorOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: mxnet-operator + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: mxnet-operator - app.kubernetes.io/instance: mxnet-operator - app.kubernetes.io/version: v0.6.0 - app.kubernetes.io/component: mxnet - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/managed-by: kfctl componentKinds: - group: apps kind: Deployment @@ -53,6 +45,20 @@ spec: - description: About url: "https://github.com/kubeflow/mxnet-operator" addOwnerRef: true +`) + th.writeF("/manifests/mxnet-job/mxnet-operator/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/mxnet-job/mxnet-operator/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/mxnet-job/mxnet-operator/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -61,9 +67,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: mxnet-operator-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: mxnet-operator-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: mxnet-operator - app.kubernetes.io/instance: mxnet-operator + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/version: v0.6.0 app.kubernetes.io/component: mxnet app.kubernetes.io/part-of: kubeflow @@ -82,7 +101,8 @@ roleRef: name: mxnet-operator subjects: - kind: ServiceAccount - name: mxnet-operator`) + name: mxnet-operator +`) th.writeF("/manifests/mxnet-job/mxnet-operator/base/cluster-role.yaml", ` apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole @@ -132,7 +152,8 @@ rules: resources: - deployments verbs: - - '*'`) + - '*' +`) th.writeF("/manifests/mxnet-job/mxnet-operator/base/crd.yaml", ` apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition @@ -184,7 +205,8 @@ kind: ServiceAccount metadata: labels: app: mxnet-operator - name: mxnet-operator`) + name: mxnet-operator +`) th.writeK("/manifests/mxnet-job/mxnet-operator/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/mysql-base_test.go b/tests/mysql-base_test.go index 66a6380f574..b73c2be268f 100644 --- a/tests/mysql-base_test.go +++ b/tests/mysql-base_test.go @@ -60,13 +60,15 @@ spec: - ReadWriteOnce resources: requests: - storage: 20Gi`) + storage: 20Gi +`) th.writeF("/manifests/pipeline/mysql/base/params.yaml", ` varReference: - path: spec/template/spec/volumes/persistentVolumeClaim/claimName kind: Deployment - path: metadata/name - kind: PersistentVolumeClaim`) + kind: PersistentVolumeClaim +`) th.writeF("/manifests/pipeline/mysql/base/params.env", ` mysqlPvcName= `) diff --git a/tests/mysql-overlays-application_test.go b/tests/mysql-overlays-application_test.go new file mode 100644 index 00000000000..f1e0550a19b --- /dev/null +++ b/tests/mysql-overlays-application_test.go @@ -0,0 +1,200 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writeMysqlOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/pipeline/mysql/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: PersistentVolumeClaim + - group: core + kind: Service + descriptor: + type: "pipeline-mysql" + version: "v1beta1" + description: "mysql component of kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" +`) + th.writeF("/manifests/pipeline/mysql/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/pipeline/mysql/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/pipeline/mysql/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-mysql-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-mysql-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-mysql + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-mysql + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/pipeline/mysql/base/deployment.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mysql +spec: + strategy: + type: Recreate + template: + spec: + containers: + - name: mysql + env: + - name: MYSQL_ALLOW_EMPTY_PASSWORD + value: "true" + image: mysql:5.6 + ports: + - containerPort: 3306 + name: mysql + volumeMounts: + - mountPath: /var/lib/mysql + name: mysql-persistent-storage + volumes: + - name: mysql-persistent-storage + persistentVolumeClaim: + claimName: $(mysqlPvcName) +`) + th.writeF("/manifests/pipeline/mysql/base/service.yaml", ` +apiVersion: v1 +kind: Service +metadata: + name: mysql +spec: + ports: + - port: 3306 +`) + th.writeF("/manifests/pipeline/mysql/base/persistent-volume-claim.yaml", ` +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: $(mysqlPvcName) +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi +`) + th.writeF("/manifests/pipeline/mysql/base/params.yaml", ` +varReference: +- path: spec/template/spec/volumes/persistentVolumeClaim/claimName + kind: Deployment +- path: metadata/name + kind: PersistentVolumeClaim +`) + th.writeF("/manifests/pipeline/mysql/base/params.env", ` +mysqlPvcName= +`) + th.writeK("/manifests/pipeline/mysql/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +commonLabels: + app: mysql +resources: +- deployment.yaml +- service.yaml +- persistent-volume-claim.yaml +configMapGenerator: +- name: pipeline-mysql-parameters + env: params.env +generatorOptions: + disableNameSuffixHash: true +vars: +- name: mysqlPvcName + objref: + kind: ConfigMap + name: pipeline-mysql-parameters + apiVersion: v1 + fieldref: + fieldpath: data.mysqlPvcName +images: +- name: mysql + newTag: '5.6' +configurations: +- params.yaml +`) +} + +func TestMysqlOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/pipeline/mysql/overlays/application") + writeMysqlOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../pipeline/mysql/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/mysql-overlays-mysqlPd_test.go b/tests/mysql-overlays-mysqlPd_test.go index 9ba2802e3b4..e51d7e57238 100644 --- a/tests/mysql-overlays-mysqlPd_test.go +++ b/tests/mysql-overlays-mysqlPd_test.go @@ -131,13 +131,15 @@ spec: - ReadWriteOnce resources: requests: - storage: 20Gi`) + storage: 20Gi +`) th.writeF("/manifests/pipeline/mysql/base/params.yaml", ` varReference: - path: spec/template/spec/volumes/persistentVolumeClaim/claimName kind: Deployment - path: metadata/name - kind: PersistentVolumeClaim`) + kind: PersistentVolumeClaim +`) th.writeF("/manifests/pipeline/mysql/base/params.env", ` mysqlPvcName= `) diff --git a/tests/notebook-controller-overlays-application_test.go b/tests/notebook-controller-overlays-application_test.go index c4f538e1489..1b518b8c306 100644 --- a/tests/notebook-controller-overlays-application_test.go +++ b/tests/notebook-controller-overlays-application_test.go @@ -18,16 +18,8 @@ func writeNotebookControllerOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: notebook-controller + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: notebook-controller - app.kubernetes.io/instance: notebook-controller - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: notebook - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service @@ -54,6 +46,20 @@ spec: - description: About url: "https://github.com/kubeflow/kubeflow/tree/master/components/notebook-controller" addOwnerRef: true +`) + th.writeF("/manifests/jupyter/notebook-controller/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/jupyter/notebook-controller/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/jupyter/notebook-controller/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -62,9 +68,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: notebook-controller-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: notebook-controller-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: notebook-controller - app.kubernetes.io/instance: notebook-controller + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: notebook app.kubernetes.io/part-of: kubeflow diff --git a/tests/persistent-agent-overlays-application_test.go b/tests/persistent-agent-overlays-application_test.go new file mode 100644 index 00000000000..a00700a8fa0 --- /dev/null +++ b/tests/persistent-agent-overlays-application_test.go @@ -0,0 +1,188 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writePersistentAgentOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/pipeline/persistent-agent/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + descriptor: + type: "pipeline-persisent-agent" + version: "v1beta1" + description: "persistent-agent component of kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" +`) + th.writeF("/manifests/pipeline/persistent-agent/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/pipeline/persistent-agent/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/pipeline/persistent-agent/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-persistent-agent-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-persistent-agent-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-persistent-agent + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-persistent-agent + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/pipeline/persistent-agent/base/clusterrole-binding.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: persistenceagent +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: persistenceagent +`) + th.writeF("/manifests/pipeline/persistent-agent/base/clusterrole.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: persistenceagent +rules: +- apiGroups: + - argoproj.io + resources: + - workflows + verbs: + - get + - list + - watch +- apiGroups: + - kubeflow.org + resources: + - scheduledworkflows + verbs: + - get + - list + - watch +`) + th.writeF("/manifests/pipeline/persistent-agent/base/deployment.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: persistenceagent +spec: + template: + spec: + containers: + - name: ml-pipeline-persistenceagent + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: gcr.io/ml-pipeline/persistenceagent:0.1.23 + imagePullPolicy: IfNotPresent + serviceAccountName: ml-pipeline-persistenceagent +`) + th.writeF("/manifests/pipeline/persistent-agent/base/service-account.yaml", ` +apiVersion: v1 +kind: ServiceAccount +metadata: + name: persistenceagent +`) + th.writeK("/manifests/pipeline/persistent-agent/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +nameprefix: ml-pipeline- +commonLabels: + app: ml-pipeline-persistenceagent +resources: +- clusterrole-binding.yaml +- clusterrole.yaml +- deployment.yaml +- service-account.yaml +images: +- name: gcr.io/ml-pipeline/persistenceagent + newTag: '0.1.23' +`) +} + +func TestPersistentAgentOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/pipeline/persistent-agent/overlays/application") + writePersistentAgentOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../pipeline/persistent-agent/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/pipeline-visualization-service-overlays-application_test.go b/tests/pipeline-visualization-service-overlays-application_test.go new file mode 100644 index 00000000000..72f75f9bad8 --- /dev/null +++ b/tests/pipeline-visualization-service-overlays-application_test.go @@ -0,0 +1,138 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writePipelineVisualizationServiceOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/pipeline/pipeline-visualization-service/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: Service + descriptor: + type: "pipeline-visualization-service" + version: "v1beta1" + description: "visualisation-server for kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" +`) + th.writeF("/manifests/pipeline/pipeline-visualization-service/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/pipeline/pipeline-visualization-service/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/pipeline/pipeline-visualization-service/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-visualization-service-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-visualization-service-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-visualization-service + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-visualization-service + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/pipeline/pipeline-visualization-service/base/service.yaml", ` +apiVersion: v1 +kind: Service +metadata: + name: ml-pipeline-visualizationserver +spec: + ports: + - name: http + port: 8888 + protocol: TCP + targetPort: 8888 + selector: + app: ml-pipeline-visualizationserver +`) + th.writeK("/manifests/pipeline/pipeline-visualization-service/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +nameprefix: ml-pipeline- +commonLabels: + app: ml-pipeline-visualizationserver +resources: +- service.yaml +images: +- name: gcr.io/ml-pipeline/visualization-server + newTag: '0.1.27' +`) +} + +func TestPipelineVisualizationServiceOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/pipeline/pipeline-visualization-service/overlays/application") + writePipelineVisualizationServiceOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../pipeline/pipeline-visualization-service/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/pipelines-runner-overlays-application_test.go b/tests/pipelines-runner-overlays-application_test.go new file mode 100644 index 00000000000..a9046579648 --- /dev/null +++ b/tests/pipelines-runner-overlays-application_test.go @@ -0,0 +1,211 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writePipelinesRunnerOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/pipeline/pipelines-runner/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: core + kind: ServiceAccount + descriptor: + type: "pipeline-pipelines-runner" + version: "v1beta1" + description: "pipelines-runner for kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" +`) + th.writeF("/manifests/pipeline/pipelines-runner/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +`) + th.writeF("/manifests/pipeline/pipelines-runner/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/pipeline/pipelines-runner/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-pipelines-runner-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-pipelines-runner-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-pipelines-runner + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-pipelines-runner + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/pipeline/pipelines-runner/base/cluster-role-binding.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: pipeline-runner +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: pipeline-runner +subjects: +- kind: ServiceAccount + name: pipeline-runner +`) + th.writeF("/manifests/pipeline/pipelines-runner/base/cluster-role.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: pipeline-runner +rules: +- apiGroups: + - "" + resources: + - secrets + verbs: + - get +- apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - watch + - list +- apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - create + - delete + - get +- apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots + verbs: + - create + - delete + - get +- apiGroups: + - argoproj.io + resources: + - workflows + verbs: + - get + - list + - watch + - update + - patch +- apiGroups: + - "" + resources: + - pods + - pods/exec + - pods/log + - services + verbs: + - '*' +- apiGroups: + - "" + - apps + - extensions + resources: + - deployments + - replicasets + verbs: + - '*' +- apiGroups: + - kubeflow.org + resources: + - '*' + verbs: + - '*' +- apiGroups: + - batch + resources: + - jobs + verbs: + - '*' +`) + th.writeF("/manifests/pipeline/pipelines-runner/base/service-account.yaml", ` +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pipeline-runner +`) + th.writeK("/manifests/pipeline/pipelines-runner/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +commonLabels: + app: pipeline-runner +resources: +- cluster-role-binding.yaml +- cluster-role.yaml +- service-account.yaml +`) +} + +func TestPipelinesRunnerOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/pipeline/pipelines-runner/overlays/application") + writePipelinesRunnerOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../pipeline/pipelines-runner/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/pipelines-ui-overlays-application_test.go b/tests/pipelines-ui-overlays-application_test.go new file mode 100644 index 00000000000..2a6c230718b --- /dev/null +++ b/tests/pipelines-ui-overlays-application_test.go @@ -0,0 +1,297 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writePipelinesUiOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/pipeline/pipelines-ui/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: rbac.authorization.k8s.io + kind: Role + - group: rbac.authorization.k8s.io + kind: RoleBinding + - group: core + kind: ServiceAccount + - group: core + kind: Service + descriptor: + type: "pipeline-pipelines-ui" + version: "v1beta1" + description: "pipelines-ui for kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" +`) + th.writeF("/manifests/pipeline/pipelines-ui/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/pipeline/pipelines-ui/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/pipeline/pipelines-ui/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-pipelines-ui-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-pipelines-ui-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-pipelines-ui + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-pipelines-ui + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/pipeline/pipelines-ui/base/deployment.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: ml-pipeline-ui + name: ml-pipeline-ui +spec: + selector: + matchLabels: + app: ml-pipeline-ui + template: + metadata: + labels: + app: ml-pipeline-ui + spec: + containers: + - name: ml-pipeline-ui + image: gcr.io/ml-pipeline/frontend:0.1.23 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 3000 + serviceAccountName: ml-pipeline-ui +`) + th.writeF("/manifests/pipeline/pipelines-ui/base/role-binding.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: RoleBinding +metadata: + labels: + app: ml-pipeline-ui + name: ml-pipeline-ui +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: ml-pipeline-ui +subjects: +- kind: ServiceAccount + name: ml-pipeline-ui +`) + th.writeF("/manifests/pipeline/pipelines-ui/base/role.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: Role +metadata: + labels: + app: ml-pipeline-ui + name: ml-pipeline-ui +rules: +- apiGroups: + - "" + resources: + - pods + - pods/log + verbs: + - create + - get + - list +- apiGroups: + - "kubeflow.org" + resources: + - viewers + verbs: + - create + - get + - list + - watch + - delete +`) + th.writeF("/manifests/pipeline/pipelines-ui/base/service-account.yaml", ` +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ml-pipeline-ui +`) + th.writeF("/manifests/pipeline/pipelines-ui/base/service.yaml", ` +--- +apiVersion: v1 +kind: Service +metadata: + name: ml-pipeline-ui + annotations: + getambassador.io/config: |- + --- + apiVersion: ambassador/v0 + kind: Mapping + name: pipelineui-mapping + prefix: /pipeline + rewrite: /pipeline + timeout_ms: 300000 + service: $(service).$(ui-namespace) + use_websocket: true + labels: + app: ml-pipeline-ui +spec: + ports: + - port: 80 + targetPort: 3000 + selector: + app: ml-pipeline-ui +--- +apiVersion: v1 +kind: Service +metadata: + name: ml-pipeline-tensorboard-ui + annotations: + getambassador.io/config: |- + --- + apiVersion: ambassador/v0 + kind: Mapping + name: pipeline-tensorboard-ui-mapping + prefix: /data + rewrite: /data + timeout_ms: 300000 + service: $(service).$(ui-namespace) + use_websocket: true + labels: + app: ml-pipeline-tensorboard-ui +spec: + ports: + - port: 80 + targetPort: 3000 + selector: + app: ml-pipeline-tensorboard-ui +`) + th.writeF("/manifests/pipeline/pipelines-ui/base/params.yaml", ` +varReference: +- path: metadata/annotations/getambassador.io\/config + kind: Service +`) + th.writeF("/manifests/pipeline/pipelines-ui/base/params.env", ` +uiClusterDomain=cluster.local +`) + th.writeK("/manifests/pipeline/pipelines-ui/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +resources: +- deployment.yaml +- role-binding.yaml +- role.yaml +- service-account.yaml +- service.yaml +configMapGenerator: +- name: ui-parameters + env: params.env +images: +- name: gcr.io/ml-pipeline/frontend + newTag: '0.1.23' +vars: +- name: ui-namespace + objref: + kind: Service + name: ml-pipeline-ui + apiVersion: v1 + fieldref: + fieldpath: metadata.namespace +- name: ui-clusterDomain + objref: + kind: ConfigMap + name: ui-parameters + version: v1 + fieldref: + fieldpath: data.uiClusterDomain +- name: service + objref: + kind: Service + name: ml-pipeline-ui + apiVersion: v1 + fieldref: + fieldpath: metadata.name +- name: tensorboard-service + objref: + kind: Service + name: ml-pipeline-tensorboard-ui + apiVersion: v1 + fieldref: + fieldpath: metadata.name +configurations: +- params.yaml +`) +} + +func TestPipelinesUiOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/pipeline/pipelines-ui/overlays/application") + writePipelinesUiOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../pipeline/pipelines-ui/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/pipelines-viewer-overlays-application_test.go b/tests/pipelines-viewer-overlays-application_test.go new file mode 100644 index 00000000000..fad85b65b47 --- /dev/null +++ b/tests/pipelines-viewer-overlays-application_test.go @@ -0,0 +1,219 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writePipelinesViewerOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/pipeline/pipelines-viewer/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: ServiceAccount + descriptor: + type: "pipeline-pipelines-viewer" + version: "v1beta1" + description: "pipelines-viewer component of kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" +`) + th.writeF("/manifests/pipeline/pipelines-viewer/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/pipeline/pipelines-viewer/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/pipeline/pipelines-viewer/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-pipelines-viewer-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-pipelines-viewer-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-pipelines-viewer + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-pipelines-viewer + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/pipeline/pipelines-viewer/base/crd.yaml", ` +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: viewers.kubeflow.org +spec: + group: kubeflow.org + names: + kind: Viewer + listKind: ViewerList + plural: viewers + shortNames: + - vi + singular: viewer + scope: Namespaced + versions: + - name: v1beta1 + served: true + storage: true +`) + th.writeF("/manifests/pipeline/pipelines-viewer/base/cluster-role-binding.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: crd-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: controller-role +subjects: +- kind: ServiceAccount + name: crd-service-account +`) + th.writeF("/manifests/pipeline/pipelines-viewer/base/cluster-role.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: controller-role +rules: +- apiGroups: + - '*' + resources: + - deployments + - services + verbs: + - create + - get + - list + - watch + - update + - patch + - delete +- apiGroups: + - kubeflow.org + resources: + - viewers + verbs: + - create + - get + - list + - watch + - update + - patch + - delete +`) + th.writeF("/manifests/pipeline/pipelines-viewer/base/deployment.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: controller-deployment +spec: + template: + spec: + containers: + - env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: gcr.io/ml-pipeline/viewer-crd-controller:0.1.23 + imagePullPolicy: Always + name: ml-pipeline-viewer-controller + serviceAccountName: crd-service-account +`) + th.writeF("/manifests/pipeline/pipelines-viewer/base/service-account.yaml", ` +apiVersion: v1 +kind: ServiceAccount +metadata: + name: crd-service-account +`) + th.writeK("/manifests/pipeline/pipelines-viewer/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +nameprefix: ml-pipeline-viewer- +commonLabels: + app: ml-pipeline-viewer-crd +resources: +- crd.yaml +- cluster-role-binding.yaml +- cluster-role.yaml +- deployment.yaml +- service-account.yaml +images: +- name: gcr.io/ml-pipeline/viewer-crd-controller + newTag: '0.1.23' +`) +} + +func TestPipelinesViewerOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/pipeline/pipelines-viewer/overlays/application") + writePipelinesViewerOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../pipeline/pipelines-viewer/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/profiles-base_test.go b/tests/profiles-base_test.go index 9dcaa62e24d..4ad60fd0979 100644 --- a/tests/profiles-base_test.go +++ b/tests/profiles-base_test.go @@ -127,7 +127,8 @@ metadata: name: kfam spec: ports: - - port: 8081`) + - port: 8081 +`) th.writeF("/manifests/profiles/base/deployment.yaml", ` apiVersion: apps/v1 kind: Deployment @@ -172,7 +173,8 @@ varReference: - path: spec/template/spec/containers/1/args/3 kind: Deployment - path: spec/template/spec/containers/1/args/5 - kind: Deployment`) + kind: Deployment +`) th.writeF("/manifests/profiles/base/params.env", ` admin= userid-header= diff --git a/tests/profiles-overlays-application_test.go b/tests/profiles-overlays-application_test.go new file mode 100644 index 00000000000..74adab1d222 --- /dev/null +++ b/tests/profiles-overlays-application_test.go @@ -0,0 +1,337 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writeProfilesOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/profiles/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: rbac.authorization.k8s.io + kind: Role + - group: rbac.authorization.k8s.io + kind: RoleBinding + - group: core + kind: ServiceAccount + - group: core + kind: Service + descriptor: + type: "profiles" + version: "v1beta1" + description: "provides isolated namespaces for users" + keywords: + - "profiles" + links: + - description: About + url: "https://github.com/kubeflow/kubeflow/tree/master/components/profile-controller" +`) + th.writeF("/manifests/profiles/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/profiles/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/profiles/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: argo-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: argo-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: argo + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: argo + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/profiles/base/crd.yaml", ` +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + creationTimestamp: null + labels: + controller-tools.k8s.io: "1.0" + name: profiles.kubeflow.org +spec: + group: kubeflow.org + names: + kind: Profile + plural: profiles + scope: Cluster + validation: + openAPIV3Schema: + 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/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/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + owner: + description: The profile owner + type: object + type: object + status: + properties: + message: + type: string + status: + description: 'INSERT ADDITIONAL STATUS FIELD - define observed state + of cluster Important: Run "make" to regenerate code after modifying + this file' + type: string + type: object + version: v1alpha1 +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +`) + th.writeF("/manifests/profiles/base/service-account.yaml", ` +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: controller-service-account +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: default-service-account +`) + th.writeF("/manifests/profiles/base/cluster-role-binding.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cluster-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: controller-service-account +`) + th.writeF("/manifests/profiles/base/role.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: default-role +rules: +- apiGroups: + - kubeflow.org + resources: + - profiles + verbs: + - create + - watch + - list +`) + th.writeF("/manifests/profiles/base/role-binding.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: default-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: default-role +subjects: +- kind: ServiceAccount + name: default-service-account +`) + th.writeF("/manifests/profiles/base/service.yaml", ` +apiVersion: v1 +kind: Service +metadata: + name: kfam +spec: + ports: + - port: 8081 +`) + th.writeF("/manifests/profiles/base/deployment.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: deployment +spec: + template: + spec: + containers: + - command: + - /manager + args: + - "-userid-header" + - $(userid-header) + - "-userid-prefix" + - $(userid-prefix) + image: gcr.io/kubeflow-images-public/profile-controller:v20190619-v0-219-gbd3daa8c-dirty-1ced0e + imagePullPolicy: Always + name: manager + - command: + - /opt/kubeflow/access-management + args: + - "-cluster-admin" + - $(admin) + - "-userid-header" + - $(userid-header) + - "-userid-prefix" + - $(userid-prefix) + image: gcr.io/kubeflow-images-public/kfam:v20190612-v0-170-ga06cdb79-dirty-a33ee4 + imagePullPolicy: Always + name: kfam + serviceAccountName: controller-service-account +`) + th.writeF("/manifests/profiles/base/params.yaml", ` +varReference: +- path: spec/template/spec/containers/0/args/1 + kind: Deployment +- path: spec/template/spec/containers/0/args/3 + kind: Deployment +- path: spec/template/spec/containers/1/args/1 + kind: Deployment +- path: spec/template/spec/containers/1/args/3 + kind: Deployment +- path: spec/template/spec/containers/1/args/5 + kind: Deployment +`) + th.writeF("/manifests/profiles/base/params.env", ` +admin= +userid-header= +userid-prefix= +`) + th.writeK("/manifests/profiles/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- crd.yaml +- service-account.yaml +- cluster-role-binding.yaml +- role.yaml +- role-binding.yaml +- service.yaml +- deployment.yaml +namePrefix: profiles- +namespace: kubeflow +commonLabels: + kustomize.component: profiles +configMapGenerator: + - name: profiles-parameters + env: params.env +images: + - name: gcr.io/kubeflow-images-public/profile-controller + newName: gcr.io/kubeflow-images-public/profile-controller + newTag: v20190619-v0-219-gbd3daa8c-dirty-1ced0e +vars: + - name: admin + objref: + kind: ConfigMap + name: profiles-parameters + apiVersion: v1 + fieldref: + fieldpath: data.admin + - name: userid-header + objref: + kind: ConfigMap + name: profiles-parameters + apiVersion: v1 + fieldref: + fieldpath: data.userid-header + - name: userid-prefix + objref: + kind: ConfigMap + name: profiles-parameters + apiVersion: v1 + fieldref: + fieldpath: data.userid-prefix + - name: namespace + objref: + kind: Service + name: kfam + apiVersion: v1 + fieldref: + fieldpath: metadata.namespace +configurations: +- params.yaml +`) +} + +func TestProfilesOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/profiles/overlays/application") + writeProfilesOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../profiles/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/profiles-overlays-debug_test.go b/tests/profiles-overlays-debug_test.go index 72915f5a89b..c65347f4d96 100644 --- a/tests/profiles-overlays-debug_test.go +++ b/tests/profiles-overlays-debug_test.go @@ -182,7 +182,8 @@ metadata: name: kfam spec: ports: - - port: 8081`) + - port: 8081 +`) th.writeF("/manifests/profiles/base/deployment.yaml", ` apiVersion: apps/v1 kind: Deployment @@ -227,7 +228,8 @@ varReference: - path: spec/template/spec/containers/1/args/3 kind: Deployment - path: spec/template/spec/containers/1/args/5 - kind: Deployment`) + kind: Deployment +`) th.writeF("/manifests/profiles/base/params.env", ` admin= userid-header= diff --git a/tests/profiles-overlays-devices_test.go b/tests/profiles-overlays-devices_test.go index 62af710de07..dcdd8da8ed7 100644 --- a/tests/profiles-overlays-devices_test.go +++ b/tests/profiles-overlays-devices_test.go @@ -153,7 +153,8 @@ metadata: name: kfam spec: ports: - - port: 8081`) + - port: 8081 +`) th.writeF("/manifests/profiles/base/deployment.yaml", ` apiVersion: apps/v1 kind: Deployment @@ -198,7 +199,8 @@ varReference: - path: spec/template/spec/containers/1/args/3 kind: Deployment - path: spec/template/spec/containers/1/args/5 - kind: Deployment`) + kind: Deployment +`) th.writeF("/manifests/profiles/base/params.env", ` admin= userid-header= diff --git a/tests/profiles-overlays-istio_test.go b/tests/profiles-overlays-istio_test.go index e1f58d66c0a..11a8f156779 100644 --- a/tests/profiles-overlays-istio_test.go +++ b/tests/profiles-overlays-istio_test.go @@ -168,7 +168,8 @@ metadata: name: kfam spec: ports: - - port: 8081`) + - port: 8081 +`) th.writeF("/manifests/profiles/base/deployment.yaml", ` apiVersion: apps/v1 kind: Deployment @@ -213,7 +214,8 @@ varReference: - path: spec/template/spec/containers/1/args/3 kind: Deployment - path: spec/template/spec/containers/1/args/5 - kind: Deployment`) + kind: Deployment +`) th.writeF("/manifests/profiles/base/params.env", ` admin= userid-header= diff --git a/tests/prometheus-base_test.go b/tests/prometheus-base_test.go index 35e67e244ed..6366d293dd0 100644 --- a/tests/prometheus-base_test.go +++ b/tests/prometheus-base_test.go @@ -298,7 +298,8 @@ varReference: th.writeF("/manifests/gcp/prometheus/base/params.env", ` projectId= clusterName= -zone=`) +zone= +`) th.writeK("/manifests/gcp/prometheus/base", ` apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization diff --git a/tests/pytorch-operator-overlays-application_test.go b/tests/pytorch-operator-overlays-application_test.go index c1c1c29633c..5f5a578b7ab 100644 --- a/tests/pytorch-operator-overlays-application_test.go +++ b/tests/pytorch-operator-overlays-application_test.go @@ -18,16 +18,8 @@ func writePytorchOperatorOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: pytorch-operator + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: pytorch-operator - app.kubernetes.io/instance: pytorch-operator - app.kubernetes.io/version: v0.6.0 - app.kubernetes.io/component: pytorch - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/managed-by: kfctl componentKinds: - group: core kind: Service @@ -59,6 +51,20 @@ spec: - description: Docs url: "https://www.kubeflow.org/docs/reference/pytorchjob/v1/pytorch/" addOwnerRef: true +`) + th.writeF("/manifests/pytorch-job/pytorch-operator/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/pytorch-job/pytorch-operator/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/pytorch-job/pytorch-operator/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -67,9 +73,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: pytorch-operator-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pytorch-operator-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: pytorch-operator - app.kubernetes.io/instance: pytorch-operator + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/version: v0.6.0 app.kubernetes.io/component: pytorch app.kubernetes.io/part-of: kubeflow diff --git a/tests/scheduledworkflow-overlays-application_test.go b/tests/scheduledworkflow-overlays-application_test.go new file mode 100644 index 00000000000..a0b1b5d9ab7 --- /dev/null +++ b/tests/scheduledworkflow-overlays-application_test.go @@ -0,0 +1,221 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writeScheduledworkflowOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/pipeline/scheduledworkflow/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: rbac.authorization.k8s.io + kind: Role + - group: rbac.authorization.k8s.io + kind: RoleBinding + - group: core + kind: ServiceAccount + descriptor: + type: "pipeline-scheduledworkflow" + version: "v1beta1" + description: "scheduledworkflow component of kubeflow pipelines" + keywords: + - "kubeflow" + - "pipelines" + links: + - description: About + url: "https://github.com/kubeflow/pipelines" +`) + th.writeF("/manifests/pipeline/scheduledworkflow/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/pipeline/scheduledworkflow/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/pipeline/scheduledworkflow/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: pipeline-scheduledworkflow-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: pipeline-scheduledworkflow-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: pipeline-scheduledworkflow + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: pipeline-scheduledworkflow + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/pipeline/scheduledworkflow/base/crd.yaml", ` +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: scheduledworkflows.kubeflow.org +spec: + group: kubeflow.org + names: + kind: ScheduledWorkflow + listKind: ScheduledWorkflowList + plural: scheduledworkflows + shortNames: + - swf + singular: scheduledworkflow + scope: Namespaced + versions: + - name: v1beta1 + served: true + storage: true +`) + th.writeF("/manifests/pipeline/scheduledworkflow/base/deployment.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ml-pipeline-scheduledworkflow +spec: + template: + spec: + containers: + - name: ml-pipeline-scheduledworkflow + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + image: gcr.io/ml-pipeline/scheduledworkflow:0.1.23 + imagePullPolicy: IfNotPresent + serviceAccountName: ml-pipeline-scheduledworkflow +`) + th.writeF("/manifests/pipeline/scheduledworkflow/base/role-binding.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: ml-pipeline-scheduledworkflow +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: ml-pipeline-scheduledworkflow +`) + th.writeF("/manifests/pipeline/scheduledworkflow/base/role.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: Role +metadata: + name: ml-pipeline-scheduledworkflow +rules: +- apiGroups: + - argoproj.io + resources: + - workflows + verbs: + - create + - get + - list + - watch + - update + - patch + - delete +- apiGroups: + - kubeflow.org + resources: + - scheduledworkflows + verbs: + - create + - get + - list + - watch + - update + - patch + - delete +`) + th.writeF("/manifests/pipeline/scheduledworkflow/base/service-account.yaml", ` +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ml-pipeline-scheduledworkflow +`) + th.writeK("/manifests/pipeline/scheduledworkflow/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +commonLabels: + app: ml-pipeline-scheduledworkflow +resources: +- crd.yaml +- deployment.yaml +- role-binding.yaml +- role.yaml +- service-account.yaml +images: +- name: gcr.io/ml-pipeline/scheduledworkflow + newTag: '0.1.23' +`) +} + +func TestScheduledworkflowOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/pipeline/scheduledworkflow/overlays/application") + writeScheduledworkflowOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../pipeline/scheduledworkflow/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/seldon-core-operator-base_test.go b/tests/seldon-core-operator-base_test.go index 686feb49278..ce02427089b 100644 --- a/tests/seldon-core-operator-base_test.go +++ b/tests/seldon-core-operator-base_test.go @@ -85,8 +85,6 @@ metadata: spec: selector: matchLabels: - app.kubernetes.io/instance: seldon-core-operator - app.kubernetes.io/name: seldon-core-operator control-plane: seldon-controller-manager controller-tools.k8s.io: "1.0" serviceName: seldon-operator-controller-manager-service @@ -95,8 +93,6 @@ spec: annotations: prometheus.io/scrape: "true" labels: - app.kubernetes.io/instance: seldon-core-operator - app.kubernetes.io/name: seldon-core-operator control-plane: seldon-controller-manager controller-tools.k8s.io: "1.0" spec: @@ -3635,7 +3631,8 @@ resources: - seldon-operator-manager-rolebinding-crb.yaml - seldon-operator-webhook-server-secret-secret.yaml - seldondeployments.machinelearning.seldon.io-crd.yaml -- webhook-server-service-svc.yaml`) +- webhook-server-service-svc.yaml +`) } func TestSeldonCoreOperatorBase(t *testing.T) { diff --git a/tests/seldon-core-operator-overlays-application_test.go b/tests/seldon-core-operator-overlays-application_test.go index 455206f9246..93376e41577 100644 --- a/tests/seldon-core-operator-overlays-application_test.go +++ b/tests/seldon-core-operator-overlays-application_test.go @@ -18,7 +18,7 @@ func writeSeldonCoreOperatorOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: "seldon-core-operator" + name: $(generateName) spec: type: "seldon-core-operator" componentKinds: @@ -47,6 +47,20 @@ spec: links: - description: Docs url: "https://docs.seldon.io/projects/seldon-core/en/v0.3.0/" +`) + th.writeF("/manifests/seldon/seldon-core-operator/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: StatefulSet +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: StatefulSet +`) + th.writeF("/manifests/seldon/seldon-core-operator/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/seldon/seldon-core-operator/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -55,9 +69,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: seldon-core-operator-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: seldon-core-operator-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: seldon-core-operator - app.kubernetes.io/instance: seldon-core-operator + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: seldon app.kubernetes.io/part-of: kubeflow @@ -134,8 +161,6 @@ metadata: spec: selector: matchLabels: - app.kubernetes.io/instance: seldon-core-operator - app.kubernetes.io/name: seldon-core-operator control-plane: seldon-controller-manager controller-tools.k8s.io: "1.0" serviceName: seldon-operator-controller-manager-service @@ -144,8 +169,6 @@ spec: annotations: prometheus.io/scrape: "true" labels: - app.kubernetes.io/instance: seldon-core-operator - app.kubernetes.io/name: seldon-core-operator control-plane: seldon-controller-manager controller-tools.k8s.io: "1.0" spec: @@ -3684,7 +3707,8 @@ resources: - seldon-operator-manager-rolebinding-crb.yaml - seldon-operator-webhook-server-secret-secret.yaml - seldondeployments.machinelearning.seldon.io-crd.yaml -- webhook-server-service-svc.yaml`) +- webhook-server-service-svc.yaml +`) } func TestSeldonCoreOperatorOverlaysApplication(t *testing.T) { diff --git a/tests/spark-operator-overlays-application_test.go b/tests/spark-operator-overlays-application_test.go index 2815e329539..78aa7d4ee40 100644 --- a/tests/spark-operator-overlays-application_test.go +++ b/tests/spark-operator-overlays-application_test.go @@ -52,6 +52,20 @@ spec: keywords: - "spark" addOwnerRef: true +`) + th.writeF("/manifests/spark/spark-operator/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: StatefulSet +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: StatefulSet +`) + th.writeF("/manifests/spark/spark-operator/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/spark/spark-operator/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -60,9 +74,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: spark-operator-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: spark-operator-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: sparkoperator - app.kubernetes.io/instance: spark-operator + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: spark-operator app.kubernetes.io/part-of: kubeflow diff --git a/tests/suggestion-overlays-application_test.go b/tests/suggestion-overlays-application_test.go index c71ffbd9e71..dfffa8d8780 100644 --- a/tests/suggestion-overlays-application_test.go +++ b/tests/suggestion-overlays-application_test.go @@ -18,16 +18,8 @@ func writeSuggestionOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: suggestion + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: suggestion - app.kubernetes.io/instance: suggestion - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: katib - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service @@ -69,6 +61,20 @@ spec: - description: About url: "https://github.com/kubeflow/katib" addOwnerRef: true +`) + th.writeF("/manifests/katib-v1alpha2/suggestion/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/katib-v1alpha2/suggestion/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/katib-v1alpha2/suggestion/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -77,9 +83,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: suggestion-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: suggestion-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: - app.kubernetes.io/name: katib-ui - app.kubernetes.io/instance: katib-ui + app.kubernetes.io/name: suggestion + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: katib app.kubernetes.io/part-of: kubeflow diff --git a/tests/tensorboard-overlays-application_test.go b/tests/tensorboard-overlays-application_test.go new file mode 100644 index 00000000000..f38d133d270 --- /dev/null +++ b/tests/tensorboard-overlays-application_test.go @@ -0,0 +1,235 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writeTensorboardOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/tensorboard/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: core + kind: Service + descriptor: + type: "tensorboard" + version: "v1beta1" + description: "tensorboard is the visualization toolkit of tensorflow" + keywords: + - "tensorboard" + - "tensorflow" + links: + - description: About + url: "https://www.tensorflow.org/tensorboard" +`) + th.writeF("/manifests/tensorboard/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/tensorboard/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/tensorboard/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: tensorboard-app-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: tensorboard-app-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: tensorboard + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: tensorboard + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/tensorboard/base/deployment.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: tensorboard + name: tensorboard +spec: + replicas: 1 + template: + metadata: + labels: + app: tensorboard + spec: + containers: + - args: + - --logdir=logs + - --port=6006 + command: + - /usr/local/bin/tensorboard + image: tensorflow/tensorflow:1.8.0 + imagePullPolicy: IfNotPresent + name: tensorboard + ports: + - containerPort: 6006 + resources: + limits: + cpu: "4" + memory: 4Gi + requests: + cpu: "1" + memory: 1Gi +`) + th.writeF("/manifests/tensorboard/base/service.yaml", ` +apiVersion: v1 +kind: Service +metadata: + annotations: + getambassador.io/config: |- + --- + apiVersion: ambassador/v0 + kind: Mapping + name: tb-mapping-tensorboard-get + prefix: /tensorboard/ tensorboard/ + rewrite: / + method: GET + service: tensorboard.$(namespace):9000 + labels: + app: tensorboard + name: tensorboard +spec: + ports: + - name: tb + port: 9000 + targetPort: 6006 + selector: + app: tensorboard + type: ClusterIP +`) + th.writeF("/manifests/tensorboard/base/params.yaml", ` +varReference: +- path: metadata/annotations/getambassador.io\/config + kind: Service +`) + th.writeF("/manifests/tensorboard/base/params.env", ` +# GCP +# @optionalParam logDir string logs Name of the log directory holding the TF events file +# @optionalParam targetPort number 6006 Name of the targetPort +# @optionalParam servicePort number 9000 Name of the servicePort +# @optionalParam serviceType string ClusterIP The service type for Jupyterhub. +# @optionalParam defaultTbImage string tensorflow/tensorflow:1.8.0 default tensorboard image to use +# @optionalParam gcpCredentialSecretName string null Name of the k8s secrets containing gcp credentials +# AWS +# @optionalParam logDir string logs Name of the log directory holding the TF events file +# @optionalParam targetPort number 6006 Name of the targetPort +# @optionalParam servicePort number 9000 Name of the servicePort +# @optionalParam serviceType string ClusterIP The service type for tensorboard service +# @optionalParam defaultTbImage string tensorflow/tensorflow:1.8.0 default tensorboard image to use +# @optionalParam s3Enabled string false Whether or not to use S3 +# @optionalParam s3SecretName string null Name of the k8s secrets containing S3 credentials +# @optionalParam s3SecretAccesskeyidKeyName string null Name of the key in the k8s secret containing AWS_ACCESS_KEY_ID +# @optionalParam s3SecretSecretaccesskeyKeyName string null Name of the key in the k8s secret containing AWS_SECRET_ACCESS_KEY +# @optionalParam s3AwsRegion string us-west-1 S3 region +# @optionalParam s3UseHttps string true Whether or not to use https +# @optionalParam s3VerifySsl string true Whether or not to verify https certificates for S3 connections +# @optionalParam s3Endpoint string s3.us-west-1.amazonaws.com URL for your s3-compatible endpoint +# @optionalParam efsEnabled string false Whether or not to use EFS +# @optionalParam efsPvcName string null Name of the Persistent Volume Claim used for EFS +# @optionalParam efsVolumeName string null Name of the Volume to mount to the pod +# @optionalParam efsMountPath string null Where to mount the EFS Volume +namespace= +clusterDomain=cluster.local +`) + th.writeK("/manifests/tensorboard/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeflow +resources: +- deployment.yaml +- service.yaml +commonLabels: + kustomize.component: tensorboard +configMapGenerator: +- name: parameters + env: params.env +vars: +- name: namespace + objref: + kind: Service + name: tensorboard + apiVersion: v1 + fieldref: + fieldpath: metadata.namespace +- name: clusterDomain + objref: + kind: ConfigMap + name: parameters + apiVersion: v1 + fieldref: + fieldpath: data.clusterDomain +configurations: +- params.yaml +`) +} + +func TestTensorboardOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/tensorboard/overlays/application") + writeTensorboardOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../tensorboard/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tests/tf-job-crds-base_test.go b/tests/tf-job-crds-base_test.go index 2d8518760e8..cbe1fdf3c64 100644 --- a/tests/tf-job-crds-base_test.go +++ b/tests/tf-job-crds-base_test.go @@ -71,7 +71,8 @@ spec: apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: -- crd.yaml`) +- crd.yaml +`) } func TestTfJobCrdsBase(t *testing.T) { diff --git a/tests/tf-job-operator-overlays-application_test.go b/tests/tf-job-operator-overlays-application_test.go index c866dbbf0fd..3e0225f2692 100644 --- a/tests/tf-job-operator-overlays-application_test.go +++ b/tests/tf-job-operator-overlays-application_test.go @@ -18,16 +18,8 @@ func writeTfJobOperatorOverlaysApplication(th *KustTestHarness) { apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: tf-job-operator + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: tf-job-operator - app.kubernetes.io/instance: tf-job-operator - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: tfjob - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service @@ -59,6 +51,20 @@ spec: - description: Docs url: "https://www.kubeflow.org/docs/reference/tfjob/v1/tensorflow/" addOwnerRef: true +`) + th.writeF("/manifests/tf-training/tf-job-operator/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/tf-training/tf-job-operator/overlays/application/params.env", ` +generateName= `) th.writeK("/manifests/tf-training/tf-job-operator/overlays/application", ` apiVersion: kustomize.config.k8s.io/v1beta1 @@ -67,9 +73,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: tf-job-operator-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: tf-job-operator-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: tf-job-operator - app.kubernetes.io/instance: tf-job-operator + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: tfjob app.kubernetes.io/part-of: kubeflow diff --git a/tests/webhook-overlays-application_test.go b/tests/webhook-overlays-application_test.go new file mode 100644 index 00000000000..62f41905f4f --- /dev/null +++ b/tests/webhook-overlays-application_test.go @@ -0,0 +1,322 @@ +package tests_test + +import ( + "sigs.k8s.io/kustomize/v3/k8sdeps/kunstruct" + "sigs.k8s.io/kustomize/v3/k8sdeps/transformer" + "sigs.k8s.io/kustomize/v3/pkg/fs" + "sigs.k8s.io/kustomize/v3/pkg/loader" + "sigs.k8s.io/kustomize/v3/pkg/plugins" + "sigs.k8s.io/kustomize/v3/pkg/resmap" + "sigs.k8s.io/kustomize/v3/pkg/resource" + "sigs.k8s.io/kustomize/v3/pkg/target" + "sigs.k8s.io/kustomize/v3/pkg/validators" + "testing" +) + +func writeWebhookOverlaysApplication(th *KustTestHarness) { + th.writeF("/manifests/admission-webhook/webhook/overlays/application/application.yaml", ` +apiVersion: app.k8s.io/v1beta1 +kind: Application +metadata: + name: $(generateName) +spec: + componentKinds: + - group: apps + kind: Deployment + - group: admissionregistration.k8s.io + kind: MutatingWebhookConfiguration + - group: core + kind: ServiceAccount + - group: core + kind: Service + descriptor: + type: "admission-webhook-webhook" + version: "v1alpha1" + description: "admission-webhook webhook injects common data (env vars, volumes) into notebooks" + keywords: + - "admission-webook" + links: + - description: About + url: "https://github.com/kubeflow/kubeflow/tree/master/components/admission-webhook" +`) + th.writeF("/manifests/admission-webhook/webhook/overlays/application/params.yaml", ` +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment +`) + th.writeF("/manifests/admission-webhook/webhook/overlays/application/params.env", ` +generateName= +`) + th.writeK("/manifests/admission-webhook/webhook/overlays/application", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../base +resources: +- application.yaml +configMapGenerator: +- name: admission-webhook-webhook-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: admission-webhook-webhook-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml +commonLabels: + app.kubernetes.io/name: admission-webhook-webhook + app.kubernetes.io/instance: $(generateName) + app.kubernetes.io/managed-by: kfctl + app.kubernetes.io/component: admission-webhook + app.kubernetes.io/part-of: kubeflow + app.kubernetes.io/version: v0.6 +`) + th.writeF("/manifests/admission-webhook/webhook/base/cluster-role-binding.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cluster-role-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-role +subjects: +- kind: ServiceAccount + name: service-account +`) + th.writeF("/manifests/admission-webhook/webhook/base/cluster-role.yaml", ` +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cluster-role +rules: +- apiGroups: + - kubeflow.org + resources: + - poddefaults + verbs: + - get + - watch + - list + - update + - create + - patch + - delete +`) + th.writeF("/manifests/admission-webhook/webhook/base/deployment.yaml", ` +apiVersion: apps/v1 +kind: Deployment +metadata: + name: deployment +spec: + template: + spec: + containers: + - image: gcr.io/kubeflow-images-public/admission-webhook:v20190520-v0-139-gcee39dbc-dirty-0d8f4c + name: admission-webhook + volumeMounts: + - mountPath: /etc/webhook/certs + name: webhook-cert + readOnly: true + volumes: + - name: webhook-cert + secret: + secretName: webhook-certs + serviceAccountName: service-account +`) + th.writeF("/manifests/admission-webhook/webhook/base/mutating-webhook-configuration.yaml", ` +apiVersion: admissionregistration.k8s.io/v1beta1 +kind: MutatingWebhookConfiguration +metadata: + name: mutating-webhook-configuration +webhooks: +- clientConfig: + caBundle: "" + service: + name: $(serviceName) + namespace: $(namespace) + path: /apply-poddefault + name: $(deploymentName).kubeflow.org + rules: + - apiGroups: + - "" + apiVersions: + - v1 + operations: + - CREATE + resources: + - pods +`) + th.writeF("/manifests/admission-webhook/webhook/base/service-account.yaml", ` +apiVersion: v1 +kind: ServiceAccount +metadata: + name: service-account +`) + th.writeF("/manifests/admission-webhook/webhook/base/service.yaml", ` +apiVersion: v1 +kind: Service +metadata: + name: service +spec: + ports: + - port: 443 + targetPort: 443 +`) + th.writeF("/manifests/admission-webhook/webhook/base/crd.yaml", ` +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: poddefaults.kubeflow.org +spec: + group: kubeflow.org + names: + kind: PodDefault + plural: poddefaults + singular: poddefault + scope: Namespaced + version: v1alpha1 + validation: + openAPIV3Schema: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + type: object + spec: + properties: + desc: + type: string + serviceAccountName: + type: string + env: + items: + type: object + type: array + envFrom: + items: + type: object + type: array + selector: + type: object + volumeMounts: + items: + type: object + type: array + volumes: + items: + type: object + type: array + required: + - selector + type: object + status: + type: object + type: object +`) + th.writeF("/manifests/admission-webhook/webhook/base/params.yaml", ` +varReference: +- path: webhooks/clientConfig/service/namespace + kind: MutatingWebhookConfiguration +- path: webhooks/clientConfig/service/name + kind: MutatingWebhookConfiguration +- path: webhooks/name + kind: MutatingWebhookConfiguration +`) + th.writeF("/manifests/admission-webhook/webhook/base/params.env", ` +namespace=kubeflow +`) + th.writeK("/manifests/admission-webhook/webhook/base", ` +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- cluster-role-binding.yaml +- cluster-role.yaml +- deployment.yaml +- mutating-webhook-configuration.yaml +- service-account.yaml +- service.yaml +- crd.yaml +commonLabels: + kustomize.component: admission-webhook + app: admission-webhook +namePrefix: admission-webhook- +images: + - name: gcr.io/kubeflow-images-public/admission-webhook + newName: gcr.io/kubeflow-images-public/admission-webhook + newTag: v20190520-v0-139-gcee39dbc-dirty-0d8f4c +namespace: kubeflow +configMapGenerator: +- name: admission-webhook-parameters + env: params.env +generatorOptions: + disableNameSuffixHash: true +vars: +- name: namespace + objref: + kind: ConfigMap + name: admission-webhook-parameters + apiVersion: v1 + fieldref: + fieldpath: data.namespace +- name: serviceName + objref: + kind: Service + name: service + apiVersion: v1 + fieldref: + fieldpath: metadata.name +- name: deploymentName + objref: + kind: Deployment + name: deployment + apiVersion: apps/v1 + fieldref: + fieldpath: metadata.name +configurations: +- params.yaml +`) +} + +func TestWebhookOverlaysApplication(t *testing.T) { + th := NewKustTestHarness(t, "/manifests/admission-webhook/webhook/overlays/application") + writeWebhookOverlaysApplication(th) + m, err := th.makeKustTarget().MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + expected, err := m.AsYaml() + if err != nil { + t.Fatalf("Err: %v", err) + } + targetPath := "../admission-webhook/webhook/overlays/application" + fsys := fs.MakeRealFS() + lrc := loader.RestrictionRootOnly + _loader, loaderErr := loader.NewLoader(lrc, validators.MakeFakeValidator(), targetPath, fsys) + if loaderErr != nil { + t.Fatalf("could not load kustomize loader: %v", loaderErr) + } + rf := resmap.NewFactory(resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl()) + pc := plugins.DefaultPluginConfig() + kt, err := target.NewKustTarget(_loader, rf, transformer.NewFactoryImpl(), plugins.NewLoader(pc, rf)) + if err != nil { + th.t.Fatalf("Unexpected construction error %v", err) + } + actual, err := kt.MakeCustomizedResMap() + if err != nil { + t.Fatalf("Err: %v", err) + } + th.assertActualEqualsExpected(actual, string(expected)) +} diff --git a/tf-training/tf-job-operator/overlays/application/application.yaml b/tf-training/tf-job-operator/overlays/application/application.yaml index 3030b90ddf6..68240c37b44 100644 --- a/tf-training/tf-job-operator/overlays/application/application.yaml +++ b/tf-training/tf-job-operator/overlays/application/application.yaml @@ -1,16 +1,8 @@ apiVersion: app.k8s.io/v1beta1 kind: Application metadata: - name: tf-job-operator + name: $(generateName) spec: - selector: - matchLabels: - app.kubernetes.io/name: tf-job-operator - app.kubernetes.io/instance: tf-job-operator - app.kubernetes.io/managed-by: kfctl - app.kubernetes.io/component: tfjob - app.kubernetes.io/part-of: kubeflow - app.kubernetes.io/version: v0.6 componentKinds: - group: core kind: Service diff --git a/tf-training/tf-job-operator/overlays/application/kustomization.yaml b/tf-training/tf-job-operator/overlays/application/kustomization.yaml index d5b504f2be7..28140df8311 100644 --- a/tf-training/tf-job-operator/overlays/application/kustomization.yaml +++ b/tf-training/tf-job-operator/overlays/application/kustomization.yaml @@ -4,9 +4,22 @@ bases: - ../../base resources: - application.yaml +configMapGenerator: +- name: tf-job-operator-parameters + env: params.env +vars: +- name: generateName + objref: + kind: ConfigMap + name: tf-job-operator-parameters + apiVersion: v1 + fieldref: + fieldpath: data.generateName +configurations: +- params.yaml commonLabels: app.kubernetes.io/name: tf-job-operator - app.kubernetes.io/instance: tf-job-operator + app.kubernetes.io/instance: $(generateName) app.kubernetes.io/managed-by: kfctl app.kubernetes.io/component: tfjob app.kubernetes.io/part-of: kubeflow diff --git a/tf-training/tf-job-operator/overlays/application/params.env b/tf-training/tf-job-operator/overlays/application/params.env new file mode 100644 index 00000000000..115937b9f81 --- /dev/null +++ b/tf-training/tf-job-operator/overlays/application/params.env @@ -0,0 +1 @@ +generateName= diff --git a/tf-training/tf-job-operator/overlays/application/params.yaml b/tf-training/tf-job-operator/overlays/application/params.yaml new file mode 100644 index 00000000000..a8d8a85fdea --- /dev/null +++ b/tf-training/tf-job-operator/overlays/application/params.yaml @@ -0,0 +1,9 @@ +varReference: +- path: metadata/name + kind: Application +- path: spec/selector/app.kubernetes.io\/instance + kind: Service +- path: spec/selector/matchLabels/app.kubernetes.io\/instance + kind: Deployment +- path: spec/template/metadata/labels/app.kubernetes.io\/instance + kind: Deployment