Skip to content

Commit

Permalink
MONAI Deploy helm charts
Browse files Browse the repository at this point in the history
  • Loading branch information
mocsharp committed Sep 1, 2023
1 parent 8dbf4d4 commit 20d3ac1
Show file tree
Hide file tree
Showing 38 changed files with 2,066 additions and 0 deletions.
9 changes: 9 additions & 0 deletions deploy/helm-charts/Chart.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
dependencies:
- name: argo-workflows
repository: https://argoproj.github.io/argo-helm
version: 0.33.1
- name: local-path-provisioner
repository: https://charts.containeroo.ch
version: 0.0.24
digest: sha256:6c6f22833d7b04577238156ef04787025ff112a3fce93e1b7aef4664cf483b4b
generated: "2023-09-01T14:33:33.804030468-07:00"
38 changes: 38 additions & 0 deletions deploy/helm-charts/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: v2
name: monai-deploy
description: MONAI Deploy for local deployment
type: application

# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "0.1.0"
keywords:
- ai
- dicom
- dicomweb
- ehr
- emr
- fhir
- healthcare
- hl7
- monai-deploy
- medical-imaging
- radiology
home: https://github.com/Project-MONAI/monai-deploy
sources:
- https://github.com/Project-MONAI/monai-deploy-informatics-gateway
- https://github.com/Project-MONAI/monai-deploy-workflow-manager/
dependencies:
- name: argo-workflows
version: 0.33.1
repository: https://argoproj.github.io/argo-helm
- name: local-path-provisioner
version: 0.0.24
repository: https://charts.containeroo.ch
75 changes: 75 additions & 0 deletions deploy/helm-charts/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# MONAI Deploy Helm Charts


## Install Tools
```bash
# Install kubernetes tools
sudo apt-get install -y -q kubelet kubectl kubeadm
sudo apt-mark hold kubelet kubeadm kubectl

# Install Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
```

