Skip to content

Commit

Permalink
Add util.knativeOrDeployment and chris-ui chart
Browse files Browse the repository at this point in the history
  • Loading branch information
jennydaman committed Nov 26, 2024
1 parent e9eea54 commit a66489a
Show file tree
Hide file tree
Showing 17 changed files with 572 additions and 15 deletions.
23 changes: 23 additions & 0 deletions charts/chris-ui/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# 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
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
6 changes: 6 additions & 0 deletions charts/chris-ui/Chart.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
dependencies:
- name: util
repository: https://fnndsc.github.io/charts
version: 0.1.0
digest: sha256:ceee9595de62e5f7c0cbc7df9f7ac03a33b4dd91964c7321b9e849e0f90453f9
generated: "2024-11-25T14:32:50.21170062-05:00"
29 changes: 29 additions & 0 deletions charts/chris-ui/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
apiVersion: v2
name: chris-ui
description: ChRIS user interface
home: https://chrisproject.org
sources:
- https://github.com/FNNDSC/charts
- https://github.com/FNNDSC/ChRIS_ui
keywords:
- medicine
- science
- bioinformatics
- neuroscience
- scientific workflow system
icon: ./logo_chris.png

type: application
version: 0.1.0-alpha.1

appVersion: "36f2dcb"
maintainers:
- name: The FNNDSC Dev Team
email: [email protected]
url: https://fnndsc.org

dependencies:
- name: util
version: "~0.1.0"
repository: "https://fnndsc.github.io/charts"

1 change: 1 addition & 0 deletions charts/chris-ui/charts/util
18 changes: 18 additions & 0 deletions charts/chris-ui/templates/chrisui.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{{- $env := (dict
"SERVER_PORT" .Values.service.port
"CHRIS_UI_URL" (.Values.cubeUrl | required "cubeUrl is required")
"PFDCM_URL" (.Values.pfdcmUrl | required "pfdcmUrl is required")
) -}}
{{- $optionalEnvNames := (dict
"ohifUrl" "OHIF_URL"
"ackeeServer" "ACKEE_SERVER"
"ackeeDomainId" "ACKEE_DOMAIN_ID"
) -}}
{{- range $k, $v := $optionalEnvNames -}}
{{- $value := (get $.Values $k) -}}
{{- with (get $.Values $k) -}}
{{- $_ := set $env $v . -}}
{{- end -}}
{{- end -}}
{{- $moreValues := (dict "Values" (dict "extraEnv" $env)) -}}
{{- mustMerge $moreValues . | include "util.knativeOrDeployment" -}}
187 changes: 187 additions & 0 deletions charts/chris-ui/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
# Default values for chris-ui.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

nameOverride: ""
fullnameOverride: ""

# ChRIS_ui configuration
#####################

# -- (required) URL of ChRIS backend.
cubeUrl:
# -- (required) URL of PFDCM.
pfdcmUrl:
# -- (optional) URL of OHIF.
ohifUrl:
# -- (optional) URL of Ackee web analytics.
ackeeServer:
# -- (optional) Domain ID for Ackee web analytics.
ackeeDomainId:

# -- Extra environment variables.
# -- See https://static-web-server.net/configuration/environment-variables/
extraEnv:
SERVER_HEALTH: true

# Resource configuration
#####################

# -- This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/
image:
registry: ghcr.io
repository: fnndsc/chris_ui
# -- This sets the pull policy for images.
pullPolicy: IfNotPresent
# -- Overrides the image tag whose default is the chart appVersion.
tag: ""

# -- This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
imagePullSecrets: []

# -- This section builds out the service account more information can be found here: https://kubernetes.io/docs/concepts/security/service-accounts/
serviceAccount:
# Specifies whether a service account should be created
create: false
# Automatically mount a ServiceAccount's API credentials?
automount: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""

# -- This is for setting Kubernetes Annotations to a Pod.
# -- For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
podAnnotations: {}

# -- This is for setting Kubernetes Labels to a Pod.
# -- For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
podLabels: {}

podSecurityContext: {}
# fsGroup: 2000

securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault

resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi

# -- This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
# -- Recommended to use the /health endpoint. See https://static-web-server.net/configuration/environment-variables/#server_health
# -- Note: it is recommended to set `extraEnv.SERVER_HEALTH=true`
livenessProbe:
httpGet:
path: /health
port: http
readinessProbe:
httpGet:
path: /health
port: http
startupProbe:
httpGet:
path: /health
port: http
failureThreshold: 60
periodSeconds: 1

nodeSelector: {}

tolerations: []

affinity: {}

# -- Labels for the Deployment/Service resource.
labels: {}

# -- Annotations for the Deployment/Service resource.
annotations: {}

# Kind configuration
#####################

# -- kind must be one of:
# --
# -- - "Deployment": use (standard) Kubernetes Deployment and Service APIs
# -- - "Service": use the KNative Serving API
kind: Deployment


# KNative Serving configuration
#####################

