diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2ff66d161..944b19862 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -9,14 +9,14 @@ jobs: runs-on: ubuntu-latest steps: - - uses: azure/setup-helm@v1 + - uses: azure/setup-helm@v4 with: - version: '3.8.2' + version: '3.9.1' - name: helm version run: helm version - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Add Helm repos run: make repo-add update-req @@ -52,7 +52,6 @@ jobs: - pvc - scaler - spark-operator - - sparkoperator - tenant - tenant-creator - tensorboard @@ -65,7 +64,6 @@ jobs: # - hive # - jupyter # - jupyterhub - # - label-studio # - mariadb # - metrics-server-exporter # - mlrun @@ -76,15 +74,13 @@ jobs: # - spark # - spark-history-server # - v3io-framesd - # - zeppelin # Other Problematic Charts # - k8s-pod-headless-service-operator # requires manual setting image tag - # - tsdb-functions # requires nuclio CRDs to be installed # - mlrun-kit # mysql pod not starting in minikube in github workflows steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Check if chart changed id: chart_changed @@ -99,16 +95,16 @@ jobs: chmod +x "${GITHUB_WORKSPACE}/hack/scripts/ci/free_space.sh" "${GITHUB_WORKSPACE}/hack/scripts/ci/free_space.sh" - - uses: azure/setup-helm@v1 + - uses: azure/setup-helm@v4 if: steps.chart_changed.outputs.any_changed == 'true' with: version: "v3.9.1" - - uses: manusa/actions-setup-minikube@v2.7.1 + - uses: manusa/actions-setup-minikube@v2.10.0 if: steps.chart_changed.outputs.any_changed == 'true' with: - minikube version: "v1.26.1" - kubernetes version: "v1.23.9" + minikube version: "v1.32.0" + kubernetes version: "v1.29.0" driver: docker github token: ${{ github.token }} diff --git a/stable/label-studio/.helmignore b/stable/label-studio/.helmignore deleted file mode 100644 index f0c131944..000000000 --- a/stable/label-studio/.helmignore +++ /dev/null @@ -1,21 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj diff --git a/stable/label-studio/Chart.yaml b/stable/label-studio/Chart.yaml deleted file mode 100644 index 8b515eb97..000000000 --- a/stable/label-studio/Chart.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -version: 0.3.2 -appVersion: 0.8.2 -description: A swiss army knife of data labeling and annotation tools -deprecated: true -name: label-studio -home: https://labelstud.io/ -icon: https://labelstud.io/images/ls_logo.png -sources: - - https://github.com/heartexlabs/label-studio -maintainers: - - name: odedm - email: odedm@iguazio.com - diff --git a/stable/label-studio/README.md b/stable/label-studio/README.md deleted file mode 100644 index 3d28f6bcd..000000000 --- a/stable/label-studio/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Label Studio - -Provides installation of the Label Studio service - -## Installing the Chart - -To install the chart with the release name `my-release`: - -```bash -$ helm install my-release v3io-stable/label-studio -``` - -## Configuration - -Configurable values are documented in the `values.yaml`. - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. - -```bash -$ helm install my-release --set project.name=project_a v3io-stable/label-studio -``` - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, - -```bash -$ helm install my-release -f values.yaml v3io-stable/label-studio -``` - - -Example of installing the chart and setting a node port: -```bash -$ helm install my-release --set service.type=NodePort --set service.nodePort=30030 v3io-stable/label-studio -``` - -> **Tip**: You can use the default [values.yaml](values.yaml) diff --git a/stable/label-studio/requirements.yaml b/stable/label-studio/requirements.yaml deleted file mode 100644 index 8129e96dd..000000000 --- a/stable/label-studio/requirements.yaml +++ /dev/null @@ -1,4 +0,0 @@ -dependencies: -- name: v3io-configs - version: "0.12.2" - repository: https://v3io.github.io/helm-charts/stable diff --git a/stable/label-studio/templates/_helpers.tpl b/stable/label-studio/templates/_helpers.tpl deleted file mode 100644 index 70c728c7f..000000000 --- a/stable/label-studio/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "label-studio.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "label-studio.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "label-studio.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Allow overriding of service account and clusterrole names. -*/}} -{{- define "label-studio.serviceAccountName" -}} -{{- default (include "label-studio.fullname" .) .Values.rbac.serviceAccountName -}} -{{- end -}} - -{{- define "label-studio.roleName" -}} -{{- default (include "label-studio.fullname" .) .Values.rbac.roleName -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "label-studio.common.labels" -}} -{{ include "label-studio.common.selectorLabels" . }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -app.kubernetes.io/part-of: "label-studio" -app.kubernetes.io/managed-by: {{ .Release.Service }} -helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} -{{- end -}} - -{{/* -Common selector labels -*/}} -{{- define "label-studio.common.selectorLabels" -}} -app.kubernetes.io/name: {{ include "label-studio.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end -}} diff --git a/stable/label-studio/templates/deployment.yaml b/stable/label-studio/templates/deployment.yaml deleted file mode 100644 index 6fc73d56c..000000000 --- a/stable/label-studio/templates/deployment.yaml +++ /dev/null @@ -1,89 +0,0 @@ -{{- if .Values.deployment.create }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "label-studio.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "label-studio.common.labels" . | nindent 4 }} -spec: - replicas: 1 - selector: - matchLabels: -{{- include "label-studio.common.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: -{{- include "label-studio.common.labels" . | nindent 8 }} - spec: - serviceAccountName: {{ template "label-studio.serviceAccountName" . }} - containers: - - name: label-studio - image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}" - imagePullPolicy: {{ .Values.deployment.image.pullPolicy }} - env: - - name: PROJECT_NAME - value: "{{ .Values.deployment.project.name }}" -{{- if .Values.environment }} -{{- range $name, $val := .Values.environment.extra }} - - name: {{ $name }} - value: {{ $val | quote }} -{{ end -}} -{{- if .Values.environment.template }} -{{ include .Values.environment.template . | indent 8 }} -{{- end }} -{{- end }} - command: ["label-studio"] - args: - - start - - "{{ .Values.deployment.project.name }}" - {{- if .Values.deployment.project.initialize }} - - --init - {{- end }} - {{- if .Values.deployment.project.forceInitialize }} - - --force - {{- end }} - ports: - - name: http - containerPort: 8080 - protocol: TCP - volumeMounts: - - mountPath: "/label-studio/{{ .Values.deployment.project.name }}" - name: project-data - - mountPath: "/label-studio/{{ .Values.deployment.project.name }}-data" - name: user-data - - mountPath: /User/v3io - name: v3io-fuse -{{- if .Values.volumes }} -{{ include .Values.volumes.volumeMountsTemplate . | indent 8 }} -{{- end }} - livenessProbe: -{{ toYaml .Values.deployment.livenessProbe | indent 10 }} - readinessProbe: -{{ toYaml .Values.deployment.readinessProbe | indent 10 }} - resources: -{{ toYaml .Values.resources | indent 10 }} - volumes: - - name: project-data - emptyDir: {} - - name: user-data - emptyDir: {} -{{- if .Values.volumes }} -{{ include .Values.volumes.volumesTemplate . | indent 8 }} -{{- end }} -{{- with .Values.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 8 }} -{{- end }} -{{- with .Values.tolerations }} - tolerations: -{{ toYaml . | indent 8 }} -{{- end }} -{{- with .Values.affinity }} - affinity: -{{ toYaml . | indent 8 }} -{{- end }} -{{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName | quote }} -{{- end }} -{{- end }} diff --git a/stable/label-studio/templates/role.yaml b/stable/label-studio/templates/role.yaml deleted file mode 100644 index 4ee7fcb3b..000000000 --- a/stable/label-studio/templates/role.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ template "label-studio.roleName" . }} - labels: - {{ include "label-studio.common.labels" . | nindent 4 }} -rules: [] -{{- end }} diff --git a/stable/label-studio/templates/rolebinding.yaml b/stable/label-studio/templates/rolebinding.yaml deleted file mode 100644 index 15582913e..000000000 --- a/stable/label-studio/templates/rolebinding.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ template "label-studio.fullname" . }} - labels: - {{ include "label-studio.common.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "label-studio.roleName" . }} -subjects: -- kind: ServiceAccount - name: {{ template "label-studio.serviceAccountName" . }} -{{- end -}} diff --git a/stable/label-studio/templates/service.yaml b/stable/label-studio/templates/service.yaml deleted file mode 100644 index 3e5a7fae2..000000000 --- a/stable/label-studio/templates/service.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "label-studio.fullname" . }} - labels: - {{- include "label-studio.common.labels" . | nindent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - name: http - port: {{ .Values.service.port }} - protocol: TCP - targetPort: http -{{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }} - nodePort: {{.Values.service.nodePort}} -{{- end }} - selector: - {{- include "label-studio.common.selectorLabels" . | nindent 4 }} diff --git a/stable/label-studio/templates/serviceaccount.yaml b/stable/label-studio/templates/serviceaccount.yaml deleted file mode 100644 index c749dbbea..000000000 --- a/stable/label-studio/templates/serviceaccount.yaml +++ /dev/null @@ -1,8 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "label-studio.serviceAccountName" . }} - labels: - {{- include "label-studio.common.labels" . | nindent 4 }} -{{- end -}} diff --git a/stable/label-studio/templates/v3io-auth-secret.yaml b/stable/label-studio/templates/v3io-auth-secret.yaml deleted file mode 100644 index 149edbbe3..000000000 --- a/stable/label-studio/templates/v3io-auth-secret.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Release.Name }}-v3io-auth - labels: - app: {{ template "label-studio.name" . }} - chart: {{ template "label-studio.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -data: -{{ include "v3io-configs.auth.secret" . | indent 2 }} diff --git a/stable/label-studio/templates/v3io-config-configmap.yaml b/stable/label-studio/templates/v3io-config-configmap.yaml deleted file mode 100644 index a89fb7c2b..000000000 --- a/stable/label-studio/templates/v3io-config-configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-v3io-config - labels: - app: {{ template "label-studio.name" . }} - chart: {{ template "label-studio.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -data: -{{ include "v3io-configs.java.configMap" . | indent 2 }} - diff --git a/stable/label-studio/values.yaml b/stable/label-studio/values.yaml deleted file mode 100644 index 12fb1208b..000000000 --- a/stable/label-studio/values.yaml +++ /dev/null @@ -1,84 +0,0 @@ -# nameOverride: -# fullnameOverride: - -deployment: - create: true - project: - name: "my_project" - initialize: true - forceInitialize: false - image: - repository: "heartexlabs/label-studio" - tag: 0.8.2 - pullPolicy: IfNotPresent - - readinessProbe: - httpGet: - path: /api/health - port: 8080 - initialDelaySeconds: 5 - periodSeconds: 5 - timeoutSeconds: 10 - - livenessProbe: - httpGet: - path: /api/health - port: 8080 - initialDelaySeconds: 60 - timeoutSeconds: 30 - periodSeconds: 10 - failureThreshold: 10 - -service: - type: ClusterIP - port: 8080 - # nodePort: 30030 - -rbac: - create: true - # serviceAccountName: - # roleName: - -v3io: {} - -environment: - template: v3io-configs.deployment-with-home.env - extra: {} - -volumes: - volumesTemplate: v3io-configs.deployment.mount-with-fuse - volumeMountsTemplate: v3io-configs.deployment.volumeMounts-with-fuse-and-home - -global: - v3io: - configMountPath: /etc/config/v3io - -resources: {} - # We usually recommend not to specify default resources and to leave this as a conscious - # choice for the user. This also increases chances charts run on environments with little - # resources, such as Minikube. If you do want to specify resources, uncomment the following - # lines, adjust them as necessary, and remove the curly braces after 'resources:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -## Node labels for pod assignment -## Ref: https://kubernetes.io/docs/user-guide/node-selection/ -## -nodeSelector: {} - -## List of node taints to tolerate (requires Kubernetes >= 1.6) -tolerations: [] -# - key: "key" -# operator: "Equal|Exists" -# value: "value" -# effect: "NoSchedule|PreferNoSchedule|NoExecute" - -## Affinity -## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity -affinity: {} - -priorityClassName: "" diff --git a/stable/mlrun-kit/requirements.lock b/stable/mlrun-kit/requirements.lock index ad57b4704..ed138cd43 100644 --- a/stable/mlrun-kit/requirements.lock +++ b/stable/mlrun-kit/requirements.lock @@ -12,10 +12,10 @@ dependencies: repository: https://charts.min.io/ version: 4.0.2 - name: spark-operator - repository: https://googlecloudplatform.github.io/spark-on-k8s-operator + repository: https://kubeflow.github.io/spark-operator version: 1.1.25 - name: kube-prometheus-stack repository: https://prometheus-community.github.io/helm-charts version: 39.6.0 -digest: sha256:1f19304db4f4a2e772fb7401e33ac98aea8f93a2b6c85d788a538af9706dda92 -generated: "2022-08-14T11:48:43.2664916+03:00" +digest: sha256:e9d2a53a7cdb63d72aa0a11e765afa7d3ecd0c107f0e5e83a6a59732eb6d6349 +generated: "2024-04-17T13:16:58.689961+03:00" diff --git a/stable/mlrun-kit/requirements.yaml b/stable/mlrun-kit/requirements.yaml index 9bb011ca9..396a3d4c4 100644 --- a/stable/mlrun-kit/requirements.yaml +++ b/stable/mlrun-kit/requirements.yaml @@ -13,7 +13,7 @@ dependencies: version: "4.0.2" condition: minio.enabled - name: spark-operator - repository: "https://googlecloudplatform.github.io/spark-on-k8s-operator" + repository: "https://kubeflow.github.io/spark-operator" version: "1.1.25" condition: spark-operator.enabled - name: kube-prometheus-stack diff --git a/stable/sparkoperator/.helmignore b/stable/sparkoperator/.helmignore deleted file mode 100644 index b7f6f9f10..000000000 --- a/stable/sparkoperator/.helmignore +++ /dev/null @@ -1 +0,0 @@ -OWNERS diff --git a/stable/sparkoperator/Chart.yaml b/stable/sparkoperator/Chart.yaml deleted file mode 100644 index 092c9705e..000000000 --- a/stable/sparkoperator/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -name: sparkoperator -description: A Helm chart for Spark on Kubernetes operator -version: 1.7.0 -deprecated: true -appVersion: v1beta2-1.0.1-2.4.4 -icon: http://spark.apache.org/images/spark-logo-trademark.png -keywords: - - spark -home: https://github.com/GoogleCloudPlatform/spark-on-k8s-operator -maintainers: - - name: Uri Hoenig - email: urih@iguazio.com diff --git a/stable/sparkoperator/OWNERS b/stable/sparkoperator/OWNERS deleted file mode 100644 index c9bde5d24..000000000 --- a/stable/sparkoperator/OWNERS +++ /dev/null @@ -1,6 +0,0 @@ -approvers: -- yuchaoran2011 -- liyinan926 -reviewers: -- yuchaoran2011 -- liyinan926 diff --git a/stable/sparkoperator/README.md b/stable/sparkoperator/README.md deleted file mode 100644 index a81a05501..000000000 --- a/stable/sparkoperator/README.md +++ /dev/null @@ -1,50 +0,0 @@ -### Helm Chart for Spark Operator - -This is the Helm chart for the [Kubernetes Operator for Apache Spark](https://github.com/GoogleCloudPlatform/spark-on-k8s-operator). - -#### Prerequisites - -The Operator requires Kubernetes version 1.8 and above because it relies on garbage collection of custom resources. If customization of driver and executor pods (through mounting custom ConfigMaps and volumes) is desired, then the [Mutating Admission Webhook](https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/blob/master/docs/quick-start-guide.md#using-the-mutating-admission-webhook) needs to be enabled and it only became beta in Kubernetes 1.9. - -#### Installing the chart - -The chart can be installed by running: - -```bash -$ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator -$ helm install incubator/sparkoperator --namespace spark-operator --set sparkJobNamespace=default -``` - -Note that you need to use the `--namespace` flag during `helm install` to specify in which namespace you want to install the operator. The namespace can be existing or not. When it's not available, Helm would take care of creating the namespace. Note that this namespace has no relation to the namespace where you would like to deploy Spark jobs (i.e. the setting `sparkJobNamespace` shown in the table below). They can be the same namespace or different ones. - -#### Configuration - -The following table lists the configurable parameters of the Spark operator chart and their default values. - -| Parameter | Description | Default | -| ------------------------- | ------------------------------------------------------------ | -------------------------------------- | -| `operatorImageName` | The name of the operator image | `gcr.io/spark-operator/spark-operator` | -| `operatorVersion` | The version of the operator to install | `v1beta2-1.0.1-2.4.4` | -| `imagePullPolicy` | Docker image pull policy | `IfNotPresent` | -| `imagePullSecrets` | Docker image pull secrets | | -| `replicas` | The number of replicas of the operator Deployment | 1 | -| `sparkJobNamespace` | K8s namespace where Spark jobs are to be deployed | `` | -| `enableWebhook` | Whether to enable mutating admission webhook | false | -| `enableMetrics` | Whether to expose metrics to be scraped by Prometheus | true | -| `controllerThreads` | Number of worker threads used by the SparkApplication controller | 10 | -| `ingressUrlFormat` | Ingress URL format | "" | -| `logLevel` | Logging verbosity level | 2 | -| `installCrds` | Whether to install CRDs | true | -| `metricsPort` | Port for the metrics endpoint | 10254 | -| `metricsEndpoint` | Metrics endpoint | "/metrics" | -| `metricsPrefix` | Prefix for the metrics | "" | -| `podAnnotations` | annotations to be added to pods | `{}` | -| `resyncInterval` | Informer resync interval in seconds | 30 | -| `webhookPort` | Service port of the webhook server | 8080 | -| `resources` | Resources needed for the sparkoperator deployment | {} | -| `enableBatchScheduler` | Whether to enable batch scheduler for pod scheduling | false | -| `enableResourceQuotaEnforcement` | Whether to enable the ResourceQuota enforcement for SparkApplication resources. Requires the webhook to be enabled by setting enableWebhook to true. | false | -| `enableLeaderElection` | Whether to enable leader election when the operator Deployment has more than one replica, i.e., when `replicas` is greater than 1. | false | -| `securityContext` | Defines security context for operator container | `{}` - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. diff --git a/stable/sparkoperator/requirements.lock b/stable/sparkoperator/requirements.lock deleted file mode 100644 index 2a31dfdf4..000000000 --- a/stable/sparkoperator/requirements.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: v3io-configs - repository: https://v3io.github.io/helm-charts/stable - version: 0.11.3 -digest: sha256:5aaf04843eda9eab85b3608b6ff41e6bd8ff4301ee915bc44f2b980003348e54 -generated: "2022-03-09T16:39:23.166859044+02:00" diff --git a/stable/sparkoperator/requirements.yaml b/stable/sparkoperator/requirements.yaml deleted file mode 100644 index e9c01d811..000000000 --- a/stable/sparkoperator/requirements.yaml +++ /dev/null @@ -1,5 +0,0 @@ -dependencies: -- name: v3io-configs - version: "0.11.3" - repository: https://v3io.github.io/helm-charts/stable - diff --git a/stable/sparkoperator/templates/_helpers.tpl b/stable/sparkoperator/templates/_helpers.tpl deleted file mode 100644 index d43e38ff9..000000000 --- a/stable/sparkoperator/templates/_helpers.tpl +++ /dev/null @@ -1,59 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "sparkoperator.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - {{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "sparkoperator.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - {{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "sparkoperator.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - {{/* -Create the name of the service account to use -*/}} -{{- define "sparkoperator.serviceAccountName" -}} -{{- if .Values.serviceAccounts.sparkoperator.create -}} - {{ default (include "sparkoperator.fullname" .) .Values.serviceAccounts.sparkoperator.name }} -{{- else -}} - {{ default "default" .Values.serviceAccounts.sparkoperator.name }} -{{- end -}} -{{- end -}} -{{- define "spark.serviceAccountName" -}} -{{- if .Values.serviceAccounts.spark.create -}} - {{ $sparkServiceaccount := printf "%s-%s" .Release.Name "spark" }} - {{ default $sparkServiceaccount .Values.serviceAccounts.spark.name }} -{{- else -}} - {{ default "default" .Values.serviceAccounts.spark.name }} -{{- end -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for CRD APIs. -*/}} -{{- define "crd.apiVersion" -}} -{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} -{{- print "apiextensions.k8s.io/v1" }} -{{- else -}} -{{- print "apiextensions.k8s.io/v1beta1" }} -{{- end -}} -{{- end -}} diff --git a/stable/sparkoperator/templates/crd-cleanup-job.yaml b/stable/sparkoperator/templates/crd-cleanup-job.yaml deleted file mode 100644 index 7a24ceb06..000000000 --- a/stable/sparkoperator/templates/crd-cleanup-job.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{ if .Values.crd.create }} -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ include "sparkoperator.fullname" . }}-crd-cleanup - namespace: {{ .Release.Namespace }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -spec: - template: - spec: - serviceAccountName: {{ include "sparkoperator.serviceAccountName" . }} - restartPolicy: OnFailure - imagePullSecrets: -{{ toYaml .Values.imagePullSecrets | trim | indent 8 }} - containers: - - name: delete-sparkapp-crd - image: {{ .Values.operatorImageName }}:{{ .Values.operatorVersion }} - imagePullPolicy: {{ .Values.imagePullPolicy }} - command: - - "/bin/sh" - - "-c" - - "curl -ik \ - -X DELETE \ - -H \"Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)\" \ - -H \"Accept: application/json\" \ - -H \"Content-Type: application/json\" \ - https://kubernetes.default.svc/apis/apiextensions.k8s.io/v1/customresourcedefinitions/sparkapplications.sparkoperator.k8s.io" - - name: delete-scheduledsparkapp-crd - image: {{ .Values.operatorImageName }}:{{ .Values.operatorVersion }} - imagePullPolicy: {{ .Values.imagePullPolicy }} - command: - - "/bin/sh" - - "-c" - - "curl -ik \ - -X DELETE \ - -H \"Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)\" \ - -H \"Accept: application/json\" \ - -H \"Content-Type: application/json\" \ - https://kubernetes.default.svc/apis/apiextensions.k8s.io/v1/customresourcedefinitions/scheduledsparkapplications.sparkoperator.k8s.io" -{{ end }} diff --git a/stable/sparkoperator/templates/crds.yaml b/stable/sparkoperator/templates/crds.yaml deleted file mode 100644 index 805be4ec7..000000000 --- a/stable/sparkoperator/templates/crds.yaml +++ /dev/null @@ -1,5117 +0,0 @@ -{{ if .Values.crd.create }} -apiVersion: {{ template "crd.apiVersion" . }} -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - name: sparkapplications.sparkoperator.k8s.io - annotations: - - # this should be the PR that approved it to kubernetes.io but...STFU - "api-approved.kubernetes.io": "https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/issues/1043" -spec: - group: sparkoperator.k8s.io - names: - kind: SparkApplication - listKind: SparkApplicationList - plural: sparkapplications - shortNames: - - sparkapp - singular: sparkapplication - scope: Namespaced -{{- if eq (include "crd.apiVersion" .) "apiextensions.k8s.io/v1beta1" }} - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - arguments: - items: - type: string - type: array - batchScheduler: - type: string - batchSchedulerOptions: - properties: - priorityClassName: - type: string - queue: - type: string - type: object - deps: - properties: - downloadTimeout: - format: int32 - minimum: 1 - type: integer - files: - items: - type: string - type: array - filesDownloadDir: - type: string - jars: - items: - type: string - type: array - jarsDownloadDir: - type: string - maxSimultaneousDownloads: - format: int32 - minimum: 1 - type: integer - pyFiles: - items: - type: string - type: array - type: object - driver: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - cores: - format: int32 - minimum: 1 - type: integer - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - podName: - pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' - type: string - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - serviceAccount: - type: string - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - executor: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - instances: - format: int32 - minimum: 1 - type: integer - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - failureRetries: - format: int32 - type: integer - hadoopConf: - additionalProperties: - type: string - type: object - hadoopConfigMap: - type: string - image: - type: string - imagePullPolicy: - type: string - imagePullSecrets: - items: - type: string - type: array - initContainerImage: - type: string - mainApplicationFile: - type: string - mainClass: - type: string - memoryOverheadFactor: - type: string - mode: - enum: - - cluster - - client - type: string - monitoring: - properties: - exposeDriverMetrics: - type: boolean - exposeExecutorMetrics: - type: boolean - metricsProperties: - type: string - prometheus: - properties: - configFile: - type: string - configuration: - type: string - jmxExporterJar: - type: string - port: - format: int32 - minimum: 1024 - maximum: 49151 - type: integer - required: - - jmxExporterJar - type: object - required: - - exposeDriverMetrics - - exposeExecutorMetrics - type: object - nodeSelector: - additionalProperties: - type: string - type: object - pythonVersion: - enum: - - "2" - - "3" - type: string - restartPolicy: - properties: - onFailureRetries: - format: int32 - minimum: 0 - type: integer - onFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - onSubmissionFailureRetries: - format: int32 - minimum: 0 - type: integer - onSubmissionFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - type: - enum: - - Never - - Always - - OnFailure - type: string - type: object - retryInterval: - format: int64 - type: integer - sparkConf: - additionalProperties: - type: string - type: object - sparkConfigMap: - type: string - sparkVersion: - type: string - timeToLiveSeconds: - format: int64 - type: integer - type: - enum: - - Java - - Python - - Scala - - R - type: string - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - required: - - driver - - executor - - mainApplicationFile - - sparkVersion - - type - type: object - required: - - metadata - - spec - type: object -{{- end }} - versions: - - name: v1beta2 - served: true - storage: true -{{- if eq (include "crd.apiVersion" .) "apiextensions.k8s.io/v1" }} - subresources: - status: {} - schema: - openAPIV3Schema: - type: object - x-kubernetes-preserve-unknown-fields: true -{{- end }} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: {{ template "crd.apiVersion" . }} -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - name: scheduledsparkapplications.sparkoperator.k8s.io - annotations: - - # this should be the PR that approved it to kubernetes.io but...STFU - "api-approved.kubernetes.io": "https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/issues/1043" -spec: - group: sparkoperator.k8s.io - names: - kind: ScheduledSparkApplication - listKind: ScheduledSparkApplicationList - plural: scheduledsparkapplications - shortNames: - - scheduledsparkapp - singular: scheduledsparkapplication - scope: Namespaced -{{- if eq (include "crd.apiVersion" .) "apiextensions.k8s.io/v1beta1" }} - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - concurrencyPolicy: - type: string - failedRunHistoryLimit: - format: int32 - type: integer - schedule: - type: string - successfulRunHistoryLimit: - format: int32 - type: integer - suspend: - type: boolean - template: - properties: - arguments: - items: - type: string - type: array - batchScheduler: - type: string - batchSchedulerOptions: - properties: - priorityClassName: - type: string - queue: - type: string - type: object - deps: - properties: - downloadTimeout: - format: int32 - minimum: 1 - type: integer - files: - items: - type: string - type: array - filesDownloadDir: - type: string - jars: - items: - type: string - type: array - jarsDownloadDir: - type: string - maxSimultaneousDownloads: - format: int32 - minimum: 1 - type: integer - pyFiles: - items: - type: string - type: array - type: object - driver: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - cores: - format: int32 - minimum: 1 - type: integer - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - podName: - pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*' - type: string - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - serviceAccount: - type: string - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - executor: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - configMaps: - items: - properties: - name: - type: string - path: - type: string - required: - - name - - path - type: object - type: array - coreLimit: - type: string - coreRequest: - type: string - cores: - format: int32 - minimum: 1 - type: integer - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - envSecretKeyRefs: - additionalProperties: - properties: - key: - type: string - name: - type: string - required: - - key - - name - type: object - type: object - envVars: - additionalProperties: - type: string - type: object - gpu: - properties: - name: - type: string - quantity: - format: int64 - type: integer - required: - - name - - quantity - type: object - hostNetwork: - type: boolean - image: - type: string - instances: - format: int32 - minimum: 1 - type: integer - javaOptions: - type: string - labels: - additionalProperties: - type: string - type: object - memory: - type: string - memoryOverhead: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - schedulerName: - type: string - secrets: - items: - properties: - name: - type: string - path: - type: string - secretType: - type: string - required: - - name - - path - - secretType - type: object - type: array - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - type: object - sidecars: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: string - - type: integer - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: string - - type: integer - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - required: - - mountPath - - name - type: object - type: array - type: object - failureRetries: - format: int32 - type: integer - hadoopConf: - additionalProperties: - type: string - type: object - hadoopConfigMap: - type: string - image: - type: string - imagePullPolicy: - type: string - imagePullSecrets: - items: - type: string - type: array - initContainerImage: - type: string - mainApplicationFile: - type: string - mainClass: - type: string - memoryOverheadFactor: - type: string - mode: - enum: - - cluster - - client - type: string - monitoring: - properties: - exposeDriverMetrics: - type: boolean - exposeExecutorMetrics: - type: boolean - metricsProperties: - type: string - prometheus: - properties: - configFile: - type: string - configuration: - type: string - jmxExporterJar: - type: string - port: - format: int32 - minimum: 1024 - maximum: 49151 - type: integer - required: - - jmxExporterJar - type: object - required: - - exposeDriverMetrics - - exposeExecutorMetrics - type: object - nodeSelector: - additionalProperties: - type: string - type: object - pythonVersion: - enum: - - "2" - - "3" - type: string - restartPolicy: - properties: - onFailureRetries: - format: int32 - minimum: 0 - type: integer - onFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - onSubmissionFailureRetries: - format: int32 - minimum: 0 - type: integer - onSubmissionFailureRetryInterval: - format: int64 - minimum: 1 - type: integer - type: - enum: - - Never - - Always - - OnFailure - type: string - type: object - retryInterval: - format: int64 - type: integer - sparkConf: - additionalProperties: - type: string - type: object - sparkConfigMap: - type: string - sparkVersion: - type: string - timeToLiveSeconds: - format: int64 - type: integer - type: - enum: - - Java - - Python - - Scala - - R - type: string - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - required: - - driver - - executor - - mainApplicationFile - - sparkVersion - - type - type: object - required: - - schedule - - template - type: object - required: - - metadata - - spec - type: object -{{- end }} - versions: - - name: v1beta2 - served: true - storage: true -{{- if eq (include "crd.apiVersion" .) "apiextensions.k8s.io/v1" }} - subresources: - status: {} - schema: - openAPIV3Schema: - type: object - x-kubernetes-preserve-unknown-fields: true -{{- end }} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] -{{ end }} diff --git a/stable/sparkoperator/templates/spark-operator-deployment.yaml b/stable/sparkoperator/templates/spark-operator-deployment.yaml deleted file mode 100644 index 00a39113a..000000000 --- a/stable/sparkoperator/templates/spark-operator-deployment.yaml +++ /dev/null @@ -1,123 +0,0 @@ -{{- if .Values.deployment.create }} -# If the admission webhook is enabled, then a post-install step is required -# to generate and install the secret in the operator namespace. - -# In the post-install hook, the token corresponding to the operator service account -# is used to authenticate with the Kubernetes API server to install the secret bundle. - - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "sparkoperator.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - app.kubernetes.io/version: {{ .Values.operatorVersion }} - strategy: - type: Recreate - template: - metadata: - {{- if or .Values.podAnnotations .Values.enableMetrics }} - annotations: - {{- if .Values.enableMetrics }} - prometheus.io/scrape: "true" - prometheus.io/port: "{{ .Values.metricsPort }}" - prometheus.io/path: {{ .Values.metricsEndpoint }} - {{- end }} - {{- if .Values.podAnnotations }} -{{ toYaml .Values.podAnnotations | trim | indent 8 }} - {{- end }} - {{- end }} - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - app.kubernetes.io/version: {{ .Values.operatorVersion }} - app.kubernetes.io/instance: {{ .Release.Name }} - spec: - hostNetwork: {{ .Values.hostNetwork.enabled }} - serviceAccountName: {{ include "sparkoperator.serviceAccountName" . }} - imagePullSecrets: -{{ toYaml .Values.imagePullSecrets | trim | indent 8 }} - {{- if .Values.enableWebhook }} - volumes: - - name: webhook-certs - secret: - secretName: spark-webhook-certs - {{- end }} - containers: - - name: sparkoperator - image: {{ .Values.operatorImageName }}:{{ .Values.operatorVersion }} - imagePullPolicy: {{ .Values.imagePullPolicy }} - {{- if .Values.securityContext }} - securityContext: - {{- range $securityPolicy, $value := .Values.securityContext }} - {{ $securityPolicy }}: {{ $value }} - {{- end }} - {{- end }} - {{- if .Values.enableWebhook }} - volumeMounts: - - name: webhook-certs - mountPath: /etc/webhook-certs - {{- end }} - {{- if .Values.enableMetrics }} - ports: - - containerPort: {{ .Values.metricsPort }} - {{ end }} - args: - - -v={{ .Values.logLevel }} - - -namespace={{ .Values.sparkJobNamespace }} - - -ingress-url-format={{ .Values.ingressUrlFormat }} - - -controller-threads={{ .Values.controllerThreads }} - - -resync-interval={{ .Values.resyncInterval }} - - -logtostderr - {{- if .Values.enableBatchScheduler }} - - -enable-batch-scheduler={{ .Values.enableBatchScheduler }} - {{- end }} - {{- if .Values.enableMetrics }} - - -enable-metrics=true - - -metrics-labels=app_type - - -metrics-port={{ .Values.metricsPort }} - - -metrics-endpoint={{ .Values.metricsEndpoint }} - - -metrics-prefix={{ .Values.metricsPrefix }} - {{- end }} - {{- if .Values.enableWebhook }} - - -enable-webhook=true - - -webhook-svc-namespace={{ .Release.Namespace }} - - -webhook-port={{ .Values.webhookPort }} - - -webhook-svc-name={{ .Release.Name }}-webhook - - -webhook-config-name={{ .Release.Namespace }}-{{ include "sparkoperator.fullname" . }}-webhook-config - {{- end }} - {{- if .Values.enableResourceQuotaEnforcement }} - - -enable-resource-quota-enforcement={{ .Values.enableResourceQuotaEnforcement }} - {{- end }} - {{- if .Values.enableLeaderElection }} - - -leader-election={{ .Values.enableLeaderElection }} - {{- end }} - {{- with .Values.resources }} - resources: - {{ toYaml . | nindent 10 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{ toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{ toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{ toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName | quote }} - {{- end }} -{{- end }} diff --git a/stable/sparkoperator/templates/spark-operator-rbac.yaml b/stable/sparkoperator/templates/spark-operator-rbac.yaml deleted file mode 100644 index 288136a28..000000000 --- a/stable/sparkoperator/templates/spark-operator-rbac.yaml +++ /dev/null @@ -1,102 +0,0 @@ -{{- if .Values.rbac.clusterResources.create }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "sparkoperator.fullname" . }}-cr - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -rules: -- apiGroups: ["admissionregistration.k8s.io"] - resources: ["mutatingwebhookconfigurations", "validatingwebhookconfigurations"] - verbs: ["create", "get", "update", "delete"] -{{- end }} - -{{- if .Values.rbac.namespaced.create }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "sparkoperator.fullname" . }}-r - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -rules: -- apiGroups: ["batch"] - resources: ["jobs"] - verbs: ["*"] -- apiGroups: [""] - resources: ["pods"] - verbs: ["*"] -- apiGroups: [""] - resources: ["services", "configmaps", "secrets"] - verbs: ["create", "get", "delete", "update"] -- apiGroups: ["extensions"] - resources: ["ingresses"] - verbs: ["create", "get", "delete"] -- apiGroups: [""] - resources: ["nodes"] - verbs: ["get"] -- apiGroups: [""] - resources: ["events"] - verbs: ["create", "update", "patch"] -- apiGroups: [""] - resources: ["resourcequotas"] - verbs: ["get", "list", "watch"] -- apiGroups: ["apiextensions.k8s.io"] - resources: ["customresourcedefinitions"] - verbs: ["create", "get", "update", "delete"] -- apiGroups: ["sparkoperator.k8s.io"] - resources: ["sparkapplications", "scheduledsparkapplications", "sparkapplications/status", "scheduledsparkapplications/status"] - verbs: ["*"] - {{- if .Values.enableBatchScheduler }} - # This api resources below is configured for the `volcano` batch scheduler. -- apiGroups: ["scheduling.incubator.k8s.io", "scheduling.sigs.dev"] - resources: ["podgroups"] - verbs: ["*"] - {{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "sparkoperator.fullname" . }}-rb - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -subjects: - - kind: ServiceAccount - name: {{ include "sparkoperator.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -roleRef: - kind: Role - name: {{ include "sparkoperator.fullname" . }}-r - apiGroup: rbac.authorization.k8s.io -{{- end }} - -{{- if .Values.rbac.clusterNamespaceResources.create }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ include "sparkoperator.fullname" . }}-crb - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -subjects: - - kind: ServiceAccount - name: {{ include "sparkoperator.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -roleRef: - kind: ClusterRole - name: {{ .Values.rbac.clusterRoleName }} - apiGroup: rbac.authorization.k8s.io -{{- end }} diff --git a/stable/sparkoperator/templates/spark-operator-serviceaccount.yaml b/stable/sparkoperator/templates/spark-operator-serviceaccount.yaml deleted file mode 100644 index e3874e927..000000000 --- a/stable/sparkoperator/templates/spark-operator-serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccounts.sparkoperator.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "sparkoperator.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} diff --git a/stable/sparkoperator/templates/spark-rbac.yaml b/stable/sparkoperator/templates/spark-rbac.yaml deleted file mode 100644 index f40ed938c..000000000 --- a/stable/sparkoperator/templates/spark-rbac.yaml +++ /dev/null @@ -1,50 +0,0 @@ -{{- if and (.Values.rbac.namespaced.create) (ne .Values.sparkJobNamespace "") }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - namespace: {{ .Values.sparkJobNamespace }} - name: spark-role - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -rules: -- apiGroups: - - "" # "" indicates the core API group - resources: - - "pods" - verbs: - - "*" -- apiGroups: - - "" # "" indicates the core API group - resources: - - "services" - verbs: - - "*" -- apiGroups: - - "" - resources: - - "configmaps" - verbs: - - "*" ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: spark-role-binding - namespace: {{ .Values.sparkJobNamespace }} - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -subjects: -- kind: ServiceAccount - name: {{ include "spark.serviceAccountName" . }} - namespace: {{ .Values.sparkJobNamespace }} -roleRef: - kind: Role - name: spark-role - apiGroup: rbac.authorization.k8s.io -{{- end }} diff --git a/stable/sparkoperator/templates/spark-serviceaccount.yaml b/stable/sparkoperator/templates/spark-serviceaccount.yaml deleted file mode 100644 index bb0e55ea6..000000000 --- a/stable/sparkoperator/templates/spark-serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccounts.spark.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "spark.serviceAccountName" . }} - namespace: {{ .Values.sparkJobNamespace }} - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} diff --git a/stable/sparkoperator/templates/v3io-config-configmap.yaml b/stable/sparkoperator/templates/v3io-config-configmap.yaml deleted file mode 100644 index c4251b9f0..000000000 --- a/stable/sparkoperator/templates/v3io-config-configmap.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{ if .Values.deployment.create }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-v3io-config - namespace: {{ .Values.sparkJobNamespace }} - labels: - app: {{ template "sparkoperator.name" . }} - chart: {{ template "sparkoperator.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -data: -{{ include "v3io-configs.java.configMap" . | indent 2 }} - - v3io-spark-operator.sh: | - #!/usr/bin/env bash - set -e - -{{ include "v3io-configs.script.lookupService" . | indent 4 }} -{{- end }} diff --git a/stable/sparkoperator/templates/webhook-cleanup-job.yaml b/stable/sparkoperator/templates/webhook-cleanup-job.yaml deleted file mode 100644 index 53168654c..000000000 --- a/stable/sparkoperator/templates/webhook-cleanup-job.yaml +++ /dev/null @@ -1,38 +0,0 @@ -{{ if and (.Values.deployment.create) (.Values.enableWebhook) }} -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ include "sparkoperator.fullname" . }}-webhook-cleanup - namespace: {{ .Release.Namespace }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -spec: - template: - spec: - serviceAccountName: {{ include "sparkoperator.serviceAccountName" . }} - restartPolicy: OnFailure - imagePullSecrets: -{{ toYaml .Values.imagePullSecrets | trim | indent 8 }} - containers: - - name: main - image: {{ .Values.operatorImageName }}:{{ .Values.operatorVersion }} - imagePullPolicy: {{ .Values.imagePullPolicy }} - command: - - "/bin/sh" - - "-c" - - "curl -ik \ - -X DELETE \ - -H \"Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)\" \ - -H \"Accept: application/json\" \ - -H \"Content-Type: application/json\" \ - https://kubernetes.default.svc/api/v1/namespaces/{{ .Release.Namespace }}/secrets/spark-webhook-certs" - {{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName | quote }} - {{- end }} -{{ end }} diff --git a/stable/sparkoperator/templates/webhook-init-job.yaml b/stable/sparkoperator/templates/webhook-init-job.yaml deleted file mode 100644 index 3df325e0e..000000000 --- a/stable/sparkoperator/templates/webhook-init-job.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{ if and (.Values.deployment.create) (.Values.enableWebhook) }} -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ include "sparkoperator.fullname" . }}-init - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -spec: - template: - spec: - serviceAccountName: {{ include "sparkoperator.serviceAccountName" . }} - restartPolicy: Never - imagePullSecrets: -{{ toYaml .Values.imagePullSecrets | trim | indent 8 }} - containers: - - name: main - image: {{ .Values.operatorImageName }}:{{ .Values.operatorVersion }} - imagePullPolicy: {{ .Values.imagePullPolicy }} - command: ["/usr/bin/gencerts.sh", "-n", "{{ .Release.Namespace }}", "-s", "{{ .Release.Name }}-webhook", "-p"] - {{- with .Values.nodeSelector }} - nodeSelector: - {{ toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{ toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{ toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName | quote }} - {{- end }} -{{- end }} diff --git a/stable/sparkoperator/templates/webhook-service.yaml b/stable/sparkoperator/templates/webhook-service.yaml deleted file mode 100644 index 80483ee4b..000000000 --- a/stable/sparkoperator/templates/webhook-service.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{ if and (.Values.deployment.create) (.Values.enableWebhook) }} -kind: Service -apiVersion: v1 -metadata: - name: {{ .Release.Name }}-webhook - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - helm.sh/chart: {{ include "sparkoperator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -spec: - ports: - - port: 443 - targetPort: {{ .Values.webhookPort }} - name: webhook - selector: - app.kubernetes.io/name: {{ include "sparkoperator.name" . }} - app.kubernetes.io/version: {{ .Values.operatorVersion }} -{{ end }} diff --git a/stable/sparkoperator/values.yaml b/stable/sparkoperator/values.yaml deleted file mode 100644 index aa4b044fa..000000000 --- a/stable/sparkoperator/values.yaml +++ /dev/null @@ -1,90 +0,0 @@ -operatorImageName: urihoenig/multi-version-spark-operator -operatorVersion: v16 -imagePullPolicy: IfNotPresent -imagePullSecrets: [] -replicas: 1 -hostNetwork: - enabled: false - -deployment: - create: false - -crd: - create: false - -rbac: - clusterResources: - create: false - clusterNamespaceResources: - create: false - namespaced: - create: false - clusterRoleName: - -serviceAccounts: - spark: - create: false - name: - sparkoperator: - create: false - name: - -sparkJobNamespace: "" -controllerThreads: 10 -resyncInterval: 30 -ingressUrlFormat: "" -logLevel: 2 - -securityContext: {} - -enableWebhook: true -webhookPort: 8080 - -enableMetrics: true -metricsPort: 10254 -metricsEndpoint: "/metrics" -metricsPrefix: "" - -## Node labels for pod assignment -## Ref: https://kubernetes.io/docs/user-guide/node-selection/ -## -nodeSelector: {} - -podAnnotations: {} - -## List of node taints to tolerate (requires Kubernetes >= 1.6) -tolerations: [] -# - key: "key" -# operator: "Equal|Exists" -# value: "value" -# effect: "NoSchedule|PreferNoSchedule|NoExecute" - -## Affinity -## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity -affinity: {} - -## Resources for the sparkoperator deployment -## Ref: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ -## -resources: {} - -priorityClassName: "" - -## Whether to enable batch scheduler for pod scheduling, -## if enabled, end user can specify batch scheduler name in spark application. -enableBatchScheduler: false - -## Whether to enable the ResourceQuota enforcement for SparkApplication resources. -## Requires the webhook to be enabled by setting enableWebhook to true. -## Ref: https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/blob/master/docs/user-guide.md#enabling-resource-quota-enforcement. -enableResourceQuotaEnforcement: false - -## Whether to enable leader election when the operator Deployment has more than one replica. -## Only applicable when `replicas` is set to a value greater than 1. -## Ref: https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/blob/master/docs/user-guide.md#enabling-leader-election-for-high-availability. -enableLeaderElection: false - -global: - v3io: - configMountPath: /etc/config/v3io - diff --git a/stable/tsdb-functions/Chart.yaml b/stable/tsdb-functions/Chart.yaml deleted file mode 100644 index 68383004d..000000000 --- a/stable/tsdb-functions/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -version: 0.6.0 -appVersion: 0.0.12 -deprecated: true -name: tsdb-functions -description: V3IO TSDB nuclio functions -home: https://iguazio.com -icon: https://www.iguazio.com/wp-content/uploads/2019/10/Iguazio-Logo.png -sources: - - https://github.com/v3io -maintainers: - - name: liranb - email: liranb@iguazio.com diff --git a/stable/tsdb-functions/README.md b/stable/tsdb-functions/README.md deleted file mode 100644 index 5c0b29e8d..000000000 --- a/stable/tsdb-functions/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# TSDB functions Chart - -TSDB functions is a set of functions demonstrating working with Iguazio's time series database - -## Chart Details - -This chart will do the following: - -* Deploys 2 functions as ingest and query -* Creates a project which they both sit under - -## Installing the Chart - -The chart requires having a secret which includes the username and either the password or the access key of the user. -The secret keys are: `username`, `accessKey` and `password`. -The secret name should be provided through the `webapi.auth.secretName` value.
-The secret can be created using:
-```bash -$ kubectl create secret generic secret-name --from-literal=username='some-username' --from-literal=password='some-password' -``` -To install the chart with the release name `my-release`: - -```bash -$ helm install --name my-release stable/tsdb-functions -``` - -## Configuration - -Configurable values are documented in the `values.yaml`. - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, - -```bash -$ helm install --name my-release -f values.yaml stable/tsdb-functions -``` - -> **Tip**: You can use the default [values.yaml](values.yaml) diff --git a/stable/tsdb-functions/templates/NOTES.txt b/stable/tsdb-functions/templates/NOTES.txt deleted file mode 100644 index 2683958e0..000000000 --- a/stable/tsdb-functions/templates/NOTES.txt +++ /dev/null @@ -1 +0,0 @@ -Deployment complete! diff --git a/stable/tsdb-functions/templates/_helpers.tpl b/stable/tsdb-functions/templates/_helpers.tpl deleted file mode 100644 index ca325fd8f..000000000 --- a/stable/tsdb-functions/templates/_helpers.tpl +++ /dev/null @@ -1,26 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "tsdb-functions.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "tsdb-functions.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{- define "tsdb-functions.queryName" -}} -{{- printf "%s-%s" .Release.Name "query" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{- define "tsdb-functions.ingestName" -}} -{{- printf "%s-%s" .Release.Name "ingest" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{- define "tsdb-functions.projectName" -}} -{{- printf "tsdb-functions-%s" .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- end -}} diff --git a/stable/tsdb-functions/templates/ingest.yaml b/stable/tsdb-functions/templates/ingest.yaml deleted file mode 100644 index 13f261bf0..000000000 --- a/stable/tsdb-functions/templates/ingest.yaml +++ /dev/null @@ -1,74 +0,0 @@ -apiVersion: nuclio.io/v1beta1 -kind: NuclioFunction -metadata: - name: {{ template "tsdb-functions.ingestName" . }} - labels: - app.kubernetes.io/name: {{ template "tsdb-functions.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: "tsdb-functions" - nuclio.io/project-name: {{ template "tsdb-functions.projectName" . }} - app: {{ template "tsdb-functions.name" . }} # TODO deprecate, use app.kubernetes.io/name instead - chart: {{ template "tsdb-functions.chart" . }} - release: {{ .Release.Name }} # TODO deprecate, use app.kubernetes.io/instance instead - heritage: {{ .Release.Service }} - component: ingest -spec: - build: - codeEntryType: image - imagePullPolicy: {{ .Values.functions.ingest.image.pullPolicy }} - handler: main:Ingest - image: {{ .Values.functions.ingest.image.repository }}:{{ .Values.functions.ingest.image.tag }} - replicas: {{ .Values.functions.ingest.replicas }} - runtime: golang - readinessTimeoutSeconds: {{ .Values.functions.ingest.readinessTimeoutSeconds }} - resources: -{{ toYaml .Values.resources | indent 12 }} - env: - - name: INGEST_V3IO_TSDB_PATH - value: {{ .Values.tsdb.path }} - - name: INGEST_V3IO_URL -{{- if hasPrefix "http" .Values.webapi.url }} - value: {{ .Values.webapi.url }} -{{- else }} - value: http://{{ cat .Values.webapi.url }} -{{- end }} - {{- if .Values.webapi.auth.secretName }} - - name: INGEST_V3IO_USERNAME - valueFrom: - secretKeyRef: - name: {{ .Values.webapi.auth.secretName }} - key: username - - name: INGEST_V3IO_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.webapi.auth.secretName }} - key: password - optional: true - - name: INGEST_V3IO_ACCESS_KEY - valueFrom: - secretKeyRef: - name: {{ .Values.webapi.auth.secretName }} - key: accessKey - optional: true - {{- end }} - - name: INGEST_V3IO_CONTAINER - value: {{ .Values.tsdb.container }} - triggers: - default-http: - name: default-http - kind: http - maxWorkers: 1 - annotations: - nginx.ingress.kubernetes.io/rewrite-target: / - attributes: - port: {{ .Values.functions.ingest.port }} - {{- if .Values.functions.ingest.ingress }} - serviceType: ClusterIP - ingresses: - http: - host: {{ .Values.functions.ingest.ingress.host }} - paths: - - {{ default "/ingest" .Values.functions.ingest.ingress.path }} - {{- end }} -status: - state: waitingForResourceConfiguration diff --git a/stable/tsdb-functions/templates/project.yaml b/stable/tsdb-functions/templates/project.yaml deleted file mode 100644 index 34f889422..000000000 --- a/stable/tsdb-functions/templates/project.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: nuclio.io/v1beta1 -kind: NuclioProject -metadata: - name: {{ template "tsdb-functions.projectName" . }} - labels: - app.kubernetes.io/name: {{ template "tsdb-functions.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/part-of: "tsdb-functions" - nuclio.io/project-name: {{ template "tsdb-functions.projectName" . }} - app: {{ template "tsdb-functions.name" . }} # TODO deprecate, use app.kubernetes.io/name instead - chart: {{ template "tsdb-functions.chart" . }} - release: {{ .Release.Name }} # TODO deprecate, use app.kubernetes.io/instance instead - heritage: {{ .Release.Service }} - component: project diff --git a/stable/tsdb-functions/templates/query.yaml b/stable/tsdb-functions/templates/query.yaml deleted file mode 100644 index 95005f49f..000000000 --- a/stable/tsdb-functions/templates/query.yaml +++ /dev/null @@ -1,75 +0,0 @@ -apiVersion: nuclio.io/v1beta1 -kind: NuclioFunction -metadata: - name: {{ template "tsdb-functions.queryName" . }} - labels: - app.kubernetes.io/name: {{ template "tsdb-functions.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/part-of: "tsdb-functions" - nuclio.io/project-name: {{ template "tsdb-functions.projectName" . }} - app: {{ template "tsdb-functions.name" . }} # TODO deprecate, use app.kubernetes.io/name instead - chart: {{ template "tsdb-functions.chart" . }} - release: {{ .Release.Name }} # TODO deprecate, use app.kubernetes.io/instance instead - heritage: {{ .Release.Service }} - component: query -spec: - build: - codeEntryType: image - imagePullPolicy: {{ .Values.functions.query.image.pullPolicy }} - handler: main:Query - image: {{ .Values.functions.query.image.repository }}:{{ .Values.functions.query.image.tag }} - replicas: {{ .Values.functions.query.replicas }} - runtime: golang - readinessTimeoutSeconds: {{ .Values.functions.query.readinessTimeoutSeconds }} - resources: -{{ toYaml .Values.resources | indent 12 }} - env: - - name: QUERY_V3IO_TSDB_PATH - value: {{ .Values.tsdb.path }} - - name: QUERY_V3IO_URL -{{- if hasPrefix "http" .Values.webapi.url }} - value: {{ .Values.webapi.url }} -{{- else }} - value: http://{{ cat .Values.webapi.url }} -{{- end }} - {{- if .Values.webapi.auth.secretName }} - - name: QUERY_V3IO_USERNAME - valueFrom: - secretKeyRef: - name: {{ .Values.webapi.auth.secretName }} - key: username - optional: true - - name: QUERY_V3IO_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.webapi.auth.secretName }} - key: password - optional: true - - name: QUERY_V3IO_ACCESS_KEY - valueFrom: - secretKeyRef: - name: {{ .Values.webapi.auth.secretName }} - key: accessKey - optional: true - {{- end }} - - name: QUERY_V3IO_CONTAINER - value: {{ .Values.tsdb.container }} - triggers: - default-http: - name: default-http - kind: http - maxWorkers: 1 - annotations: - nginx.ingress.kubernetes.io/rewrite-target: / - attributes: - port: {{ .Values.functions.query.port }} - {{- if .Values.functions.query.ingress }} - serviceType: ClusterIP - ingresses: - http: - host: {{ .Values.functions.query.ingress.host }} - paths: - - {{ default "/query" .Values.functions.query.ingress.path }} - {{- end }} -status: - state: waitingForResourceConfiguration diff --git a/stable/tsdb-functions/values.yaml b/stable/tsdb-functions/values.yaml deleted file mode 100644 index a8c162d25..000000000 --- a/stable/tsdb-functions/values.yaml +++ /dev/null @@ -1,34 +0,0 @@ -tsdb: - container: bigdata - path: mytsdb -webapi: - url: v3io-webapi:8081 - auth: -# must include username and password/accessKey - secretName: "" -resources: {} - # limits: - # cpu: 1 - # memory: "2Gi" - # requests: - # cpu: 1 - # memory: "2Gi" -functions: - ingest: - readinessTimeoutSeconds: 180 - replicas: 1 - port: 32030 - ingress: {} - image: - repository: quay.io/iguazio/tsdb-ingest - tag: 0.0.12 - pullPolicy: IfNotPresent - query: - readinessTimeoutSeconds: 180 - replicas: 1 - port: 32031 - ingress: {} - image: - repository: quay.io/iguazio/tsdb-query - tag: 0.0.12 - pullPolicy: IfNotPresent