diff --git a/components/app-configs/notebook-nvidia-nemo/deployment.yaml b/components/app-configs/notebook-nvidia-nemo/deployment.yaml deleted file mode 100644 index ded0d208..00000000 --- a/components/app-configs/notebook-nvidia-nemo/deployment.yaml +++ /dev/null @@ -1,93 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: nemo-notebook - labels: - deployment: nemo-notebook - annotations: - argocd.argoproj.io/sync-wave: "1" - image.openshift.io/triggers: >- - [{"from":{"kind":"ImageStreamTag","name":"nemo:latest"},"fieldPath":"spec.template.spec.containers[?(@.name==\"nemo\")].image","paused":"false"}] -spec: - replicas: 1 - selector: - matchLabels: - deployment: nemo-notebook - strategy: - # type: RollingUpdate - type: Recreate - template: - metadata: - labels: - deployment: nemo-notebook - spec: - restartPolicy: Always - containers: - - name: nemo - image: nvcr.io/nvidia/nemo:dev - imagePullPolicy: IfNotPresent - env: - - name: HOME - value: /workspace - command: - - /bin/sh - - -c - - | - #!/bin/sh - jupyter lab \ - --ServerApp.ip=0.0.0.0 \ - --ServerApp.allow_origin="*" \ - --ServerApp.open_browser=False \ - --ServerApp.token='' - ports: - - name: http - containerPort: 8888 - protocol: TCP - resources: - limits: - cpu: '2' - memory: 8Gi - requests: - cpu: '1' - memory: 4Gi - # startupProbe: - # httpGet: - # path: /health - # port: http - # scheme: HTTP - # timeoutSeconds: 1 - # periodSeconds: 30 - # successThreshold: 1 - # failureThreshold: 10 - # readinessProbe: - # httpGet: - # path: /health - # port: http - # scheme: HTTP - # timeoutSeconds: 5 - # periodSeconds: 30 - # successThreshold: 1 - # failureThreshold: 3 - # livenessProbe: - # httpGet: - # path: /health - # port: http - # scheme: HTTP - # timeoutSeconds: 8 - # periodSeconds: 100 - # successThreshold: 1 - # failureThreshold: 3 - volumeMounts: - - name: shm - mountPath: /dev/shm - - name: home - mountPath: /workspace - subPath: cache - volumes: - - name: shm - emptyDir: - medium: Memory - sizeLimit: 512Mi - - name: home - emptyDir: {} diff --git a/components/app-configs/notebook-nvidia-nemo/kustomization.yaml b/components/app-configs/notebook-nvidia-nemo/kustomization.yaml deleted file mode 100644 index 9a60dd7a..00000000 --- a/components/app-configs/notebook-nvidia-nemo/kustomization.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -labels: -- includeSelectors: false - pairs: - component: jupyter - -resources: -- deployment.yaml -- image-stream.yaml -- route.yaml -- service.yaml diff --git a/components/app-configs/notebook-nvidia-nemo/route.yaml b/components/app-configs/notebook-nvidia-nemo/route.yaml deleted file mode 100644 index 958f7491..00000000 --- a/components/app-configs/notebook-nvidia-nemo/route.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: nemo-notebook - labels: - deployment: nemo-notebook - annotations: - argocd.argoproj.io/sync-wave: "1" -spec: - port: - targetPort: 8888 - tls: - insecureEdgeTerminationPolicy: Redirect - termination: edge - to: - kind: Service - name: nemo-notebook - weight: 100 - wildcardPolicy: None diff --git a/components/app-configs/notebook-nvidia-nemo/service.yaml b/components/app-configs/notebook-nvidia-nemo/service.yaml deleted file mode 100644 index dee9c4ff..00000000 --- a/components/app-configs/notebook-nvidia-nemo/service.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - annotations: - argocd.argoproj.io/sync-wave: "1" - labels: - deployment: nemo-notebook - name: nemo-notebook -spec: - ports: - - name: http - port: 8888 - targetPort: 8888 - selector: - deployment: nemo-notebook - sessionAffinity: None - type: ClusterIP diff --git a/components/app-configs/notebook-standalone/base/deployment.yaml b/components/app-configs/notebook-standalone/base/deployment.yaml new file mode 100644 index 00000000..110c89bf --- /dev/null +++ b/components/app-configs/notebook-standalone/base/deployment.yaml @@ -0,0 +1,76 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: notebook + annotations: + argocd.argoproj.io/sync-wave: "1" + # image.openshift.io/triggers: >- + # [{"from":{"kind":"ImageStreamTag","name":"notebook:latest"},"fieldPath":"spec.template.spec.containers[?(@.name==\"notebook\")].image","paused":"false"}] +spec: + replicas: 1 + strategy: + type: Recreate + template: + spec: + containers: + - name: notebook + image: docker.io/kubeflownotebookswg/jupyter:latest + env: + - name: HOME + value: /workspace + ports: + - containerPort: 8888 + protocol: TCP + name: notebook + - containerPort: 8000 + protocol: TCP + name: demo + resources: + limits: + cpu: '2' + memory: 8Gi + requests: + cpu: 500m + memory: 8Gi + # livenessProbe: + # httpGet: + # path: / + # port: http + # scheme: HTTP + # timeoutSeconds: 5 + # periodSeconds: 5 + # successThreshold: 1 + # failureThreshold: 3 + readinessProbe: + httpGet: + path: / + port: notebook + scheme: HTTP + timeoutSeconds: 1 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + startupProbe: + httpGet: + path: / + port: notebook + scheme: HTTP + timeoutSeconds: 1 + periodSeconds: 5 + successThreshold: 1 + failureThreshold: 10 + volumeMounts: + - name: shm + mountPath: /dev/shm + - name: home + mountPath: /workspace + subPath: data + volumes: + - name: shm + emptyDir: + medium: Memory + sizeLimit: 512Mi + - name: home + persistentVolumeClaim: + claimName: notebook diff --git a/components/app-configs/notebook-standalone/kustomization.yaml b/components/app-configs/notebook-standalone/base/kustomization.yaml similarity index 87% rename from components/app-configs/notebook-standalone/kustomization.yaml rename to components/app-configs/notebook-standalone/base/kustomization.yaml index ff5f545b..670f4d69 100644 --- a/components/app-configs/notebook-standalone/kustomization.yaml +++ b/components/app-configs/notebook-standalone/base/kustomization.yaml @@ -2,7 +2,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization labels: -- includeSelectors: false +- includeSelectors: true pairs: component: jupyter diff --git a/components/app-configs/notebook-standalone/pvc.yaml b/components/app-configs/notebook-standalone/base/pvc.yaml similarity index 82% rename from components/app-configs/notebook-standalone/pvc.yaml rename to components/app-configs/notebook-standalone/base/pvc.yaml index 5ac479c5..621536a0 100644 --- a/components/app-configs/notebook-standalone/pvc.yaml +++ b/components/app-configs/notebook-standalone/base/pvc.yaml @@ -2,9 +2,7 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: jupyter - labels: - app: jupyter + name: notebook annotations: argocd.argoproj.io/sync-wave: "1" spec: diff --git a/components/app-configs/notebook-standalone/route.yaml b/components/app-configs/notebook-standalone/base/route.yaml similarity index 78% rename from components/app-configs/notebook-standalone/route.yaml rename to components/app-configs/notebook-standalone/base/route.yaml index 0e6971ec..a159708d 100644 --- a/components/app-configs/notebook-standalone/route.yaml +++ b/components/app-configs/notebook-standalone/base/route.yaml @@ -2,29 +2,25 @@ apiVersion: route.openshift.io/v1 kind: Route metadata: - name: jupyter - labels: - app: jupyter + name: notebook annotations: argocd.argoproj.io/sync-wave: "1" spec: port: - targetPort: 8787 + targetPort: 8888 tls: insecureEdgeTerminationPolicy: Redirect termination: edge to: kind: Service - name: jupyter + name: notebook weight: 100 wildcardPolicy: None --- apiVersion: route.openshift.io/v1 kind: Route metadata: - name: jupyter-demo - labels: - app: jupyter + name: notebook-demo annotations: argocd.argoproj.io/sync-wave: "1" spec: @@ -35,6 +31,6 @@ spec: termination: edge to: kind: Service - name: jupyter + name: notebook weight: 100 wildcardPolicy: None diff --git a/components/app-configs/notebook-standalone/service.yaml b/components/app-configs/notebook-standalone/base/service.yaml similarity index 61% rename from components/app-configs/notebook-standalone/service.yaml rename to components/app-configs/notebook-standalone/base/service.yaml index 6fe89ab4..0a45778c 100644 --- a/components/app-configs/notebook-standalone/service.yaml +++ b/components/app-configs/notebook-standalone/base/service.yaml @@ -4,22 +4,18 @@ kind: Service metadata: annotations: argocd.argoproj.io/sync-wave: "1" - service.alpha.openshift.io/serving-cert-secret-name: jupyter - labels: - app: jupyter - name: jupyter + service.alpha.openshift.io/serving-cert-secret-name: notebook + name: notebook spec: ports: + - name: notebook + port: 8888 + targetPort: 8888 - name: demo port: 8000 targetPort: 8000 - - name: notebook - port: 8787 - targetPort: 8787 - name: oauth-proxy port: 8080 targetPort: 8080 - selector: - app: jupyter sessionAffinity: None type: ClusterIP diff --git a/components/app-configs/notebook-standalone/base/template.yaml b/components/app-configs/notebook-standalone/base/template.yaml new file mode 100644 index 00000000..8f82da0a --- /dev/null +++ b/components/app-configs/notebook-standalone/base/template.yaml @@ -0,0 +1,69 @@ +--- +kind: Template +apiVersion: template.openshift.io/v1 +labels: + template: standalone-notebook + app.kubernetes.io/part-of: standalone-notebook + app.kubernetes.io/component: ide +metadata: + name: standalone-notebook + labels: + template: standalone-notebook + annotations: + openshift.io/display-name: A Standalone Jupyter Notebook + openshift.io/provider-display-name: Community + description: Data Science Notebook in OpenShift + iconClass: icon-python + tags: python + openshift.io/documentation-url: "https://github.com/redhat-na-ssa/demo-ai-gitops-catalog" + openshift.io/support-url: "https://github.com/redhat-na-ssa/demo-ai-gitops-catalog/issues" + template.openshift.io/bindable: "false" +parameters: +- name: APPLICATION_NAME + displayName: Application Name + required: true + value: standalone-notebook +- name: VOLUME_SIZE + displayName: Volume Size + value: 5Gi + required: true +- name: NOTEBOOK_MEM_LIMIT + displayName: Notebook Memory Limit + value: 1792Mi + required: true + description: Consider the pod quota limits on your namespace +- name: NOTEBOOK_CPU_LIMIT + displayName: Notebook CPU Limit + value: 1700m + required: true + description: Consider the pod quota limits on your namespace +- name: WEBDAV_MEM_LIMIT + displayName: WebDav Memory Limit + value: 256M + required: true + description: Consider the pod quota limits on your namespace +- name: WEBDAV_CPU_LIMIT + displayName: WebDav CPU Limit + value: 300m + required: true + description: Consider the pod quota limits on your namespace +- name: NOTEBOOK_PASSWORD + displayName: Notebook Password + from: "[A-Za-z0-9]{32}" + generate: expression + required: true + description: Password for Notebook +- name: NOTEBOOK_IMAGE + description: The base image for notebook + value: quay.io/opendatahub-contrib/workbench-images:code-server-ubi9-py39_2023b_latest + required: true +- name: WEBDAV_NODE_IMAGE + description: The base image for WebDav + value: quay.io/codekow/webdav:latest + required: true +message: |- + The following application has been created in your project: ${APPLICATION_NAME}. + + For more information about using this template, including OpenShift considerations, + see "https://github.com/redhat-na-ssa/demo-ai-gitops-catalog" +objects: [] diff --git a/components/app-configs/notebook-standalone/components/code-server/kustomization.yaml b/components/app-configs/notebook-standalone/components/code-server/kustomization.yaml new file mode 100644 index 00000000..02f6c6d8 --- /dev/null +++ b/components/app-configs/notebook-standalone/components/code-server/kustomization.yaml @@ -0,0 +1,7 @@ +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component + +patches: + - path: patch-deployment.yaml + target: + kind: Deployment diff --git a/components/app-configs/notebook-standalone/components/code-server/patch-deployment.yaml b/components/app-configs/notebook-standalone/components/code-server/patch-deployment.yaml new file mode 100644 index 00000000..cea20599 --- /dev/null +++ b/components/app-configs/notebook-standalone/components/code-server/patch-deployment.yaml @@ -0,0 +1,14 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: notebook +spec: + template: + spec: + containers: + - name: notebook + image: docker.io/kubeflownotebookswg/codeserver + volumeMounts: + - name: home + mountPath: /home/jovyan + subPath: data diff --git a/components/app-configs/notebook-standalone/components/gpu/kustomization.yaml b/components/app-configs/notebook-standalone/components/gpu/kustomization.yaml new file mode 100644 index 00000000..02f6c6d8 --- /dev/null +++ b/components/app-configs/notebook-standalone/components/gpu/kustomization.yaml @@ -0,0 +1,7 @@ +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component + +patches: + - path: patch-deployment.yaml + target: + kind: Deployment diff --git a/components/app-configs/notebook-standalone/components/gpu/patch-deployment.yaml b/components/app-configs/notebook-standalone/components/gpu/patch-deployment.yaml new file mode 100644 index 00000000..13e8c5d4 --- /dev/null +++ b/components/app-configs/notebook-standalone/components/gpu/patch-deployment.yaml @@ -0,0 +1,12 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: notebook +spec: + template: + spec: + containers: + - name: notebook + resources: + limits: + nvidia.com/gpu: 1 diff --git a/components/app-configs/notebook-standalone/components/namespace/kustomization.yaml b/components/app-configs/notebook-standalone/components/namespace/kustomization.yaml new file mode 100644 index 00000000..d41e3cf2 --- /dev/null +++ b/components/app-configs/notebook-standalone/components/namespace/kustomization.yaml @@ -0,0 +1,5 @@ +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component + +resources: +- namespace.yaml diff --git a/components/app-configs/notebook-standalone/components/namespace/namespace.yaml b/components/app-configs/notebook-standalone/components/namespace/namespace.yaml new file mode 100644 index 00000000..7712aa17 --- /dev/null +++ b/components/app-configs/notebook-standalone/components/namespace/namespace.yaml @@ -0,0 +1,8 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: demo-standalone-notebook + annotations: + openshift.io/display-name: "Demo - standalone notebooks" + argocd.argoproj.io/sync-wave: "0" diff --git a/components/app-configs/notebook-nvidia-nemo/build-config.yaml b/components/app-configs/notebook-standalone/components/nemo-build/build-config.yaml similarity index 88% rename from components/app-configs/notebook-nvidia-nemo/build-config.yaml rename to components/app-configs/notebook-standalone/components/nemo-build/build-config.yaml index 99a541ce..b7673797 100644 --- a/components/app-configs/notebook-nvidia-nemo/build-config.yaml +++ b/components/app-configs/notebook-standalone/components/nemo-build/build-config.yaml @@ -14,7 +14,7 @@ spec: dockerfile: | FROM nvcr.io/nvidia/nemo:dev ENV HOME=/workspace - ENTRYPOINT jupyter lab --ServerApp.ip=0.0.0.0 --ServerApp.allow_origin="*" --ServerApp.open_browser=False --ServerApp.token='' + ENTRYPOINT jupyter lab --ServerApp.ip=0.0.0.0 --ServerApp.port=8787 --ServerApp.allow_origin="*" --ServerApp.open_browser=False --ServerApp.token='' strategy: type: Docker dockerStrategy: diff --git a/components/app-configs/notebook-nvidia-nemo/image-stream.yaml b/components/app-configs/notebook-standalone/components/nemo-build/image-stream.yaml similarity index 100% rename from components/app-configs/notebook-nvidia-nemo/image-stream.yaml rename to components/app-configs/notebook-standalone/components/nemo-build/image-stream.yaml diff --git a/components/app-configs/notebook-standalone/components/nemo/kustomization.yaml b/components/app-configs/notebook-standalone/components/nemo/kustomization.yaml new file mode 100644 index 00000000..02f6c6d8 --- /dev/null +++ b/components/app-configs/notebook-standalone/components/nemo/kustomization.yaml @@ -0,0 +1,7 @@ +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component + +patches: + - path: patch-deployment.yaml + target: + kind: Deployment diff --git a/components/app-configs/notebook-standalone/components/nemo/patch-deployment.yaml b/components/app-configs/notebook-standalone/components/nemo/patch-deployment.yaml new file mode 100644 index 00000000..5da5d362 --- /dev/null +++ b/components/app-configs/notebook-standalone/components/nemo/patch-deployment.yaml @@ -0,0 +1,28 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: notebook +spec: + template: + spec: + containers: + - name: notebook + image: nvcr.io/nvidia/nemo:dev + env: + - name: HOME + value: /workspace + command: + - /bin/sh + - -c + - | + #!/bin/sh + jupyter lab \ + --ServerApp.ip=0.0.0.0 \ + --ServerApp.port=8787 \ + --ServerApp.allow_origin="*" \ + --ServerApp.open_browser=False \ + --ServerApp.token='' + volumeMounts: + - name: home + mountPath: /workspace + subPath: data diff --git a/components/app-configs/notebook-standalone/components/odh-rstudio/kustomization.yaml b/components/app-configs/notebook-standalone/components/odh-rstudio/kustomization.yaml new file mode 100644 index 00000000..195d1fd9 --- /dev/null +++ b/components/app-configs/notebook-standalone/components/odh-rstudio/kustomization.yaml @@ -0,0 +1,32 @@ +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component + +patches: + - path: patch-deployment.yaml + target: + kind: Deployment + - patch: |- + - op: replace + path: /spec/template/spec/containers/0/ports/0 + value: + containerPort: 8787 + protocol: TCP + name: notebook + target: + kind: Deployment + - patch: |- + - op: replace + path: /spec/ports/0 + value: + name: notebook + protocol: TCP + port: 8787 + targetPort: 8787 + target: + kind: Service + - patch: |- + - op: replace + path: /spec/port/targetPort + value: 8787 + target: + kind: Route diff --git a/components/app-configs/notebook-standalone/components/odh-rstudio/patch-deployment.yaml b/components/app-configs/notebook-standalone/components/odh-rstudio/patch-deployment.yaml new file mode 100644 index 00000000..56c357ea --- /dev/null +++ b/components/app-configs/notebook-standalone/components/odh-rstudio/patch-deployment.yaml @@ -0,0 +1,10 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: notebook +spec: + template: + spec: + containers: + - name: notebook + image: quay.io/opendatahub-contrib/workbench-images:rstudio-c9s-py39_2023b_latest diff --git a/components/app-configs/notebook-standalone/components/rstudio/kustomization.yaml b/components/app-configs/notebook-standalone/components/rstudio/kustomization.yaml new file mode 100644 index 00000000..02f6c6d8 --- /dev/null +++ b/components/app-configs/notebook-standalone/components/rstudio/kustomization.yaml @@ -0,0 +1,7 @@ +apiVersion: kustomize.config.k8s.io/v1alpha1 +kind: Component + +patches: + - path: patch-deployment.yaml + target: + kind: Deployment diff --git a/components/app-configs/notebook-standalone/components/rstudio/patch-deployment.yaml b/components/app-configs/notebook-standalone/components/rstudio/patch-deployment.yaml new file mode 100644 index 00000000..0c6af167 --- /dev/null +++ b/components/app-configs/notebook-standalone/components/rstudio/patch-deployment.yaml @@ -0,0 +1,14 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: notebook +spec: + template: + spec: + containers: + - name: notebook + image: docker.io/kubeflownotebookswg/rstudio + volumeMounts: + - name: home + mountPath: /home/jovyan + subPath: data diff --git a/components/app-configs/notebook-standalone/deployment.yaml b/components/app-configs/notebook-standalone/deployment.yaml deleted file mode 100644 index dd41dd02..00000000 --- a/components/app-configs/notebook-standalone/deployment.yaml +++ /dev/null @@ -1,52 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: jupyter - labels: - app: jupyter - annotations: - argocd.argoproj.io/sync-wave: "1" -spec: - replicas: 1 - selector: - matchLabels: - app: jupyter - strategy: - type: Recreate - template: - metadata: - labels: - app: jupyter - spec: - containers: - - name: jupyter - # args: - # - jupyter server /data --console-address :9090 - # command: - # - /bin/bash - # - -c - image: quay.io/opendatahub-contrib/workbench-images:rstudio-c9s-py39_2023b_latest - ports: - - containerPort: 8787 - protocol: TCP - name: notebook - - containerPort: 8000 - protocol: TCP - name: demo - resources: - requests: - cpu: 200m - memory: 1Gi - limits: - cpu: '2' - memory: 2Gi - volumeMounts: - - mountPath: /opt/app-root/src - name: jupyter - volumes: - - persistentVolumeClaim: - claimName: jupyter - name: jupyter - - name: empty - emptyDir: {} diff --git a/components/app-configs/notebook-standalone/overlays/code-server/kustomization.yaml b/components/app-configs/notebook-standalone/overlays/code-server/kustomization.yaml new file mode 100644 index 00000000..394a64a1 --- /dev/null +++ b/components/app-configs/notebook-standalone/overlays/code-server/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +components: +- ../../components/code-server + +resources: +- ../../base diff --git a/components/app-configs/notebook-standalone/overlays/default/kustomization.yaml b/components/app-configs/notebook-standalone/overlays/default/kustomization.yaml new file mode 100644 index 00000000..2b87e6b1 --- /dev/null +++ b/components/app-configs/notebook-standalone/overlays/default/kustomization.yaml @@ -0,0 +1,5 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: +- ../../base diff --git a/components/app-configs/notebook-standalone/overlays/gpu/kustomization.yaml b/components/app-configs/notebook-standalone/overlays/gpu/kustomization.yaml new file mode 100644 index 00000000..ab768395 --- /dev/null +++ b/components/app-configs/notebook-standalone/overlays/gpu/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +components: +- ../../components/gpu + +resources: +- ../../base diff --git a/components/app-configs/notebook-standalone/overlays/nemo/kustomization.yaml b/components/app-configs/notebook-standalone/overlays/nemo/kustomization.yaml new file mode 100644 index 00000000..36ed893a --- /dev/null +++ b/components/app-configs/notebook-standalone/overlays/nemo/kustomization.yaml @@ -0,0 +1,9 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +components: +- ../../components/gpu +- ../../components/nemo + +resources: +- ../../base diff --git a/components/app-configs/notebook-standalone/overlays/odh-rstudio/kustomization.yaml b/components/app-configs/notebook-standalone/overlays/odh-rstudio/kustomization.yaml new file mode 100644 index 00000000..310951ea --- /dev/null +++ b/components/app-configs/notebook-standalone/overlays/odh-rstudio/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +components: +- ../../components/odh-rstudio + +resources: +- ../../base diff --git a/components/app-configs/notebook-standalone/overlays/rstudio/kustomization.yaml b/components/app-configs/notebook-standalone/overlays/rstudio/kustomization.yaml new file mode 100644 index 00000000..f4c77318 --- /dev/null +++ b/components/app-configs/notebook-standalone/overlays/rstudio/kustomization.yaml @@ -0,0 +1,8 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +components: +- ../../components/rstudio + +resources: +- ../../base diff --git a/components/app-configs/notebook-standalone/template.yaml b/components/app-configs/notebook-standalone/template.yaml deleted file mode 100644 index 99cf3643..00000000 --- a/components/app-configs/notebook-standalone/template.yaml +++ /dev/null @@ -1,365 +0,0 @@ ---- -kind: Template -apiVersion: template.openshift.io/v1 -labels: - template: standalone-notebook - app.kubernetes.io/part-of: standalone-notebook - app.kubernetes.io/component: ide -metadata: - name: standalone-notebook - labels: - template: standalone-notebook - annotations: - openshift.io/display-name: A Standalone Jupyter Notebook - openshift.io/provider-display-name: Community - description: Data Science Notebook in OpenShift - iconClass: icon-python - tags: python - openshift.io/documentation-url: "https://github.com/redhat-na-ssa/demo-ai-gitops-catalog" - openshift.io/support-url: "https://github.com/redhat-na-ssa/demo-ai-gitops-catalog/issues" - template.openshift.io/bindable: "false" -parameters: -- name: APPLICATION_NAME - displayName: Application Name - required: true - value: standalone-notebook -- name: VOLUME_SIZE - displayName: Volume Size - value: 5Gi - required: true -- name: NOTEBOOK_MEM_LIMIT - displayName: Notebook Memory Limit - value: 1792Mi - required: true - description: Consider the pod quota limits on your namespace -- name: NOTEBOOK_CPU_LIMIT - displayName: Notebook CPU Limit - value: 1700m - required: true - description: Consider the pod quota limits on your namespace -- name: WEBDAV_MEM_LIMIT - displayName: WebDav Memory Limit - value: 256M - required: true - description: Consider the pod quota limits on your namespace -- name: WEBDAV_CPU_LIMIT - displayName: WebDav CPU Limit - value: 300m - required: true - description: Consider the pod quota limits on your namespace -- name: NOTEBOOK_PASSWORD - displayName: Notebook Password - from: "[A-Za-z0-9]{32}" - generate: expression - required: true - description: Password for Notebook -- name: NOTEBOOK_IMAGE - description: The base image for notebook - value: quay.io/opendatahub-contrib/workbench-images:code-server-ubi9-py39_2023b_latest - required: true -- name: WEBDAV_NODE_IMAGE - description: The base image for WebDav - value: quay.io/codekow/webdav:latest - required: true -message: |- - The following application has been created in your project: ${APPLICATION_NAME}. - - For more information about using this template, including OpenShift considerations, - see "https://github.com/redhat-na-ssa/demo-ai-gitops-catalog" -objects: -- kind: ImageStream - apiVersion: image.openshift.io/v1 - metadata: - labels: - app: ${APPLICATION_NAME} - app.kubernetes.io/name: ${APPLICATION_NAME} - name: ${APPLICATION_NAME} - spec: - lookupPolicy: - local: true - tags: - - name: base - from: - kind: DockerImage - name: ${NOTEBOOK_IMAGE} - importPolicy: - scheduled: true - referencePolicy: - type: Source -- kind: ImageStream - apiVersion: image.openshift.io/v1 - metadata: - labels: - app: webdav-node - app.kubernetes.io/name: webdav-node - name: webdav-node - spec: - lookupPolicy: - local: true - tags: - - name: latest - from: - kind: DockerImage - name: ${WEBDAV_NODE_IMAGE} - importPolicy: - scheduled: true - referencePolicy: - type: Source -- apiVersion: build.openshift.io/v1 - kind: BuildConfig - metadata: - labels: - build: standalone-notebook - app: ${APPLICATION_NAME} - name: ${APPLICATION_NAME} - spec: - output: - to: - kind: ImageStreamTag - name: '${APPLICATION_NAME}:latest' - runPolicy: SerialLatestOnly - source: - dockerfile: | - FROM ${APPLICATION_NAME}:base - - USER root - - # add: ubuntu dependencies - # RUN apt update && \ - # apt -y install --no-install-recommends tree && \ - # rm -rf /var/lib/apt/lists/* - - # add: rhel dependencies - # RUN yum makecache && \ - # yum -y install tree && \ - # yum -y clean all && \ - # rm -rf /var/cache - - USER 1001 - - type: Dockerfile - strategy: - dockerStrategy: - from: - kind: ImageStreamTag - name: '${APPLICATION_NAME}:base' - type: Docker - successfulBuildsHistoryLimit: 5 - triggers: - - type: ImageChange - imageChange: - from: - kind: ImageStreamTag - name: '${APPLICATION_NAME}:base' - - type: ConfigChange -- kind: Secret - apiVersion: v1 - type: kubernetes.io/basic-auth - metadata: - name: "${APPLICATION_NAME}-secret" - labels: - app: ${APPLICATION_NAME} - app.kubernetes.io/name: ${APPLICATION_NAME} - stringData: - password: ${NOTEBOOK_PASSWORD} - username: coder -- kind: PersistentVolumeClaim - apiVersion: v1 - metadata: - name: "${APPLICATION_NAME}-data" - labels: - app: ${APPLICATION_NAME} - app.kubernetes.io/name: ${APPLICATION_NAME} - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: "${VOLUME_SIZE}" -- kind: Deployment - apiVersion: apps/v1 - metadata: - name: ${APPLICATION_NAME} - labels: - app: ${APPLICATION_NAME} - app.kubernetes.io/name: ${APPLICATION_NAME} - spec: - replicas: 1 - selector: - matchLabels: - app: ${APPLICATION_NAME} - deployment: ${APPLICATION_NAME} - strategy: - type: Recreate - template: - metadata: - labels: - app: ${APPLICATION_NAME} - deployment: ${APPLICATION_NAME} - spec: - containers: - - name: standalone-notebook - image: ${APPLICATION_NAME}:latest - imagePullPolicy: Always - env: - - name: PASSWORD - valueFrom: - secretKeyRef: - key: password - name: "${APPLICATION_NAME}-secret" - ports: - - containerPort: 8787 - protocol: TCP - - containerPort: 8000 - protocol: TCP - readinessProbe: - failureThreshold: 2 - httpGet: - path: / - port: 8787 - scheme: HTTP - initialDelaySeconds: 10 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 - livenessProbe: - failureThreshold: 2 - httpGet: - path: / - port: 8787 - scheme: HTTP - initialDelaySeconds: 10 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 3 - resources: - limits: - cpu: ${NOTEBOOK_CPU_LIMIT} - memory: ${NOTEBOOK_MEM_LIMIT} - volumeMounts: - - mountPath: /home/coder - name: coder-home - - name: webdav-server - image: webdav-node:latest - ports: - - containerPort: 1338 - protocol: TCP - env: - - name: WEBDAV_USER - value: coder - - name: WEBDAV_PASS - valueFrom: - secretKeyRef: - key: password - name: "${APPLICATION_NAME}-secret" - - name: WEBDAV_PATH - value: /home/coder - - name: WEBDAV_PORT - value: "1338" - resources: - limits: - cpu: ${WEBDAV_CPU_LIMIT} - memory: ${WEBDAV_MEM_LIMIT} - volumeMounts: - - mountPath: /home/coder - name: coder-home - volumes: - - name: coder-home - persistentVolumeClaim: - claimName: "${APPLICATION_NAME}-data" - triggers: - - type: ConfigChange - - type: ImageChange - imageChangeParams: - automatic: true - containerNames: - - standalone-notebook - from: - kind: ImageStreamTag - name: "${APPLICATION_NAME}:latest" - - type: ImageChange - imageChangeParams: - automatic: true - containerNames: - - webdav-server - from: - kind: ImageStreamTag - name: "webdav-node:latest" -- kind: Service - apiVersion: v1 - metadata: - name: ${APPLICATION_NAME} - labels: - app: ${APPLICATION_NAME} - app.kubernetes.io/name: ${APPLICATION_NAME} - spec: - ports: - - name: 8787-tcp - protocol: TCP - port: 8787 - targetPort: 8787 - - name: 1338-tcp - port: 1338 - targetPort: 1338 - - name: 8080-tcp - protocol: TCP - port: 8080 - targetPort: 8080 - selector: - app: ${APPLICATION_NAME} - deployment: ${APPLICATION_NAME} -- kind: Route - apiVersion: route.openshift.io/v1 - metadata: - name: ${APPLICATION_NAME} - labels: - app: ${APPLICATION_NAME} - app.kubernetes.io/name: ${APPLICATION_NAME} - spec: - host: "" - to: - kind: Service - name: ${APPLICATION_NAME} - weight: 100 - port: - targetPort: 8787-tcp - tls: - termination: edge - insecureEdgeTerminationPolicy: Redirect -- kind: Route - apiVersion: route.openshift.io/v1 - metadata: - name: "${APPLICATION_NAME}-webdav" - labels: - app: ${APPLICATION_NAME} - app.kubernetes.io/name: ${APPLICATION_NAME} - app.kubernetes.io/component: webdav-server - spec: - host: "" - to: - kind: Service - name: ${APPLICATION_NAME} - weight: 100 - port: - targetPort: 1338-tcp - tls: - termination: edge - insecureEdgeTerminationPolicy: Redirect -- kind: Route - apiVersion: route.openshift.io/v1 - metadata: - name: "${APPLICATION_NAME}-demo" - labels: - app: ${APPLICATION_NAME} - app.kubernetes.io/name: ${APPLICATION_NAME} - spec: - host: "" - to: - kind: Service - name: ${APPLICATION_NAME} - weight: 100 - port: - targetPort: 8080-tcp - tls: - termination: edge - insecureEdgeTerminationPolicy: Redirect