## Installing Kubernetes
Select one of the following Kubernetes distribution:
- [k3s](https://k3s.io/)
```bash
curl -sfL https://get.k3s.io | sh -s - --flannel-backend host-gw --flannel-external-i
# Copy default configuration
mkdir -p $HOME/.kube
sudo cp -i /etc/rancher/k3s/k3s.yaml $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
```

- [K8s](https://kubernetes.io/)
```bash
kubeadm init --pod-network-cidr=192.168.0.0/16
# Copy default configuration
mkdir -p $HOME/.kube
sudo cp -i /etc/rancher/k3s/k3s.yaml $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl taint nodes --all node-role.kubernetes.io/control-plane-

```

# Install MONAI Deploy

Build & download dependencies

```bash
helm dependency build
```

If you are reinstalling, run the following to remove existing `local-path-provisioner` Storage Class:

```bash
kubectl delete StorageClass local-path
```

Install:

```bash
helm upgrade -i monai-deploy .
```

Upon successfully installation, optinally follow the on screen instructions to initialize Informatics Gateway & Orthanc.

Uninstall:
```
helm uninstall monai-deploy
```


## Advanced Configuration

Most of the configurations may be found in the following files:

- `values.yaml`: contains container image repo, application secrets, ports, etc...
- `files/informatics-gateway.json`: Informatics Gateway specific configurations...
- `files/workflow-manager.json`: Workflow Manager specific configurations...
- `files/task-manager.json`: Task Manager specific configurations...
- `files/orthanc.json`: Orthanc specific configurations...

#
1 change: 1 addition & 0 deletions deploy/helm-charts/charts/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.tgz
85 changes: 85 additions & 0 deletions deploy/helm-charts/files/informatics-gateway.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
{
"MonaiDeployAuthentication": {
"bypassAuthentication": true
},
"ConnectionStrings": {
"Type": "mongodb",
"DatabaseName": "InformaticsGateway"
},
"InformaticsGateway": {
"dicom": {
"scp": {
"port": 104,
"logDimseDatasets": false,
"rejectUnknownSources": true
},
"scu": {
"aeTitle": "MONAISCU",
"logDimseDatasets": false,
"logDataPDUs": false
}
},
"messaging": {
"publisherServiceAssemblyName": "Monai.Deploy.Messaging.RabbitMQ.RabbitMQMessagePublisherService, Monai.Deploy.Messaging.RabbitMQ",
"publisherSettings": {
"exchange": "monaideploy"
},
"subscriberServiceAssemblyName": "Monai.Deploy.Messaging.RabbitMQ.RabbitMQMessageSubscriberService, Monai.Deploy.Messaging.RabbitMQ",
"subscriberSettings": {
"exchange": "monaideploy",
"exportRequestQueue": "export_tasks",
"deadLetterExchange": "monaideploy-dead-letter",
"deliveryLimit": 3,
"requeueDelay": 30
}
},
"storage": {
"localTemporaryStoragePath": "/payloads",
"remoteTemporaryStoragePath": "/incoming",
"bucketName": "monaideploy",
"storageRootPath": "/payloads",
"temporaryBucketName": "monaideploy",
"serviceAssemblyName": "Monai.Deploy.Storage.MinIO.MinIoStorageService, Monai.Deploy.Storage.MinIO",
"watermarkPercent": 75,
"reserveSpaceGB": 5,
"settings": {
"securedConnection": false,
"region": "local",
"executableLocation": "/bin/mc",
"serviceName": "MinIO",
"createBuckets": "monaideploy"
}
},
"hl7": {
"port": 2575,
"maximumNumberOfConnections": 10,
"clientTimeout": 60000,
"sendAck": true
},
"dicomWeb": {
"plugins": []
},
"plugins": {
"remoteApp": {
"ReplaceTags": "AccessionNumber"
}
}
},
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://+:5000"
}
}
},
"AllowedHosts": "*",
"Cli": {
"Runner": "Docker",
"HostDataStorageMount": "~/.mig/data",
"HostPlugInsStorageMount": "~/.mig/plug-ins",
"HostDatabaseStorageMount": "~/.mig/database",
"HostLogsStorageMount": "~/.mig/logs",
"InformaticsGatewayServerEndpoint": "http://localhost:5000",
"DockerImagePrefix": "ghcr.io/project-monai/monai-deploy-informatics-gateway"
}
}
84 changes: 84 additions & 0 deletions deploy/helm-charts/files/orthanc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
{
"Name": "Orthanc",
"StorageDirectory": "/var/lib/orthanc/db",
"IndexDirectory": "/var/lib/orthanc/db",
"StorageCompression": false,
"MaximumStorageSize": 0,
"MaximumPatientCount": 0,
"LuaScripts": [],
"Plugins": [
"/usr/share/orthanc/plugins",
"/usr/local/share/orthanc/plugins"
],
"ConcurrentJobs": 2,
"HttpServerEnabled": true,
"HttpPort": 8042,
"HttpDescribeErrors": true,
"HttpCompressionEnabled": true,
"DicomServerEnabled": true,
"DicomCheckCalledAet": false,
"DicomPort": 4242,
"DefaultEncoding": "Latin1",
"DeflatedTransferSyntaxAccepted": true,
"JpegTransferSyntaxAccepted": true,
"Jpeg2000TransferSyntaxAccepted": true,
"JpegLosslessTransferSyntaxAccepted": true,
"JpipTransferSyntaxAccepted": true,
"Mpeg2TransferSyntaxAccepted": true,
"RleTransferSyntaxAccepted": true,
"UnknownSopClassAccepted": true,
"DicomScpTimeout": 30,
"RemoteAccessAllowed": true,
"SslEnabled": false,
"SslCertificate": "certificate.pem",
"AuthenticationEnabled": false,
"DicomModalitiesInDatabase": false,
"DicomAlwaysAllowEcho": true,
"DicomAlwaysAllowStore": true,
"DicomCheckModalityHost": false,
"DicomScuTimeout": 10,
"OrthancPeers": {},
"OrthancPeersInDatabase": false,
"HttpProxy": "",
"HttpVerbose": true,
"HttpTimeout": 10,
"HttpsVerifyPeers": true,
"HttpsCACertificates": "",
"UserMetadata": {},
"UserContentType": {},
"StableAge": 60,
"StrictAetComparison": false,
"StoreMD5ForAttachments": true,
"LimitFindResults": 0,
"LimitFindInstances": 0,
"LimitJobs": 10,
"LogExportedResources": false,
"KeepAlive": true,
"TcpNoDelay": true,
"HttpThreadsCount": 50,
"StoreDicom": true,
"DicomAssociationCloseDelay": 5,
"QueryRetrieveSize": 10,
"CaseSensitivePN": false,
"LoadPrivateDictionary": true,
"Dictionary": {},
"SynchronousCMove": true,
"JobsHistorySize": 10,
"SaveJobs": true,
"OverwriteInstances": true,
"MediaArchiveSize": 1,
"StorageAccessOnFind": "Always",
"MetricsEnabled": true,
"RemoteAccessEnabled": true,
"DicomWeb": {
"Enable": true, // Whether DICOMweb support is enabled
"Root": "/dicom-web/", // Root URI of the DICOMweb API (for QIDO-RS, STOW-RS and WADO-RS)
"EnableWado": true, // Whether WADO-URI (previously known as WADO) support is enabled
"WadoRoot": "/wado", // Root URI of the WADO-URI (aka. WADO) API
"Host": "localhost:8042", // Hard-codes the name of the host for subsequent WADO-RS requests
"Ssl": false, // Whether HTTPS should be used for subsequent WADO-RS requests
"StowMaxInstances": 10, // For STOW-RS client, the maximum number of instances in one single HTTP query (0 = no limit)
"StowMaxSize": 10, // For STOW-RS client, the maximum size of the body in one single HTTP query (in MB, 0 = no limit)
"QidoCaseSensitive": true // For QIDO-RS server, whether search is case sensitive (since release 0.5)
}
}
Loading

0 comments on commit 20d3ac1

Please sign in to comment.