# -- KNative Serving revision annotations.
# -- Only used with `kind=Service`
revisionAnnotations: {}
# autoscaling.knative.dev/target: "100"
# autoscaling.knative.dev/min-scale: "1"
# autoscaling.knative.dev/max-scale: "3"
# autoscaling.knative.dev/scale-to-zero-pod-retention-period: "1m5s"


# Deployment configuration
#####################

# -- This will set the replicaset count more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
# -- Ignored if `autoscaling.enabled=true`
# -- Only used with `kind=Deployment`
replicaCount: 1

# -- This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/
# -- Only used with `kind=Deployment`
service:
# This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
type: ClusterIP
# This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports
port: 8080
# nodePort:

# -- This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/
# -- Only used with `kind=Deployment`
ingress:
enabled: false
className: ""
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: chart-example.local
paths:
- path: /
pathType: ImplementationSpecific
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local

# -- OpenShift route.
# -- Only used with `kind=Deployment`
route:
enabled: false
host: chart-example.local
tls:
termination: edge
insecureEdgeTerminationPolicy: Redirect
destinationCACertificate: ''

# -- This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/
# -- Only used with `kind=Deployment`
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 100
targetCPUUtilizationPercentage: 80
# targetMemoryUtilizationPercentage: 80

38 changes: 38 additions & 0 deletions charts/util/templates/_deployment.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{{- define "util.deploymentTpl" }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "util.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "util.labels" . | nindent 4 }}
{{- with .Values.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
{{- with .Values.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
selector:
matchLabels:
{{- include "util.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "util.labels" . | nindent 8 }}
{{- with .Values.podLabels }}
{{- toYaml . | nindent 8 }}
{{- end }}
spec:
containers:
{{- include "util.container" (mustMerge (dict "containerName" (include "util.name" .) "portName" "http") .) | nindent 8 }}
{{- include "util.podSpec" . | nindent 6 }}
{{- end }}
35 changes: 20 additions & 15 deletions charts/util/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -62,19 +62,19 @@ Create the name of the service account to use
{{- end }}
{{- end }}

{{- define "util.image" }}
{{- define "util.image" -}}
{{ if .Values.image.registry }}{{ .Values.image.registry }}/{{ end }}{{ .Values.image.repository }}:{{ .Values.image.tag | default .appVersion | default .Chart.AppVersion }}
{{- end }}
{{- end -}}

{{- define "util.podSpec" }}
{{- with (concat .Values.imagePullSecrets .Values.global.imagePullSecrets | mustUniq) }}
{{- define "util.podSpec" -}}
{{- with (concat (.Values.imagePullSecrets | default (list)) ((.Values.global).imagePullSecrets | default (list)) | mustUniq) }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- if (or .Values.serviceAccount.name .Values.serviceAccount.create) }}
serviceAccountName: {{ include "util.util.serviceAccountName" . }}
{{- end }}
{{- with (.Values.podSecurityContext | deepCopy | mustMergeOverwrite (deepCopy .Values.global.podSecurityContext | default (dict))) }}
{{- with (.Values.podSecurityContext | deepCopy | mustMergeOverwrite (deepCopy ((.Values.global).podSecurityContext | default (dict)))) }}
securityContext:
{{- toYaml . | nindent 8 }}
{{- end }}
Expand All @@ -90,20 +90,25 @@ affinity:
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}
{{- end -}}

{{- define "util.container" }}
{{- define "util.container" -}}
- image: {{ include "util.image" . }}
{{- if .containerName }}
name: {{ .containerName }}
{{- end }}
{{- if .Values.image.pullPolicy }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- end }}
ports:
- name: http
containerPort: {{ .Values.containerPort | default .Values.service.port }}
- containerPort: {{ .Values.containerPort | default .Values.service.port }}
{{- if .Values.hostPort }}
hostPort: {{ .Values.hostPort }}
{{- end }}
protocol: TCP
{{- if .portName }}
name: {{ .portName }}
{{- end }}
{{- if .Values.extraEnv }}
env:
{{- range $k, $v := .Values.extraEnv }}
Expand All @@ -113,22 +118,22 @@ tolerations:
{{- end }}
{{- with .Values.securityContext }}
securityContext:
{{- toYaml . | nindent 12 }}
{{- toYaml . | nindent 4 }}
{{- end }}
{{- with .Values.resources }}
resources:
{{- toYaml . | nindent 12 }}
{{- toYaml . | nindent 4 }}
{{- end }}
{{- with .Values.livenessProbe }}
livenessProbe:
{{- toYaml . | nindent 12 }}
{{- toYaml . | nindent 4 }}
{{- end }}
{{- with .Values.readinessProbe }}
readinessProbe:
{{- toYaml . | nindent 12 }}
{{- toYaml . | nindent 4 }}
{{- end }}
{{- with .Values.startupProbe }}
startupProbe:
{{- toYaml . | nindent 12 }}
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}
{{- end -}}
Loading

0 comments on commit a66489a

Please sign in to comment.