mirror of
https://github.com/Sudo-JHare/FHIRFLARE-IG-Toolkit.git
synced 2025-11-05 17:45:14 +00:00
Add chart and chart workflow
This commit is contained in:
parent
83ec579214
commit
43921790fa
23
.github/ct/chart-schema.yaml
vendored
Normal file
23
.github/ct/chart-schema.yaml
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
name: str()
|
||||||
|
home: str()
|
||||||
|
version: str()
|
||||||
|
apiVersion: str()
|
||||||
|
appVersion: any(str(), num(), required=False)
|
||||||
|
type: str()
|
||||||
|
dependencies: any(required=False)
|
||||||
|
description: str()
|
||||||
|
keywords: list(str(), required=False)
|
||||||
|
sources: list(str(), required=False)
|
||||||
|
maintainers: list(include('maintainer'), required=False)
|
||||||
|
icon: str(required=False)
|
||||||
|
engine: str(required=False)
|
||||||
|
condition: str(required=False)
|
||||||
|
tags: str(required=False)
|
||||||
|
deprecated: bool(required=False)
|
||||||
|
kubeVersion: str(required=False)
|
||||||
|
annotations: map(str(), str(), required=False)
|
||||||
|
---
|
||||||
|
maintainer:
|
||||||
|
name: str()
|
||||||
|
email: str(required=False)
|
||||||
|
url: str(required=False)
|
||||||
15
.github/ct/config.yaml
vendored
Normal file
15
.github/ct/config.yaml
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
debug: true
|
||||||
|
remote: origin
|
||||||
|
chart-yaml-schema: .github/ct/chart-schema.yaml
|
||||||
|
validate-maintainers: false
|
||||||
|
validate-chart-schema: true
|
||||||
|
validate-yaml: true
|
||||||
|
check-version-increment: true
|
||||||
|
chart-dirs:
|
||||||
|
- charts
|
||||||
|
helm-extra-args: --timeout 300s
|
||||||
|
upgrade: true
|
||||||
|
skip-missing-values: true
|
||||||
|
release-label: release
|
||||||
|
release-name-template: "helm-v{{ .Version }}"
|
||||||
|
target-branch: master
|
||||||
84
.github/workflows/build-images.yaml
vendored
Normal file
84
.github/workflows/build-images.yaml
vendored
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
name: Build Container Images
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "image/v*"
|
||||||
|
paths-ignore:
|
||||||
|
- "charts/**"
|
||||||
|
pull_request:
|
||||||
|
branches: [master]
|
||||||
|
paths-ignore:
|
||||||
|
- "charts/**"
|
||||||
|
env:
|
||||||
|
IMAGES: docker.io/hapiproject/hapi
|
||||||
|
PLATFORMS: linux/amd64,linux/arm64/v8
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- name: Container meta for default (distroless) image
|
||||||
|
id: docker_meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ${{ env.IMAGES }}
|
||||||
|
tags: |
|
||||||
|
type=match,pattern=image/(.*),group=1,enable=${{github.event_name != 'pull_request'}}
|
||||||
|
|
||||||
|
|
||||||
|
- name: Container meta for tomcat image
|
||||||
|
id: docker_tomcat_meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ${{ env.IMAGES }}
|
||||||
|
tags: |
|
||||||
|
type=match,pattern=image/(.*),group=1,enable=${{github.event_name != 'pull_request'}}
|
||||||
|
flavor: |
|
||||||
|
suffix=-tomcat,onlatest=true
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Login to DockerHub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
if: github.event_name != 'pull_request'
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Cache Docker layers
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: /tmp/.buildx-cache
|
||||||
|
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-buildx-
|
||||||
|
|
||||||
|
- name: Build and push default (distroless) image
|
||||||
|
id: docker_build
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: type=local,dest=/tmp/.buildx-cache
|
||||||
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
tags: ${{ steps.docker_meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.docker_meta.outputs.labels }}
|
||||||
|
platforms: ${{ env.PLATFORMS }}
|
||||||
|
target: default
|
||||||
|
|
||||||
|
- name: Build and push tomcat image
|
||||||
|
id: docker_build_tomcat
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: type=local,dest=/tmp/.buildx-cache
|
||||||
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
tags: ${{ steps.docker_tomcat_meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.docker_tomcat_meta.outputs.labels }}
|
||||||
|
platforms: ${{ env.PLATFORMS }}
|
||||||
|
target: tomcat
|
||||||
36
.github/workflows/chart-release.yaml
vendored
Normal file
36
.github/workflows/chart-release.yaml
vendored
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
name: Release Charts
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- "charts/**"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- name: Add workspace as safe directory
|
||||||
|
run: |
|
||||||
|
git config --global --add safe.directory /__w/FHIRFLARE-IG-Toolkit/FHIRFLARE-IG-Toolkit
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Configure Git
|
||||||
|
run: |
|
||||||
|
git config user.name "$GITHUB_ACTOR"
|
||||||
|
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
||||||
|
|
||||||
|
- name: Update dependencies
|
||||||
|
run: find charts/ ! -path charts/ -maxdepth 1 -type d -exec helm dependency update {} \;
|
||||||
|
|
||||||
|
- name: Run chart-releaser
|
||||||
|
uses: helm/chart-releaser-action@be16258da8010256c6e82849661221415f031968 # v1.5.0
|
||||||
|
with:
|
||||||
|
config: .github/ct/config.yaml
|
||||||
|
env:
|
||||||
|
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
73
.github/workflows/chart-test.yaml
vendored
Normal file
73
.github/workflows/chart-test.yaml
vendored
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
name: Lint and Test Charts
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- "charts/**"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
container: quay.io/helmpack/chart-testing:v3.11.0@sha256:f2fd21d30b64411105c7eafb1862783236a219d29f2292219a09fe94ca78ad2a
|
||||||
|
steps:
|
||||||
|
- name: Install helm-docs
|
||||||
|
working-directory: /tmp
|
||||||
|
env:
|
||||||
|
HELM_DOCS_URL: https://github.com/norwoodj/helm-docs/releases/download/v1.14.2/helm-docs_1.14.2_Linux_x86_64.tar.gz
|
||||||
|
run: |
|
||||||
|
curl -LSs $HELM_DOCS_URL | tar xz && \
|
||||||
|
mv ./helm-docs /usr/local/bin/helm-docs && \
|
||||||
|
chmod +x /usr/local/bin/helm-docs && \
|
||||||
|
helm-docs --version
|
||||||
|
|
||||||
|
- name: Add workspace as safe directory
|
||||||
|
run: |
|
||||||
|
git config --global --add safe.directory /__w/hapi-fhir-jpaserver-starter/hapi-fhir-jpaserver-starter
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Check if documentation is up-to-date
|
||||||
|
run: helm-docs && git diff --exit-code HEAD
|
||||||
|
|
||||||
|
- name: Run chart-testing (lint)
|
||||||
|
run: ct lint --config .github/ct/config.yaml
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
k8s-version: [1.30.8, 1.31.4, 1.32.0]
|
||||||
|
needs:
|
||||||
|
- lint
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Set up chart-testing
|
||||||
|
uses: helm/chart-testing-action@e6669bcd63d7cb57cb4380c33043eebe5d111992 # v2.6.1
|
||||||
|
|
||||||
|
- name: Run chart-testing (list-changed)
|
||||||
|
id: list-changed
|
||||||
|
run: |
|
||||||
|
changed=$(ct list-changed --config .github/ct/config.yaml)
|
||||||
|
if [[ -n "$changed" ]]; then
|
||||||
|
echo "::set-output name=changed::true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Create k8s Kind Cluster
|
||||||
|
uses: helm/kind-action@dda0770415bac9fc20092cacbc54aa298604d140 # v1.8.0
|
||||||
|
if: ${{ steps.list-changed.outputs.changed == 'true' }}
|
||||||
|
with:
|
||||||
|
cluster_name: kind-cluster-k8s-${{ matrix.k8s-version }}
|
||||||
|
node_image: kindest/node:v${{ matrix.k8s-version }}
|
||||||
|
|
||||||
|
- name: Run chart-testing (install)
|
||||||
|
run: ct install --config .github/ct/config.yaml
|
||||||
|
if: ${{ steps.list-changed.outputs.changed == 'true' }}
|
||||||
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/instance/
|
||||||
|
/logs/
|
||||||
6
charts/fhirflare-ig-toolkit/Chart.lock
Normal file
6
charts/fhirflare-ig-toolkit/Chart.lock
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
dependencies:
|
||||||
|
- name: hapi-fhir-jpaserver
|
||||||
|
repository: https://hapifhir.github.io/hapi-fhir-jpaserver-starter/
|
||||||
|
version: 0.20.0
|
||||||
|
digest: sha256:0e3b3ee43fdec137a4e61465880c7f437bac52459514674d4ce54aac39f83bde
|
||||||
|
generated: "2025-07-16T09:42:23.594307042+10:00"
|
||||||
@ -11,7 +11,7 @@ keywords:
|
|||||||
- ig-toolkit
|
- ig-toolkit
|
||||||
home: https://github.com/jgsuess/FHIRFLARE-IG-Toolkit
|
home: https://github.com/jgsuess/FHIRFLARE-IG-Toolkit
|
||||||
maintainers:
|
maintainers:
|
||||||
- name: FHIRFLARE Team
|
- name: Jörn Guy Süß
|
||||||
email: jgsuess@gmail.com
|
email: jgsuess@gmail.com
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: hapi-fhir-jpaserver
|
- name: hapi-fhir-jpaserver
|
||||||
|
|||||||
1
charts/fhirflare-ig-toolkit/charts/.gitignore
vendored
Normal file
1
charts/fhirflare-ig-toolkit/charts/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/hapi-fhir-jpaserver-0.20.0.tgz
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
/secrets.yaml
|
||||||
|
/serviceaccount.yaml
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
/networkpolicy.yaml
|
||||||
|
/pdb.yaml
|
||||||
|
/statefulset.yaml
|
||||||
|
/svc-headless.yaml
|
||||||
|
/svc.yaml
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
/deployment.yaml
|
||||||
|
/service.yaml
|
||||||
@ -0,0 +1 @@
|
|||||||
|
/test-endpoints.yaml
|
||||||
2
charts/fhirflare-ig-toolkit/rendered-templates/fhirflare-ig-toolkit/templates/.gitignore
vendored
Normal file
2
charts/fhirflare-ig-toolkit/rendered-templates/fhirflare-ig-toolkit/templates/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/deployment.yaml
|
||||||
|
/service.yaml
|
||||||
@ -0,0 +1 @@
|
|||||||
|
/test-endpoints.yaml
|
||||||
@ -1,7 +1,7 @@
|
|||||||
{{/*
|
{{/*
|
||||||
Expand the name of the chart.
|
Expand the name of the chart.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "hapi-fhir-jpaserver.name" -}}
|
{{- define "fhirflare-ig-toolkit.name" -}}
|
||||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
@ -10,7 +10,7 @@ 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).
|
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.
|
If release name contains chart name it will be used as a full name.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "hapi-fhir-jpaserver.fullname" -}}
|
{{- define "fhirflare-ig-toolkit.fullname" -}}
|
||||||
{{- if .Values.fullnameOverride }}
|
{{- if .Values.fullnameOverride }}
|
||||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
@ -26,16 +26,16 @@ If release name contains chart name it will be used as a full name.
|
|||||||
{{/*
|
{{/*
|
||||||
Create chart name and version as used by the chart label.
|
Create chart name and version as used by the chart label.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "hapi-fhir-jpaserver.chart" -}}
|
{{- define "fhirflare-ig-toolkit.chart" -}}
|
||||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{/*
|
{{/*
|
||||||
Common labels
|
Common labels
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "hapi-fhir-jpaserver.labels" -}}
|
{{- define "fhirflare-ig-toolkit.labels" -}}
|
||||||
helm.sh/chart: {{ include "hapi-fhir-jpaserver.chart" . }}
|
helm.sh/chart: {{ include "fhirflare-ig-toolkit.chart" . }}
|
||||||
{{ include "hapi-fhir-jpaserver.selectorLabels" . }}
|
{{ include "fhirflare-ig-toolkit.selectorLabels" . }}
|
||||||
{{- if .Chart.AppVersion }}
|
{{- if .Chart.AppVersion }}
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@ -45,8 +45,8 @@ app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|||||||
{{/*
|
{{/*
|
||||||
Selector labels
|
Selector labels
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "hapi-fhir-jpaserver.selectorLabels" -}}
|
{{- define "fhirflare-ig-toolkit.selectorLabels" -}}
|
||||||
app.kubernetes.io/name: {{ include "hapi-fhir-jpaserver.name" . }}
|
app.kubernetes.io/name: {{ include "fhirflare-ig-toolkit.name" . }}
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
|
|||||||
@ -1,46 +1,88 @@
|
|||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: fhirflare
|
name: {{ include "fhirflare-ig-toolkit.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{ include "fhirflare-ig-toolkit.labels" . | indent 4 }}
|
||||||
spec:
|
spec:
|
||||||
replicas: 1
|
replicas: {{ .Values.replicaCount | default 1 }}
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
io.kompose.service: fhirflare
|
{{ include "fhirflare-ig-toolkit.selectorLabels" . | indent 6 }}
|
||||||
strategy:
|
strategy:
|
||||||
type: Recreate
|
type: Recreate
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
io.kompose.service: fhirflare
|
{{ include "fhirflare-ig-toolkit.selectorLabels" . | indent 8 }}
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
spec:
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
containers:
|
containers:
|
||||||
- args:
|
- name: {{ .Chart.Name }}
|
||||||
- supervisord
|
securityContext:
|
||||||
- -c
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
- /etc/supervisord.conf
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
args: ["supervisord", "-c", "/etc/supervisord.conf"]
|
||||||
env:
|
env:
|
||||||
- name: APP_BASE_URL
|
- name: APP_BASE_URL
|
||||||
value: http://localhost:5000
|
value: {{ .Values.config.appBaseUrl | default "http://localhost:5000" | quote }}
|
||||||
- name: APP_MODE
|
- name: APP_MODE
|
||||||
value: lite
|
value: {{ .Values.config.appMode | default "lite" | quote }}
|
||||||
- name: FLASK_APP
|
- name: FLASK_APP
|
||||||
value: app.py
|
value: {{ .Values.config.flaskApp | default "app.py" | quote }}
|
||||||
- name: FLASK_ENV
|
- name: FLASK_ENV
|
||||||
value: development
|
value: {{ .Values.config.flaskEnv | default "development" | quote }}
|
||||||
- name: HAPI_FHIR_URL
|
- name: HAPI_FHIR_URL
|
||||||
value: http://localhost:8080/fhir
|
value: {{ .Values.config.hapiFhirUrl | default "http://localhost:8080/fhir" | quote }}
|
||||||
- name: NODE_PATH
|
- name: NODE_PATH
|
||||||
value: /usr/lib/node_modules
|
value: {{ .Values.config.nodePath | default "/usr/lib/node_modules" | quote }}
|
||||||
image: ghcr.io/jgsuess/fhirflare-ig-toolkit:latest
|
- name: TMPDIR
|
||||||
name: fhirflare
|
value: "/tmp-dir"
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 5000
|
- name: http
|
||||||
|
containerPort: {{ .Values.service.port | default 5000 }}
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: logs
|
- name: logs
|
||||||
mountPath: /app/logs
|
mountPath: /app/logs
|
||||||
restartPolicy: Always
|
- name: tmp-dir
|
||||||
|
mountPath: /tmp-dir
|
||||||
|
{{- with .Values.resources }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.livenessProbe }}
|
||||||
|
livenessProbe:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.readinessProbe }}
|
||||||
|
readinessProbe:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
volumes:
|
volumes:
|
||||||
- name: logs
|
- name: logs
|
||||||
emptyDir: {}
|
emptyDir: {}
|
||||||
|
- name: tmp-dir
|
||||||
|
emptyDir: {}
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
@ -1,11 +1,18 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Service
|
kind: Service
|
||||||
metadata:
|
metadata:
|
||||||
name: fhirflare
|
name: {{ include "fhirflare-ig-toolkit.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "fhirflare-ig-toolkit.labels" . | nindent 4 }}
|
||||||
spec:
|
spec:
|
||||||
|
type: {{ .Values.service.type | default "ClusterIP" }}
|
||||||
ports:
|
ports:
|
||||||
- name: "5000"
|
- name: http
|
||||||
port: 5000
|
port: {{ .Values.service.port | default 5000 }}
|
||||||
targetPort: 5000
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
{{- if and (eq .Values.service.type "NodePort") .Values.service.nodePort }}
|
||||||
|
nodePort: {{ .Values.service.nodePort }}
|
||||||
|
{{- end }}
|
||||||
selector:
|
selector:
|
||||||
io.kompose.service: fhirflare
|
{{- include "fhirflare-ig-toolkit.selectorLabels" . | nindent 4 }}
|
||||||
@ -1,302 +1,92 @@
|
|||||||
# -- number of replicas to deploy
|
# Default values for fhirflare-ig-toolkit
|
||||||
replicaCount: 1
|
replicaCount: 1
|
||||||
|
|
||||||
image:
|
image:
|
||||||
# -- registry where the HAPI FHIR server image is hosted
|
repository: ghcr.io/jgsuess/fhirflare-ig-toolkit
|
||||||
registry: docker.io
|
pullPolicy: Always
|
||||||
# -- the path inside the repository
|
tag: "latest"
|
||||||
repository: hapiproject/hapi
|
|
||||||
# -- the image tag. As of v5.7.0, this is the `distroless` flavor by default, add `-tomcat` to use the Tomcat-based image.
|
|
||||||
tag: "v8.0.0-1@sha256:9fbac7b012b4be91ba481e7008f1353ede4598bc99a36f3902b8abf873e70ed8"
|
|
||||||
# -- image pullPolicy to use
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
# -- image pull secrets to use when pulling the image
|
|
||||||
imagePullSecrets: []
|
imagePullSecrets: []
|
||||||
|
|
||||||
# -- override the chart name
|
|
||||||
nameOverride: ""
|
nameOverride: ""
|
||||||
|
|
||||||
# -- override the chart fullname
|
|
||||||
fullnameOverride: ""
|
fullnameOverride: ""
|
||||||
|
|
||||||
# -- annotations applied to the server deployment
|
# FHIRflare specific configuration
|
||||||
deploymentAnnotations: {}
|
config:
|
||||||
|
appBaseUrl: "http://localhost:5000"
|
||||||
|
appMode: "lite"
|
||||||
|
flaskApp: "app.py"
|
||||||
|
flaskEnv: "development"
|
||||||
|
hapiFhirUrl: "http://localhost:8080/fhir"
|
||||||
|
nodePath: "/usr/lib/node_modules"
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 5000
|
||||||
|
nodePort: null
|
||||||
|
|
||||||
# -- annotations applied to the server pod
|
|
||||||
podAnnotations: {}
|
podAnnotations: {}
|
||||||
|
|
||||||
# -- pod security context
|
# podSecurityContext:
|
||||||
podSecurityContext:
|
# fsGroup: 65532
|
||||||
fsGroupChangePolicy: OnRootMismatch
|
# fsGroupChangePolicy: OnRootMismatch
|
||||||
runAsNonRoot: true
|
# runAsNonRoot: true
|
||||||
runAsGroup: 65532
|
# runAsGroup: 65532
|
||||||
runAsUser: 65532
|
# runAsUser: 65532
|
||||||
fsGroup: 65532
|
# seccompProfile:
|
||||||
seccompProfile:
|
# type: RuntimeDefault
|
||||||
type: RuntimeDefault
|
|
||||||
|
|
||||||
securityContext:
|
# securityContext:
|
||||||
allowPrivilegeEscalation: false
|
# allowPrivilegeEscalation: false
|
||||||
capabilities:
|
# capabilities:
|
||||||
drop:
|
# drop:
|
||||||
- ALL
|
# - ALL
|
||||||
readOnlyRootFilesystem: true
|
# privileged: false
|
||||||
runAsNonRoot: true
|
# readOnlyRootFilesystem: true
|
||||||
runAsUser: 65532
|
# runAsGroup: 65532
|
||||||
runAsGroup: 65532
|
# runAsNonRoot: true
|
||||||
privileged: false
|
# runAsUser: 65532
|
||||||
seccompProfile:
|
# seccompProfile:
|
||||||
type: RuntimeDefault
|
# type: RuntimeDefault
|
||||||
|
|
||||||
# service to expose the server
|
|
||||||
service:
|
|
||||||
# -- service type
|
|
||||||
type: ClusterIP
|
|
||||||
# -- port where the server will be exposed at
|
|
||||||
port: 8080
|
|
||||||
|
|
||||||
ingress:
|
|
||||||
# -- whether to create an Ingress to expose the FHIR server HTTP endpoint
|
|
||||||
enabled: false
|
|
||||||
# -- provide any additional annotations which may be required. Evaluated as a template.
|
|
||||||
annotations:
|
|
||||||
{}
|
|
||||||
# kubernetes.io/ingress.class: nginx
|
|
||||||
# kubernetes.io/tls-acme: "true"
|
|
||||||
hosts:
|
|
||||||
- host: fhir-server.127.0.0.1.nip.io
|
|
||||||
pathType: ImplementationSpecific
|
|
||||||
paths: ["/"]
|
|
||||||
# -- ingress TLS config
|
|
||||||
tls: []
|
|
||||||
# - secretName: chart-example-tls
|
|
||||||
# hosts:
|
|
||||||
# - chart-example.local
|
|
||||||
|
|
||||||
# -- set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge).
|
|
||||||
# This is ignored if `resources` is set (`resources` is recommended for production).
|
|
||||||
# More information: <https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15>
|
|
||||||
resourcesPreset: "medium"
|
|
||||||
|
|
||||||
# -- configure the FHIR server's resource requests and limits
|
|
||||||
resources:
|
resources:
|
||||||
{}
|
limits:
|
||||||
# We usually recommend not to specify default resources and to leave this as a conscious
|
cpu: 500m
|
||||||
# choice for the user. This also increases chances charts run on environments with little
|
memory: 512Mi
|
||||||
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
ephemeral-storage: 1Gi
|
||||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
requests:
|
||||||
# limits:
|
cpu: 100m
|
||||||
# cpu: 100m
|
memory: 128Mi
|
||||||
# memory: 128Mi
|
ephemeral-storage: 100Mi
|
||||||
# requests:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
|
|
||||||
# -- node selector for the pod
|
|
||||||
nodeSelector: {}
|
|
||||||
|
|
||||||
# -- pod tolerations
|
|
||||||
tolerations: []
|
|
||||||
|
|
||||||
# -- pod affinity
|
|
||||||
affinity: {}
|
|
||||||
|
|
||||||
# -- pod topology spread configuration
|
|
||||||
# see: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#api
|
|
||||||
topologySpreadConstraints:
|
|
||||||
[]
|
|
||||||
# - maxSkew: 1
|
|
||||||
# topologyKey: topology.kubernetes.io/zone
|
|
||||||
# whenUnsatisfiable: ScheduleAnyway
|
|
||||||
# labelSelector:
|
|
||||||
# matchLabels:
|
|
||||||
# app.kubernetes.io/instance: hapi-fhir-jpaserver
|
|
||||||
# app.kubernetes.io/name: hapi-fhir-jpaserver
|
|
||||||
|
|
||||||
postgresql:
|
|
||||||
# -- enable an included PostgreSQL DB.
|
|
||||||
# see <https://github.com/bitnami/charts/tree/master/bitnami/postgresql> for details
|
|
||||||
# if set to `false`, the values under `externalDatabase` are used
|
|
||||||
enabled: true
|
|
||||||
auth:
|
|
||||||
# -- name for a custom database to create
|
|
||||||
database: "fhir"
|
|
||||||
# -- Name of existing secret to use for PostgreSQL credentials
|
|
||||||
# `auth.postgresPassword`, `auth.password`, and `auth.replicationPassword` will be ignored and picked up from this secret
|
|
||||||
# The secret must contain the keys `postgres-password` (which is the password for "postgres" admin user),
|
|
||||||
# `password` (which is the password for the custom user to create when `auth.username` is set),
|
|
||||||
# and `replication-password` (which is the password for replication user).
|
|
||||||
# The secret might also contains the key `ldap-password` if LDAP is enabled. `ldap.bind_password` will be ignored and
|
|
||||||
# picked from this secret in this case.
|
|
||||||
# The value is evaluated as a template.
|
|
||||||
existingSecret: ""
|
|
||||||
|
|
||||||
# -- readiness probe
|
|
||||||
# @ignored
|
|
||||||
readinessProbe:
|
|
||||||
httpGet:
|
|
||||||
path: /readyz
|
|
||||||
port: http
|
|
||||||
failureThreshold: 5
|
|
||||||
initialDelaySeconds: 30
|
|
||||||
periodSeconds: 20
|
|
||||||
successThreshold: 1
|
|
||||||
timeoutSeconds: 20
|
|
||||||
|
|
||||||
# -- liveness probe
|
|
||||||
# @ignored
|
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
path: /livez
|
path: /
|
||||||
port: http
|
port: http
|
||||||
failureThreshold: 5
|
|
||||||
initialDelaySeconds: 30
|
initialDelaySeconds: 30
|
||||||
periodSeconds: 20
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
failureThreshold: 6
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
timeoutSeconds: 30
|
|
||||||
|
|
||||||
# -- startup probe
|
readinessProbe:
|
||||||
# @ignored
|
|
||||||
startupProbe:
|
|
||||||
httpGet:
|
httpGet:
|
||||||
path: /readyz
|
path: /
|
||||||
port: http
|
port: http
|
||||||
failureThreshold: 10
|
initialDelaySeconds: 5
|
||||||
initialDelaySeconds: 30
|
periodSeconds: 10
|
||||||
periodSeconds: 30
|
timeoutSeconds: 5
|
||||||
|
failureThreshold: 6
|
||||||
successThreshold: 1
|
successThreshold: 1
|
||||||
timeoutSeconds: 30
|
|
||||||
|
|
||||||
externalDatabase:
|
nodeSelector: {}
|
||||||
# -- external database host used with `postgresql.enabled=false`
|
tolerations: []
|
||||||
host: localhost
|
affinity: {}
|
||||||
# -- database port number
|
|
||||||
port: 5432
|
|
||||||
# -- username for the external database
|
|
||||||
user: fhir
|
|
||||||
# -- database password
|
|
||||||
password: ""
|
|
||||||
# -- name of an existing secret resource containing the DB password in the `existingSecretKey` key
|
|
||||||
existingSecret: ""
|
|
||||||
# -- name of the key inside the `existingSecret`
|
|
||||||
existingSecretKey: "postgresql-password"
|
|
||||||
# -- database name
|
|
||||||
database: fhir
|
|
||||||
|
|
||||||
# -- extra environment variables to set on the server container
|
# HAPI FHIR server subchart configuration
|
||||||
extraEnv:
|
hapi-fhir-jpaserver:
|
||||||
[]
|
# Add any HAPI FHIR specific values here to override defaults
|
||||||
# - name: SPRING_FLYWAY_BASELINE_ON_MIGRATE
|
enabled: true
|
||||||
# value: "true"
|
postgresql:
|
||||||
|
enabled: true
|
||||||
podDisruptionBudget:
|
auth:
|
||||||
# -- Enable PodDisruptionBudget for the server pods.
|
database: "fhir"
|
||||||
# uses policy/v1/PodDisruptionBudget thus requiring k8s 1.21+
|
|
||||||
enabled: false
|
|
||||||
# -- minimum available instances
|
|
||||||
minAvailable: 1
|
|
||||||
# -- maximum unavailable instances
|
|
||||||
maxUnavailable: ""
|
|
||||||
|
|
||||||
serviceAccount:
|
|
||||||
# -- Specifies whether a service account should be created.
|
|
||||||
create: false
|
|
||||||
# -- 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: ""
|
|
||||||
# -- Automatically mount a ServiceAccount's API credentials?
|
|
||||||
automount: true
|
|
||||||
|
|
||||||
metrics:
|
|
||||||
serviceMonitor:
|
|
||||||
# -- if enabled, creates a ServiceMonitor instance for Prometheus Operator-based monitoring
|
|
||||||
enabled: false
|
|
||||||
# -- additional labels to apply to the ServiceMonitor object, e.g. `release: prometheus`
|
|
||||||
additionalLabels: {}
|
|
||||||
# namespace: monitoring
|
|
||||||
# interval: 30s
|
|
||||||
# scrapeTimeout: 10s
|
|
||||||
service:
|
|
||||||
port: 8081
|
|
||||||
|
|
||||||
# @ignore
|
|
||||||
restrictedContainerSecurityContext:
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
readOnlyRootFilesystem: true
|
|
||||||
privileged: false
|
|
||||||
capabilities:
|
|
||||||
drop:
|
|
||||||
- ALL
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsUser: 65534
|
|
||||||
runAsGroup: 65534
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
|
|
||||||
# @ignored
|
|
||||||
curl:
|
|
||||||
image:
|
|
||||||
registry: docker.io
|
|
||||||
repository: curlimages/curl
|
|
||||||
tag: 8.12.1@sha256:94e9e444bcba979c2ea12e27ae39bee4cd10bc7041a472c4727a558e213744e6
|
|
||||||
|
|
||||||
tests:
|
|
||||||
# -- whether the service account token should be auto-mounted for the test pods
|
|
||||||
automountServiceAccountToken: false
|
|
||||||
# -- set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge).
|
|
||||||
# This is ignored if `resources` is set (`resources` is recommended for production).
|
|
||||||
# More information: <https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15>
|
|
||||||
resourcesPreset: "nano"
|
|
||||||
# -- configure the test pods resource requests and limits
|
|
||||||
resources: {}
|
|
||||||
# limits:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
# requests:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
# @ignored
|
|
||||||
podSecurityContext:
|
|
||||||
fsGroupChangePolicy: OnRootMismatch
|
|
||||||
runAsNonRoot: true
|
|
||||||
runAsGroup: 65532
|
|
||||||
runAsUser: 65532
|
|
||||||
fsGroup: 65532
|
|
||||||
seccompProfile:
|
|
||||||
type: RuntimeDefault
|
|
||||||
|
|
||||||
initContainers:
|
|
||||||
# -- set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge).
|
|
||||||
# This is ignored if `resources` is set (`resources` is recommended for production).
|
|
||||||
# More information: <https://github.com/bitnami/charts/blob/main/bitnami/common/templates/_resources.tpl#L15>
|
|
||||||
resourcesPreset: "nano"
|
|
||||||
# -- configure the init containers pods resource requests and limits
|
|
||||||
resources: {}
|
|
||||||
# limits:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
# requests:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
|
|
||||||
# -- additional Spring Boot application config. Mounted as a file and automatically loaded by the application.
|
|
||||||
extraConfig:
|
|
||||||
""
|
|
||||||
# # For example:
|
|
||||||
# |
|
|
||||||
# hapi:
|
|
||||||
# fhir:
|
|
||||||
# implementationguides:
|
|
||||||
# gh_0_1_0:
|
|
||||||
# url: https://build.fhir.org/ig/hl7-eu/gravitate-health/package.tgz
|
|
||||||
# name: hl7.eu.fhir.gh
|
|
||||||
# version: 0.1.0
|
|
||||||
|
|
||||||
# -- Optionally specify extra list of additional volumes
|
|
||||||
extraVolumes: []
|
|
||||||
|
|
||||||
# -- Optionally specify extra list of additional volumeMounts
|
|
||||||
extraVolumeMounts: []
|
|
||||||
Loading…
x
Reference in New Issue
Block a user