diff --git a/README.md b/README.md index 20187336..4a13e5e5 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ You need the following permissions to run this module. | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.9.0 | -| [helm](#requirement\_helm) | >= 2.15.0, <3.0.0 | +| [helm](#requirement\_helm) | >= 3.0.0, <4.0.0 | | [ibm](#requirement\_ibm) | >= 1.80.2, <2.0.0 | ### Modules diff --git a/examples/logs-agent-iks/provider.tf b/examples/logs-agent-iks/provider.tf index 76346099..4870cff2 100644 --- a/examples/logs-agent-iks/provider.tf +++ b/examples/logs-agent-iks/provider.tf @@ -4,17 +4,17 @@ provider "ibm" { } provider "helm" { - kubernetes { + kubernetes = { host = data.ibm_container_cluster_config.cluster_config.host token = data.ibm_container_cluster_config.cluster_config.token cluster_ca_certificate = data.ibm_container_cluster_config.cluster_config.ca_certificate } # IBM Cloud credentials are required to authenticate to the helm repo - registry { + registries = [{ url = "oci://icr.io/ibm/observe/logs-agent-helm" username = "iamapikey" password = var.ibmcloud_api_key - } + }] } provider "kubernetes" { diff --git a/examples/logs-agent-iks/version.tf b/examples/logs-agent-iks/version.tf index bca3a4bc..baf11f66 100644 --- a/examples/logs-agent-iks/version.tf +++ b/examples/logs-agent-iks/version.tf @@ -10,7 +10,7 @@ terraform { } helm = { source = "hashicorp/helm" - version = "2.15.0" + version = "3.0.0" } # The kubernetes provider is not actually required by the module itself, just this example, so OK to use ">=" here instead of locking into a version kubernetes = { diff --git a/examples/logs-agent-ocp/provider.tf b/examples/logs-agent-ocp/provider.tf index 76346099..4870cff2 100644 --- a/examples/logs-agent-ocp/provider.tf +++ b/examples/logs-agent-ocp/provider.tf @@ -4,17 +4,17 @@ provider "ibm" { } provider "helm" { - kubernetes { + kubernetes = { host = data.ibm_container_cluster_config.cluster_config.host token = data.ibm_container_cluster_config.cluster_config.token cluster_ca_certificate = data.ibm_container_cluster_config.cluster_config.ca_certificate } # IBM Cloud credentials are required to authenticate to the helm repo - registry { + registries = [{ url = "oci://icr.io/ibm/observe/logs-agent-helm" username = "iamapikey" password = var.ibmcloud_api_key - } + }] } provider "kubernetes" { diff --git a/examples/logs-agent-ocp/version.tf b/examples/logs-agent-ocp/version.tf index 397255ec..5c3402e9 100644 --- a/examples/logs-agent-ocp/version.tf +++ b/examples/logs-agent-ocp/version.tf @@ -11,7 +11,7 @@ terraform { } helm = { source = "hashicorp/helm" - version = ">= 2.15.0" + version = ">= 3.0.0, <4.0.0" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/main.tf b/main.tf index 30823447..7da705f2 100644 --- a/main.tf +++ b/main.tf @@ -32,7 +32,7 @@ locals { for metadata in var.logs_agent_additional_metadata : { (metadata.key) = metadata.value }]...) : {} # DO NOT REMOVE "...", it is used to convert list of objects into a single object - cluster_name = var.is_vpc_cluster ? data.ibm_container_vpc_cluster.cluster[0].resource_name : data.ibm_container_cluster.cluster[0].resource_name # Not publically documented in provider. See https://github.com/IBM-Cloud/terraform-provider-ibm/issues/4485 + cluster_name = var.is_vpc_cluster ? data.ibm_container_vpc_cluster.cluster[0].resource_name : data.ibm_container_cluster.cluster[0].resource_name # Not publicly documented in provider. See https://github.com/IBM-Cloud/terraform-provider-ibm/issues/4485 } resource "helm_release" "logs_agent" { @@ -47,78 +47,80 @@ resource "helm_release" "logs_agent" { recreate_pods = true force_update = true - set { - name = "metadata.name" - type = "string" - value = var.logs_agent_name - } - set { - name = "image.version" - type = "string" - value = var.logs_agent_image_version - } - set { - name = "env.ingestionHost" - type = "string" - value = local.cloud_logs_ingress_endpoint - } - set { - name = "env.ingestionPort" - value = var.cloud_logs_ingress_port - } - set_sensitive { + set = [ + { + name = "metadata.name" + type = "string" + value = var.logs_agent_name + }, + { + name = "image.version" + type = "string" + value = var.logs_agent_image_version + }, + { + name = "env.ingestionHost" + type = "string" + value = local.cloud_logs_ingress_endpoint + }, + { + name = "env.ingestionPort" + value = var.cloud_logs_ingress_port + }, + { + name = "env.trustedProfileID" + type = "string" + value = local.logs_agent_trusted_profile_id + }, + { + name = "env.iamMode" + type = "string" + value = var.logs_agent_iam_mode + }, + { + name = "env.iamEnvironment" + type = "string" + value = var.logs_agent_iam_environment + }, + { + name = "systemLogs" + type = "string" + value = join("\\,", var.logs_agent_system_logs) + }, + { + name = "excludeLogSourcePaths" + type = "string" + value = join("\\,", var.logs_agent_exclude_log_source_paths) + }, + { + name = "selectedLogSourcePaths" + type = "string" + value = join("\\,", local.logs_agent_selected_log_source_paths) + }, + { + name = "clusterName" + type = "string" + value = local.cluster_name + }, + { + name = "scc.create" + value = var.logs_agent_enable_scc + }, + { + name = "enableMultiline" + value = var.enable_multiline + }, + { + name = "includeAnnotations" + value = var.enable_annotations + } + ] + + set_sensitive = [{ name = "secret.iamAPIKey" type = "string" value = local.logs_agent_iam_api_key - } - set { - name = "env.trustedProfileID" - type = "string" - value = local.logs_agent_trusted_profile_id - } - set { - name = "env.iamMode" - type = "string" - value = var.logs_agent_iam_mode - } - set { - name = "env.iamEnvironment" - type = "string" - value = var.logs_agent_iam_environment - } - set { - name = "systemLogs" - type = "string" - value = join("\\,", var.logs_agent_system_logs) - } - set { - name = "excludeLogSourcePaths" - type = "string" - value = join("\\,", var.logs_agent_exclude_log_source_paths) - } - set { - name = "selectedLogSourcePaths" - type = "string" - value = join("\\,", local.logs_agent_selected_log_source_paths) - } - set { - name = "clusterName" - type = "string" - value = local.cluster_name - } - set { - name = "scc.create" - value = var.logs_agent_enable_scc - } - set { - name = "enableMultiline" - value = var.enable_multiline - } - - set { - name = "includeAnnotations" - value = var.enable_annotations - } + }] # dummy value hack to force update https://github.com/hashicorp/terraform-provider-helm/issues/515#issuecomment-813088122 values = [ diff --git a/solutions/fully-configurable/provider.tf b/solutions/fully-configurable/provider.tf index f49fb73b..6078c490 100644 --- a/solutions/fully-configurable/provider.tf +++ b/solutions/fully-configurable/provider.tf @@ -10,17 +10,17 @@ provider "kubernetes" { } provider "helm" { - kubernetes { + kubernetes = { host = data.ibm_container_cluster_config.cluster_config.host token = data.ibm_container_cluster_config.cluster_config.token cluster_ca_certificate = data.ibm_container_cluster_config.cluster_config.ca_certificate } # IBM Cloud credentials are required to authenticate to the helm repo - registry { + registries = [{ url = "oci://icr.io/ibm/observe/logs-agent-helm" username = "iamapikey" password = var.ibmcloud_api_key - } + }] } # Retrieve information about an existing VPC cluster diff --git a/solutions/fully-configurable/version.tf b/solutions/fully-configurable/version.tf index 1d3def79..5c9c20a4 100644 --- a/solutions/fully-configurable/version.tf +++ b/solutions/fully-configurable/version.tf @@ -10,7 +10,7 @@ terraform { } helm = { source = "hashicorp/helm" - version = "2.17.0" + version = "3.0.2" } kubernetes = { source = "hashicorp/kubernetes" diff --git a/version.tf b/version.tf index 8c347465..70a2a2e9 100644 --- a/version.tf +++ b/version.tf @@ -9,7 +9,7 @@ terraform { } helm = { source = "hashicorp/helm" - version = ">= 2.15.0, <3.0.0" + version = ">= 3.0.0, <4.0.0" } } }