diff --git a/.github/config/ct.yaml b/.github/config/ct.yaml index 9c4c9e55..f47c0ffc 100644 --- a/.github/config/ct.yaml +++ b/.github/config/ct.yaml @@ -1,6 +1,6 @@ # See https://github.com/helm/chart-testing#configuration remote: origin -target-branch: main +target-branch: add-feast-ui-chart chart-dirs: - charts chart-repos: @@ -12,4 +12,5 @@ excluded-charts: - common - hashicorp=https://helm.releases.hashicorp.com - bitnami=https://charts.bitnami.com/bitnami + - feast-ui helm-extra-args: --timeout 900s diff --git a/charts/feast-ui/Chart.yaml b/charts/feast-ui/Chart.yaml new file mode 100644 index 00000000..f68059b1 --- /dev/null +++ b/charts/feast-ui/Chart.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +description: "Feast: ML Feature Store" +name: feast-ui +version: 0.5.0 +maintainers: + - email: caraml-dev@caraml.dev + name: caraml-dev diff --git a/charts/feast-ui/README.md b/charts/feast-ui/README.md new file mode 100644 index 00000000..98bd1bbf --- /dev/null +++ b/charts/feast-ui/README.md @@ -0,0 +1,34 @@ +# feast-ui + +![Version: 0.5.0](https://img.shields.io/badge/Version-0.5.0-informational?style=flat-square) + +Feast: ML Feature Store + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| caraml-dev | | | + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| feast_ui.extraVolumeMounts | object | `{}` | | +| feast_ui.extraVolumes | object | `{}` | | +| feast_ui.image.pullPolicy | string | `"IfNotPresent"` | | +| feast_ui.image.registry | string | `""` | | +| feast_ui.image.repository | string | `"feast-ui"` | | +| feast_ui.image.tag | string | `nil` | | +| feast_ui.livenessProbe.path | string | `"/api/live"` | | +| feast_ui.readinessProbe.path | string | `"/api/ready"` | | +| feast_ui.replicaCount | string | `"1"` | | +| feast_ui.resources.limits.memory | string | `"256Mi"` | | +| feast_ui.resources.requests.cpu | string | `"100m"` | | +| feast_ui.resources.requests.memory | string | `"128Mi"` | | +| feast_ui.service.externalPort | int | `8080` | | +| feast_ui.service.internalPort | int | `8080` | | +| feast_ui.service.type | string | `"ClusterIP"` | | + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.11.0](https://github.com/norwoodj/helm-docs/releases/v1.11.0) diff --git a/charts/feast-ui/templates/_helpers.tpl b/charts/feast-ui/templates/_helpers.tpl new file mode 100644 index 00000000..8702c22c --- /dev/null +++ b/charts/feast-ui/templates/_helpers.tpl @@ -0,0 +1,20 @@ +{{- define "feast_ui.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end }} + +{{- define "feast_ui.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version -}} +{{- end -}} + +{{- define "feast_ui.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 -}} diff --git a/charts/feast-ui/templates/deployment.yaml b/charts/feast-ui/templates/deployment.yaml new file mode 100644 index 00000000..4d635cf0 --- /dev/null +++ b/charts/feast-ui/templates/deployment.yaml @@ -0,0 +1,68 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "feast_ui.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app: {{ template "feast_ui.fullname" . }} + chart: {{ template "feast_ui.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +{{- if .Values.feast_ui.labels }} +{{ toYaml .Values.feast_ui.labels | indent 4 -}} +{{- end }} +spec: + replicas: {{ .Values.feast_ui.replicaCount }} + selector: + matchLabels: + app: {{ template "feast_ui.fullname" . }} + release: {{ .Release.Name }} + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 4 + maxUnavailable: 0 + template: + metadata: + labels: + app: {{ template "feast_ui.fullname" . }} + release: {{ .Release.Name }} +{{- if .Values.feast_ui.labels }} +{{ toYaml .Values.feast_ui.labels | indent 8 -}} +{{- end }} + spec: + containers: + - name: feast-ui + image: "{{ .Values.feast_ui.image.registry }}{{ .Values.feast_ui.image.repository }}:{{ .Values.feast_ui.image.tag }}" + imagePullPolicy: {{ .Values.feast_ui.image.pullPolicy }} + ports: + - containerPort: {{ .Values.feast_ui.service.internalPort }} + resources: + {{- toYaml .Values.feast_ui.resources | nindent 10 }} + env: + - name: REACT_APP_OAUTH_CLIENT_ID + value: "{{ .Values.feast_ui.oauthClientID }}" + - name: JOBSERVICE_ENDPOINTS + value: "{{ .Values.feast_ui.jobserviceEndpoints }}" + - name: JOBSERVICE_LABELS + value: "{{ .Values.feast_ui.jobserviceLabels }}" + - name: JOB_LOG_URL_TEMPLATE + value: "{{ .Values.feast_ui.jobLogUrlTemplate }}" + - name: FEAST_CORE_ENDPOINT + value: "{{ .Values.feast_ui.coreEndpoint }}" + {{- with .Values.feast_ui.extraEnvs }} + {{- toYaml . | nindent 8 }} + {{- end }} + volumeMounts: + {{- with .Values.feast_ui.extraVolumeMounts }} + {{- toYaml . | nindent 8 }} + {{- end }} + volumes: + {{- with .Values.feast_ui.extraVolumes }} + {{- toYaml . | nindent 6 }} + {{- end }} + +{{- if .Values.feast_ui.nodeSelector }} + nodeSelector: +{{ toYaml .Values.feast_ui.nodeSelector | nindent 8 }} +{{ end -}} \ No newline at end of file diff --git a/charts/feast-ui/templates/service.yaml b/charts/feast-ui/templates/service.yaml new file mode 100644 index 00000000..ce753cbc --- /dev/null +++ b/charts/feast-ui/templates/service.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "feast_ui.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app: {{ template "feast_ui.fullname" . }} + chart: {{ template "feast_ui.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +{{- if .Values.feast_ui.labels }} +{{ toYaml .Values.feast_ui.labels | indent 4 -}} +{{- end }} +spec: + type: {{ .Values.feast_ui.service.type }} + ports: + - port: {{ .Values.feast_ui.service.externalPort }} + targetPort: {{ .Values.feast_ui.service.internalPort }} + protocol: TCP + selector: + app: {{ template "feast_ui.fullname" . }} + release: {{ .Release.Name }} \ No newline at end of file diff --git a/charts/feast-ui/values.yaml b/charts/feast-ui/values.yaml new file mode 100644 index 00000000..5b53c3c9 --- /dev/null +++ b/charts/feast-ui/values.yaml @@ -0,0 +1,32 @@ +feast_ui: + image: + pullPolicy: IfNotPresent + registry: "" + repository: feast-ui + # Value will be set at install time using helm --set command + tag: + + service: + type: ClusterIP + externalPort: 8080 + internalPort: 8080 + + + extraVolumes: {} + + extraVolumeMounts: {} + + livenessProbe: + path: "/api/live" + + readinessProbe: + path: "/api/ready" + + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + memory: 256Mi + + replicaCount: "1"