Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
08b29b7
add openobserve support for azure
jatintalgotra-zd Jan 21, 2026
cbe7801
updated aks version to 1.32.0
jatintalgotra-zd Jan 21, 2026
3cefe89
Merge branch 'development' into add-openobserve-support
arunesh-j Jan 22, 2026
abb5e20
Merge pull request #344 from zopdev/add-openobserve-support
jatintalgotra-zd Jan 22, 2026
c72aab5
add outputs for azure openobserve
jatintalgotra-zd Jan 23, 2026
063dd07
add openobserve support for aws
jatintalgotra-zd Jan 23, 2026
76c6db3
Fix : Enable immutable container image tags
keerthana-zd Jan 28, 2026
9fe0625
Fix typo in artifact variable
keerthana-zd Jan 29, 2026
5e19a0c
Enable purge protection for Azure vaults
keerthana-zd Jan 30, 2026
9601f52
Removes deprecated template method (#350)
gizmo-rt Jan 30, 2026
786c29c
ident updates (#353)
gizmo-rt Jan 30, 2026
5def20b
updates event handling (#354)
gizmo-rt Jan 30, 2026
8ea3d0f
Event checks (#355)
gizmo-rt Jan 30, 2026
875bbc5
cert updates for gke (#356)
gizmo-rt Feb 2, 2026
e975877
Allow privileged escaltion (#357)
gizmo-rt Feb 3, 2026
4771701
Update grafana and k8s local vars in azure (#358)
keerthana-zd Feb 3, 2026
a1c7730
Add max_history to helm_release to control Helm revision history (#361)
gourish25 Feb 3, 2026
0573fb3
Add vnet config to azure
keerthana-zd Feb 3, 2026
7c50b68
fix mimir and tempo for the gcp (#364)
gourish25 Feb 4, 2026
c745a52
fix tempo for the gcp (#365)
gourish25 Feb 4, 2026
ef60595
populate openobserve output in gcp (#367)
gourish25 Feb 5, 2026
49dd01b
fix openobserve host generation in the gcp (#368)
gourish25 Feb 5, 2026
ce94c3d
fix openobserve host generation in the gcp (#369)
gourish25 Feb 5, 2026
3209b8a
set ingress enable default value to true (#370)
gourish25 Feb 5, 2026
256a73d
upgrade fluent-bit version for all cloud platform (#362)
gourish25 Feb 6, 2026
0c959f9
add liveness, readiness probe in csi driver for gke
jatintalgotra-zd Feb 9, 2026
687af09
Remove provider config from eks module
keerthana-zd Feb 10, 2026
78aa7b9
revert fluent bit version (#377)
gourish25 Feb 10, 2026
a7f4318
Enable KMS encryption for S3 buckets
keerthana-zd Feb 12, 2026
0503fd0
update fluent bit version (#380)
gourish25 Feb 13, 2026
c701c58
fix(aws): security hardening across AWS modules (#381)
gizmo-rt Feb 17, 2026
922c9dd
fix(gcp): security hardening across GCP modules (#382)
gizmo-rt Feb 17, 2026
5499639
fix(azure): security hardening for Azure modules (#385)
gizmo-rt Feb 18, 2026
9e42e52
Upgrade AKS to Kubernetes 1.33.0
gizmo-rt Feb 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
492 changes: 488 additions & 4 deletions account-setup/azure/main.tf

Large diffs are not rendered by default.

59 changes: 57 additions & 2 deletions account-setup/azure/outputs.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,58 @@
output "vnet" {
value = try(azurerm_virtual_network.vnet[0].address_space,0)
}
description = "Map of VNet names to their IDs"
value = {
for k, v in azurerm_virtual_network.vnet : k => v.id
}
}

output "private_subnets" {
description = "List of private subnet names"
value = [for subnet in azurerm_subnet.private : subnet.name]
}

output "database_subnets" {
description = "List of database subnet names (includes both PostgreSQL and MySQL subnets)"
value = concat(
[for subnet in azurerm_subnet.postgresql : subnet.name],
[for subnet in azurerm_subnet.mysql : subnet.name]
)
}

output "postgresql_subnets" {
description = "List of PostgreSQL subnet names"
value = [for subnet in azurerm_subnet.postgresql : subnet.name]
}

output "mysql_subnets" {
description = "List of MySQL subnet names"
value = [for subnet in azurerm_subnet.mysql : subnet.name]
}

output "private_subnet_ids" {
description = "Map of private subnet names to their IDs"
value = {
for k, v in azurerm_subnet.private : v.name => v.id
}
}

output "database_subnet_ids" {
description = "Map of database subnet names to their IDs (includes both PostgreSQL and MySQL)"
value = merge(
{ for k, v in azurerm_subnet.postgresql : v.name => v.id },
{ for k, v in azurerm_subnet.mysql : v.name => v.id }
)
}

output "postgresql_subnet_ids" {
description = "Map of PostgreSQL subnet names to their IDs"
value = {
for k, v in azurerm_subnet.postgresql : v.name => v.id
}
}

output "mysql_subnet_ids" {
description = "Map of MySQL subnet names to their IDs"
value = {
for k, v in azurerm_subnet.mysql : v.name => v.id
}
}
18 changes: 12 additions & 6 deletions account-setup/azure/vars.tf
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,20 @@ variable "resource_group_name" {
default = ""
}

variable "vnet" {
description = "Name of the virtual network where the AKS will deploy"
# For ostronaut compatibility
variable "vpc_configs" {
description = "Legacy VPC name as string (for backward compatibility). Use vnet_config instead."
type = string
default = ""
}

variable "address_space" {
description = "The address space that is used the virtual network"
type = list(string)
default = ["10.0.0.0/16"]
variable "vnet_config" {
description = "VNet configuration - map of VNet names to their configuration. Note: database_subnets_cidr should have even number of entries (even indices for PostgreSQL, odd for MySQL)"
type = map(object({
address_space = list(string)
private_subnets_cidr = list(string)
database_subnets_cidr = optional(list(string))
redis_subnets_cidr = optional(list(string))
}))
default = {}
}
6 changes: 4 additions & 2 deletions artifact/aws/main.tf
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
resource "aws_ecr_repository" "ecr_repo" {
for_each = toset(var.services)
name = each.value
image_tag_mutability = "MUTABLE"

name = each.value

image_tag_mutability = var.immutable_image_tags ? "IMMUTABLE" : "MUTABLE"

image_scanning_configuration {
scan_on_push = true
Expand Down
6 changes: 6 additions & 0 deletions artifact/aws/vars.tf
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,10 @@ variable "services" {
description = "List of services to be deployed within the namespace"
type = list(string)
default = []
}

variable "immutable_image_tags" {
description = "Specifies the ECR image tags are immutable"
type = bool
default = true
}
4 changes: 4 additions & 0 deletions artifact/gcp/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ resource "google_artifact_registry_repository" "gcr_repo" {
description = "${each.value} docker repository"
format = "DOCKER"

docker_config {
immutable_tags = var.immutable_image_tags
}

depends_on = [google_project_service.enable_artifact_registry]
}

Expand Down
6 changes: 6 additions & 0 deletions artifact/gcp/vars.tf
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,10 @@ variable "registry_permissions" {
users = list(string)
}))
default = {}
}

variable "immutable_image_tags" {
description = "Specifies whether the GAR image tags are immutable"
type = bool
default = true
}
18 changes: 10 additions & 8 deletions k8s/aws/eks/autoscale.tf
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
data "template_file" "autoscale_template" {
template = file("./templates/cluster-auto-scaler-values.yaml")
vars = {
CLUSTER_REGION = var.app_region
CLUSTER_NAME = local.cluster_name
ACCOUNT_ID = data.aws_caller_identity.current.account_id
}
locals {
autoscale_template = templatefile(
"${path.module}/templates/cluster-auto-scaler-values.yaml",
{
CLUSTER_REGION = var.app_region
CLUSTER_NAME = local.cluster_name
ACCOUNT_ID = data.aws_caller_identity.current.account_id
}
)
}

resource "helm_release" "auto_scaler" {
Expand All @@ -14,7 +16,7 @@ resource "helm_release" "auto_scaler" {
namespace = "kube-system"
version = "9.50.0"

values = [data.template_file.autoscale_template.rendered]
values = [local.autoscale_template]

depends_on = [null_resource.wait_for_cluster]
}
71 changes: 39 additions & 32 deletions k8s/aws/eks/cert-manager.tf
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@
locals {
cert_manager_template = templatefile(
"${path.module}/templates/cert-manager-values.yaml",
{
CLUSTER_NAME = local.cluster_name
role_arn = aws_iam_role.cluster_issuer_role.arn
}
)

cluster_wildcard_issuer = templatefile(
"${path.module}/templates/cluster-issuer.yaml",
{
dns = local.domain_name
cert_issuer_url = try(
var.cert_issuer_config.env == "stage"
? "https://acme-staging-v02.api.letsencrypt.org/directory"
: "https://acme-v02.api.letsencrypt.org/directory",
"https://acme-staging-v02.api.letsencrypt.org/directory"
)
location = var.app_region
zone_id = data.aws_route53_zone.zone.0.zone_id
secret_name = "${local.cluster_name}-cluster-issuer-creds"
email = var.cert_issuer_config.email
}
)

cluster_wildcard_certificate = templatefile(
"${path.module}/templates/cluster-certificate.yaml",
{
dns = local.domain_name
}
)
}

resource "null_resource" "wait_for_cluster" {
provisioner "local-exec" {
command = "sleep 60" # Adjust the duration as needed
Expand All @@ -6,14 +40,6 @@ resource "null_resource" "wait_for_cluster" {
depends_on = [module.eks]
}

data "template_file" "cert_manager_template" {
template = file("./templates/cert-manager-values.yaml")
vars = {
CLUSTER_NAME = local.cluster_name
role_arn = aws_iam_role.cluster_issuer_role.arn
}
}

resource "helm_release" "cert-manager" {
name = "cert-manager"
repository = "https://charts.jetstack.io"
Expand All @@ -27,7 +53,7 @@ resource "helm_release" "cert-manager" {
value = "true"
}

values = [data.template_file.cert_manager_template.rendered]
values = [local.cert_manager_template]

depends_on = [null_resource.wait_for_cluster]
}
Expand Down Expand Up @@ -113,33 +139,14 @@ resource "kubernetes_secret" "cluster_issuer_credentials" {
depends_on = [helm_release.cert-manager]
}

data "template_file" "cluster_wildcard_issuer" {
template = file("./templates/cluster-issuer.yaml")
vars = {
dns = local.domain_name
cert_issuer_url = try(var.cert_issuer_config.env == "stage" ? "https://acme-staging-v02.api.letsencrypt.org/directory" : "https://acme-v02.api.letsencrypt.org/directory","https://acme-staging-v02.api.letsencrypt.org/directory")
location = var.app_region
zone_id = data.aws_route53_zone.zone.0.zone_id
secret_name = "${local.cluster_name}-cluster-issuer-creds"
email = var.cert_issuer_config.email
}
depends_on = [helm_release.cert-manager,kubernetes_namespace.monitoring]
}

resource "kubectl_manifest" "cluster_wildcard_issuer" {
yaml_body = data.template_file.cluster_wildcard_issuer.rendered
}

data "template_file" "cluster_wildcard_certificate" {
template = file("./templates/cluster-certificate.yaml")
vars = {
dns = local.domain_name
}
depends_on = [kubectl_manifest.cluster_wildcard_issuer]
yaml_body = local.cluster_wildcard_issuer
depends_on = [kubernetes_secret.cluster_issuer_credentials]
}

resource "kubectl_manifest" "cluster_wildcard_certificate" {
yaml_body = data.template_file.cluster_wildcard_certificate.rendered
yaml_body = local.cluster_wildcard_certificate
depends_on = [kubectl_manifest.cluster_wildcard_issuer]
}

resource "kubernetes_secret_v1" "certificate_replicator" {
Expand Down
48 changes: 25 additions & 23 deletions k8s/aws/eks/fluentbit.tf
Original file line number Diff line number Diff line change
Expand Up @@ -114,30 +114,32 @@ data "aws_iam_policy_document" "fluent_bit_policy" {
}
}

data template_file "fluent-bit"{
count = local.fluent_bit_enable ? 1 : 0
template = file("./templates/fluent-bit-values.yaml")
vars = {
"CLUSTER_NAME" = local.cluster_name
"AWS_REGION" = var.app_region
"TAGS" = join(",", [for key, value in local.common_tags : "${key}=${value}"])

"HTTP_SERVER" = "On"
"HTTP_PORT" = "2020"

"READ_FROM_HEAD" = "Off"
"READ_FROM_TAIL" = "On"

fluent_bit_cloud_watch_enable = local.fluent_bit_cloud_watch_enable
fluent_bit_loki_outputs = jsonencode(local.fluent_bit_loki_outputs)
fluent_bit_http_outputs = jsonencode(local.fluent_bit_http_outputs)
fluent_bit_splunk_outputs = jsonencode(local.fluent_bit_splunk_outputs)
fluent_bit_datadog_outputs = jsonencode(local.fluent_bit_datadog_outputs)
fluent_bit_newrelic_outputs = jsonencode(local.fluent_bit_newrelic_outputs)
fluent_bit_slack_outputs = jsonencode(local.fluent_bit_slack_outputs)
}
locals {
fluent_bit = local.fluent_bit_enable ? templatefile(
"${path.module}/templates/fluent-bit-values.yaml",
{
CLUSTER_NAME = local.cluster_name
AWS_REGION = var.app_region
TAGS = join(",", [for key, value in local.common_tags : "${key}=${value}"])

HTTP_SERVER = "On"
HTTP_PORT = "2020"

READ_FROM_HEAD = "Off"
READ_FROM_TAIL = "On"

fluent_bit_cloud_watch_enable = local.fluent_bit_cloud_watch_enable
fluent_bit_loki_outputs = jsonencode(local.fluent_bit_loki_outputs)
fluent_bit_http_outputs = jsonencode(local.fluent_bit_http_outputs)
fluent_bit_splunk_outputs = jsonencode(local.fluent_bit_splunk_outputs)
fluent_bit_datadog_outputs = jsonencode(local.fluent_bit_datadog_outputs)
fluent_bit_newrelic_outputs = jsonencode(local.fluent_bit_newrelic_outputs)
fluent_bit_slack_outputs = jsonencode(local.fluent_bit_slack_outputs)
}
) : null
}


resource "helm_release" "fluntbit-config" {
count = local.fluent_bit_enable ? 1 : 0
repository = "https://fluent.github.io/helm-charts"
Expand All @@ -147,7 +149,7 @@ resource "helm_release" "fluntbit-config" {
namespace = kubernetes_namespace.monitoring.metadata.0.name

values = [
data.template_file.fluent-bit[0].rendered
local.fluent_bit
]
depends_on = [
kubernetes_namespace.monitoring
Expand Down
Loading