terraform_alert_config/import_adapter/gke.tf (98 lines of code) (raw):
resource "kubernetes_deployment" "dicom-adapter" {
metadata {
name = "dicom-adapter"
namespace = "namespace-dicom-import-adapter"
labels = {
App = "dicom-adapter"
}
}
# customize nodes params
spec {
progress_deadline_seconds = 2147483647
replicas = var.replicas
revision_history_limit = 2147483647
selector {
match_labels = {
App = "dicom-adapter"
}
}
strategy {
rolling_update {
max_surge = 2
max_unavailable = 1
}
type = "RollingUpdate"
}
template {
metadata {
labels = {
App = "dicom-adapter"
}
}
spec {
# Customize dicom import adapter settings
container {
image = var.image
name = "dicom-import-adapter"
image_pull_policy = "Always"
port {
container_port = var.dimse_port
name = "port"
protocol = "TCP"
}
resources {
limits {
cpu = "0.5"
memory = "512Mi"
}
requests {
cpu = "250m"
memory = "50Mi"
}
}
args = [
"--dimse_aet=IMPORTADAPTER",
"--dimse_port=${var.dimse_port}",
"--monitoring_project_id=${var.project_id}",
"--gcs_backup_project_id=${var.project_id}",
"--dicomweb_address=https://healthcare.googleapis.com/v1/projects/${var.project_id}/locations/${var.region}/datasets/${var.dataset}/dicomStores/${var.store}/dicomWeb",
"--persistent_file_upload_retry_amount=${var.persistent_file_upload_retry_amount}",
"--min_upload_delay=${var.min_upload_delay}",
"--persistent_file_storage_location=${var.persistent_file_storage_location}",
"--oauth_scopes=https://www.googleapis.com/auth/cloud-platform",
"--verbose"
]
env {
name = "ENV_POD_NAME"
value = "dicom-adapter"
}
env {
name = "ENV_POD_NAMESPACE"
value = "namespace-dicom-import-adapter"
}
env {
name = "ENV_CONTAINER_NAME"
value = "dicom-import-adapter"
}
}
dns_policy = "ClusterFirst"
restart_policy = "Always"
termination_grace_period_seconds = 300
}
}
}
}
# expose LoadBalancer
resource "kubernetes_service" "dicom-adapter" {
metadata {
name = "service-dicom-adapter"
namespace = "namespace-dicom-import-adapter"
}
spec {
selector = {
App = kubernetes_deployment.dicom-adapter.spec.0.template.0.metadata[0].labels.App
}
port {
port = var.dimse_port
target_port = var.dimse_port
}
type = "LoadBalancer"
}
}