Skip to content
This repository was archived by the owner on Nov 24, 2023. It is now read-only.

Commit 69f51e8

Browse files
kavya498hkantare
authored andcommitted
Support: IKS integrations opt out
1 parent 14c8821 commit 69f51e8

File tree

10 files changed

+237
-0
lines changed

10 files changed

+237
-0
lines changed

examples/iks-integration/README.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Opt-Out Integrations on IBM Cloud cluster
2+
3+
Use this IBM Cloud Provider Plug-in for Terraform template to integrate Logging, Monitoring and Activity Tracker Instances on IBM Cloud Clusters
4+
## Template functionalities
5+
6+
1. [main.tf](main.tf)
7+
8+
- Integrates the cluster with an IBM Cloud Log Analysis instance.
9+
- Integrates the cluster with an IBM Cloud Monitoring instance.
10+
11+
2. [logging.tf](logging.tf) - Provisions or retrieves the Log Analysis instance.
12+
13+
3. [monitoring.tf](monitoring.tf) - Provisions or retrieves the Monitoring instance.ded before creating cluster.
14+
15+
## Inputs
16+
17+
Review the following variables that you can customize in your Terraform templates to create the related IBM Cloud resources for your secure OpenShift cluster.
18+
19+
|Name|Description|Type|Default|Required|
20+
|-----|----------|----|-------|--------|
21+
|ibmcloud_api_key|[IBM Cloud IAM API key](https://cloud.ibm.com/docs/account?topic=account-userapikey#create_user_key).|string|N/A|Yes|
22+
|region|[IBM Cloud region for the VPC cluster](https://cloud.ibm.com/docs/openshift?topic=openshift-regions-and-zones#zones-vpc).|string|N/A|Yes|
23+
|resource_group|Name of the [IBM Cloud resource group](https://cloud.ibm.com/docs/account?topic=account-rgs) to create the resources in. If set to `null`, the default resource group is used.|string|`null`|No|
24+
|resource_prefix|Prefix to use for created resource names.|string|N/A|Yes|
25+
|cluster|Id of the cluster.|string|N/A|Yes|
26+
|monitoring_instance| GUID of the IBM Cloud Monitoring instance. If set to `null`, an instance is created with the following naming convention: `<var.resource_prefix>-sysdig`|string|`null`|No|
27+
|monitoring_access_key|The IBM Cloud Monitoring ingestion key that you want to use for your configuration.|string|N/A|No|
28+
|logging_instance|GUID of IBM Cloud Log Analysis instance. If set to `null`, an instance is created with the following naming convention: `<var.resource_prefix>-logdna`|string|`null`|No|
29+
|logging_ingestion_key|The IBM Cloud Log Analysis ingestion key that you want to use for your configuration.|string|N/A|No|
30+
|private_endpoint|Add this option to connect to your Log Analysis and Monitoring service instances through the private cloud service endpoint.|bool|N/A|No|
31+
|activity_tracker_instance|GUID of the IBM Cloud Activity Tracker instance. If set to `null`, a instance is created with the following naming convention: `<var.resource_prefix>-at`|string|`null`|No|
32+
33+
## Usage
34+
35+
```bash
36+
terraform init
37+
38+
terraform plan
39+
40+
terraform apply
41+
42+
terraform destroy
43+
```
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
resource "ibm_resource_instance" "activity_tracker_instance" {
2+
count = var.activity_tracker_instance != null ? 0 : 1
3+
name = "${var.resource_prefix}-at"
4+
location = var.region
5+
resource_group_id = data.ibm_resource_group.resource_group.id
6+
service = "logdnaat"
7+
plan = "lite"
8+
tags = ["opt-out", var.resource_prefix]
9+
}

examples/iks-integration/locals.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
locals {
2+
sysdig_instance_id = var.monitoring_instance != null ? var.monitoring_instance : module.monitoring_instance[0].sysdig_guid
3+
logdna_instance_id = var.logging_instance != null ? var.logging_instance : module.logging_instance[0].logdna_instance_guid
4+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
module "logging_instance" {
2+
source = "terraform-ibm-modules/observability/ibm//modules/logging-logdna"
3+
version = "1.3.0"
4+
count = var.logging_instance == null ? 1 : 0
5+
bind_resource_key = true
6+
service_name = "${var.resource_prefix}-logging"
7+
resource_group_id = data.ibm_resource_group.resource_group.id
8+
plan = "lite"
9+
region = var.region
10+
tags = ["opt-out", var.resource_prefix]
11+
create_timeout = "30m"
12+
resource_key_name = "${var.resource_prefix}-logging-key"
13+
role = "Manager"
14+
resource_key_tags = ["opt-out", var.resource_prefix]
15+
parameters = {
16+
default_receiver = true #enable for platform metrics
17+
}
18+
}

examples/iks-integration/main.tf

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
data "ibm_resource_group" "resource_group" {
2+
name = (var.resource_group != null ? var.resource_group : null)
3+
is_default = (var.resource_group == null ? true : null)
4+
}
5+
6+
module "configure_cluster_sysdig" {
7+
source = "terraform-ibm-modules/cluster/ibm//modules/configure-sysdig-monitor"
8+
version = "1.4.0"
9+
depends_on = [module.configure_cluster_logdna]
10+
cluster = var.cluster
11+
sysdig_instance_id = local.sysdig_instance_id
12+
private_endpoint = var.private_endpoint
13+
sysdig_access_key = var.monitoring_access_key
14+
}
15+
16+
module "configure_cluster_logdna" {
17+
source = "terraform-ibm-modules/cluster/ibm//modules/configure-logdna"
18+
version = "1.4.0"
19+
cluster = var.cluster
20+
logdna_instance_id = local.logdna_instance_id
21+
private_endpoint = var.private_endpoint
22+
logdna_ingestion_key = var.logging_ingestion_key
23+
}
24+
25+
module "patch_monitoring" {
26+
source = "./patch-sysdig"
27+
depends_on = [module.configure_cluster_sysdig]
28+
cluster = var.cluster
29+
resource_group_id = data.ibm_resource_group.resource_group.id
30+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
module "monitoring_instance" {
2+
source = "terraform-ibm-modules/observability/ibm//modules/monitoring-sysdig"
3+
version = "1.3.0"
4+
count = var.monitoring_instance == null ? 1 : 0
5+
bind_resource_key = true
6+
service_name = "${var.resource_prefix}-monitoring"
7+
resource_group_id = data.ibm_resource_group.resource_group.id
8+
plan = "lite"
9+
region = var.region
10+
tags = ["opt-out", var.resource_prefix]
11+
create_timeout = "30m"
12+
resource_key_name = "${var.resource_prefix}-monitoring-key"
13+
role = "Manager"
14+
resource_key_tags = ["opt-out", var.resource_prefix]
15+
parameters = {
16+
default_receiver = true #enable for platform metrics
17+
}
18+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
data "ibm_container_cluster_config" "clusterConfig" {
2+
cluster_name_id = var.cluster
3+
resource_group_id = var.resource_group_id
4+
config_dir = "/tmp"
5+
}
6+
data "ibm_container_cluster_config" "clusterConfigRetry" {
7+
depends_on = [data.ibm_container_cluster_config.clusterConfig]
8+
cluster_name_id = var.cluster
9+
resource_group_id = var.resource_group_id
10+
config_dir = "/tmp"
11+
}
12+
resource "time_sleep" "wait_1m" {
13+
create_duration = "1m"
14+
}
15+
resource "null_resource" "patch_sysdig" {
16+
depends_on = [
17+
time_sleep.wait_1m, data.ibm_container_cluster_config.clusterConfigRetry
18+
]
19+
provisioner "local-exec" {
20+
environment = {
21+
KUBECONFIG = data.ibm_container_cluster_config.clusterConfigRetry.config_file_path
22+
}
23+
command = <<EOT
24+
export KUBECONFIG=$KUBECONFIG
25+
kubectl -n ibm-observe set image ds/sysdig-agent sysdig-agent=icr.io/ext/sysdig/agent
26+
EOT
27+
}
28+
}
29+
variable "cluster" {
30+
31+
}
32+
variable "resource_group_id" {
33+
34+
}
35+
terraform {
36+
required_providers {
37+
ibm = {
38+
source = "IBM-Cloud/ibm"
39+
version = ">=1.31.0"
40+
}
41+
}
42+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
provider "ibm" {
2+
ibmcloud_api_key = var.ibmcloud_api_key
3+
region = var.region
4+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
######################################################
2+
#IBM-Cloud Authentication Credentials
3+
######################################################
4+
5+
variable "ibmcloud_api_key" {
6+
type = string
7+
description = "IBM-Cloud API Key"
8+
}
9+
variable "region" {
10+
type = string
11+
description = "IBM-Cloud Region"
12+
}
13+
variable "resource_group" {
14+
type = string
15+
description = "Name of Resource Group. If null default resource group is considered"
16+
default = null
17+
}
18+
variable "resource_prefix" {
19+
type = string
20+
description = "Prefix to the resource names"
21+
default = null
22+
}
23+
24+
25+
######################################################
26+
#IBM-Cloud Logging and Monitoring Variables
27+
######################################################
28+
variable "cluster" {
29+
type = string
30+
description = "Id of cluster"
31+
}
32+
variable "monitoring_instance" {
33+
default = null
34+
type = string
35+
description = "GUID of Sysdig Instance. If null it creates an instance with name `<var.resource_prefix>-sysdig`"
36+
}
37+
variable "monitoring_access_key" {
38+
description = "The sysdig monitoring ingestion key that you want to use for your configuration"
39+
type = string
40+
default = null
41+
}
42+
variable "logging_instance" {
43+
default = null
44+
type = string
45+
description = "GUID of Logging Instance. If null it creates an instance with `<var.resource_prefix>-logdna`"
46+
}
47+
variable "logging_ingestion_key" {
48+
description = "The LogDNA ingestion key that you want to use for your configuration"
49+
type = string
50+
default = null
51+
}
52+
variable "private_endpoint" {
53+
description = "Add this option to connect to your Sysdig and logDNA service instance through the private service endpoint."
54+
type = bool
55+
default = true
56+
}
57+
variable "activity_tracker_instance" {
58+
description = "GUID of Activity Tracker Instance. If null it doesnt create activity tracker instance."
59+
default = null
60+
type = string
61+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
terraform {
2+
required_providers {
3+
ibm = {
4+
source = "IBM-Cloud/ibm"
5+
version = ">=1.31.0"
6+
}
7+
}
8+
}

0 commit comments

Comments
 (0)