mirror of https://github.com/buster-so/buster.git
added in some services and updates
This commit is contained in:
parent
6e3bb25061
commit
84ac7d59f1
|
@ -1,6 +1,6 @@
|
||||||
// S3 Bucket
|
// S3 Bucket
|
||||||
resource "aws_s3_bucket" "my_bucket" {
|
resource "aws_s3_bucket" "warehouse_bucket" {
|
||||||
bucket = "my-unique-bucket-name"
|
bucket = "buster-warehouse"
|
||||||
}
|
}
|
||||||
|
|
||||||
// VPC and Subnets
|
// VPC and Subnets
|
||||||
|
@ -8,7 +8,7 @@ module "vpc" {
|
||||||
source = "terraform-aws-modules/vpc/aws"
|
source = "terraform-aws-modules/vpc/aws"
|
||||||
version = "3.14.0"
|
version = "3.14.0"
|
||||||
|
|
||||||
name = "my-vpc"
|
name = "buster-warehouse-vpc"
|
||||||
cidr = var.vpc_cidr
|
cidr = var.vpc_cidr
|
||||||
|
|
||||||
azs = ["${var.region}a", "${var.region}b", "${var.region}c"]
|
azs = ["${var.region}a", "${var.region}b", "${var.region}c"]
|
||||||
|
@ -91,12 +91,13 @@ module "vpc" {
|
||||||
tags = {
|
tags = {
|
||||||
Terraform = "true"
|
Terraform = "true"
|
||||||
Environment = "dev"
|
Environment = "dev"
|
||||||
|
Project = "buster-warehouse"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Security Group for Load Balancer
|
// Security Group for Load Balancer
|
||||||
resource "aws_security_group" "lb_sg" {
|
resource "aws_security_group" "lb_sg" {
|
||||||
name_prefix = "eks-lb-sg"
|
name_prefix = "buster-warehouse-lb-sg"
|
||||||
vpc_id = module.vpc.vpc_id
|
vpc_id = module.vpc.vpc_id
|
||||||
|
|
||||||
ingress {
|
ingress {
|
||||||
|
@ -124,13 +125,14 @@ resource "aws_security_group" "lb_sg" {
|
||||||
}
|
}
|
||||||
|
|
||||||
tags = {
|
tags = {
|
||||||
Name = "eks-lb-sg"
|
Name = "buster-warehouse-lb-sg"
|
||||||
|
Project = "buster-warehouse"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Security Group for Frontend Nodes
|
// Security Group for Frontend Nodes
|
||||||
resource "aws_security_group" "fe_sg" {
|
resource "aws_security_group" "fe_sg" {
|
||||||
name_prefix = "eks-fe-sg"
|
name_prefix = "buster-warehouse-fe-sg"
|
||||||
vpc_id = module.vpc.vpc_id
|
vpc_id = module.vpc.vpc_id
|
||||||
|
|
||||||
ingress {
|
ingress {
|
||||||
|
@ -150,13 +152,14 @@ resource "aws_security_group" "fe_sg" {
|
||||||
}
|
}
|
||||||
|
|
||||||
tags = {
|
tags = {
|
||||||
Name = "eks-fe-sg"
|
Name = "buster-warehouse-fe-sg"
|
||||||
|
Project = "buster-warehouse"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Security Group for Backend Nodes
|
// Security Group for Backend Nodes
|
||||||
resource "aws_security_group" "be_sg" {
|
resource "aws_security_group" "be_sg" {
|
||||||
name_prefix = "eks-be-sg"
|
name_prefix = "buster-warehouse-be-sg"
|
||||||
vpc_id = module.vpc.vpc_id
|
vpc_id = module.vpc.vpc_id
|
||||||
|
|
||||||
// Add rules as needed for backend communication
|
// Add rules as needed for backend communication
|
||||||
|
@ -170,7 +173,8 @@ resource "aws_security_group" "be_sg" {
|
||||||
}
|
}
|
||||||
|
|
||||||
tags = {
|
tags = {
|
||||||
Name = "eks-be-sg"
|
Name = "buster-warehouse-be-sg"
|
||||||
|
Project = "buster-warehouse"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,7 +183,7 @@ module "eks" {
|
||||||
source = "terraform-aws-modules/eks/aws"
|
source = "terraform-aws-modules/eks/aws"
|
||||||
version = "18.26.3"
|
version = "18.26.3"
|
||||||
|
|
||||||
cluster_name = var.cluster_name
|
cluster_name = "buster-warehouse-${var.cluster_name}"
|
||||||
cluster_version = "1.22"
|
cluster_version = "1.22"
|
||||||
|
|
||||||
vpc_id = module.vpc.vpc_id
|
vpc_id = module.vpc.vpc_id
|
||||||
|
@ -201,10 +205,12 @@ module "eks" {
|
||||||
labels = {
|
labels = {
|
||||||
NodeGroup = key
|
NodeGroup = key
|
||||||
NodeType = value.instance_type
|
NodeType = value.instance_type
|
||||||
|
Project = "buster-warehouse"
|
||||||
}
|
}
|
||||||
|
|
||||||
tags = {
|
tags = {
|
||||||
NodeGroup = key
|
NodeGroup = key
|
||||||
|
Project = "buster-warehouse"
|
||||||
}
|
}
|
||||||
|
|
||||||
vpc_security_group_ids = [
|
vpc_security_group_ids = [
|
||||||
|
@ -218,14 +224,15 @@ module "eks" {
|
||||||
|
|
||||||
// Application Load Balancer
|
// Application Load Balancer
|
||||||
resource "aws_lb" "eks_alb" {
|
resource "aws_lb" "eks_alb" {
|
||||||
name = "eks-alb"
|
name = "buster-warehouse-alb"
|
||||||
internal = false
|
internal = false
|
||||||
load_balancer_type = "application"
|
load_balancer_type = "application"
|
||||||
security_groups = [aws_security_group.lb_sg.id]
|
security_groups = [aws_security_group.lb_sg.id]
|
||||||
subnets = module.vpc.public_subnets
|
subnets = module.vpc.public_subnets
|
||||||
|
|
||||||
tags = {
|
tags = {
|
||||||
Name = "eks-alb"
|
Name = "buster-warehouse-alb"
|
||||||
|
Project = "buster-warehouse"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,7 +248,7 @@ resource "aws_lb_listener" "front_end" {
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "aws_lb_target_group" "fe_tg" {
|
resource "aws_lb_target_group" "fe_tg" {
|
||||||
name = "fe-tg"
|
name = "buster-warehouse-fe-tg"
|
||||||
port = 9030
|
port = 9030
|
||||||
protocol = "HTTP"
|
protocol = "HTTP"
|
||||||
vpc_id = module.vpc.vpc_id
|
vpc_id = module.vpc.vpc_id
|
||||||
|
@ -263,7 +270,7 @@ resource "aws_autoscaling_attachment" "fe_asg_attachment" {
|
||||||
// Kubernetes Deployment for Docker image
|
// Kubernetes Deployment for Docker image
|
||||||
resource "kubernetes_deployment" "example" {
|
resource "kubernetes_deployment" "example" {
|
||||||
metadata {
|
metadata {
|
||||||
name = "example-deployment"
|
name = "buster-warehouse-deployment"
|
||||||
}
|
}
|
||||||
|
|
||||||
spec {
|
spec {
|
||||||
|
@ -301,13 +308,14 @@ resource "aws_vpc_endpoint" "s3" {
|
||||||
route_table_ids = module.vpc.private_route_table_ids
|
route_table_ids = module.vpc.private_route_table_ids
|
||||||
|
|
||||||
tags = {
|
tags = {
|
||||||
Name = "s3-endpoint"
|
Name = "buster-warehouse-s3-endpoint"
|
||||||
|
Project = "buster-warehouse"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update S3 bucket policy to allow access from the VPC Endpoint
|
// Update S3 bucket policy to allow access from the VPC Endpoint
|
||||||
resource "aws_s3_bucket_policy" "allow_access_from_vpc" {
|
resource "aws_s3_bucket_policy" "allow_access_from_vpc" {
|
||||||
bucket = aws_s3_bucket.my_bucket.id
|
bucket = aws_s3_bucket.warehouse_bucket.id
|
||||||
|
|
||||||
policy = jsonencode({
|
policy = jsonencode({
|
||||||
Version = "2012-10-17"
|
Version = "2012-10-17"
|
||||||
|
@ -318,8 +326,8 @@ resource "aws_s3_bucket_policy" "allow_access_from_vpc" {
|
||||||
Principal = "*"
|
Principal = "*"
|
||||||
Action = "s3:*"
|
Action = "s3:*"
|
||||||
Resource = [
|
Resource = [
|
||||||
aws_s3_bucket.my_bucket.arn,
|
aws_s3_bucket.warehouse_bucket.arn,
|
||||||
"${aws_s3_bucket.my_bucket.arn}/*",
|
"${aws_s3_bucket.warehouse_bucket.arn}/*",
|
||||||
]
|
]
|
||||||
Condition = {
|
Condition = {
|
||||||
StringEquals = {
|
StringEquals = {
|
||||||
|
@ -333,7 +341,7 @@ resource "aws_s3_bucket_policy" "allow_access_from_vpc" {
|
||||||
|
|
||||||
// Helm Release for StarRocks
|
// Helm Release for StarRocks
|
||||||
resource "helm_release" "starrocks" {
|
resource "helm_release" "starrocks" {
|
||||||
name = "starrocks"
|
name = "buster-warehouse-starrocks"
|
||||||
repository = "https://starrocks.github.io/starrocks-kubernetes-operator"
|
repository = "https://starrocks.github.io/starrocks-kubernetes-operator"
|
||||||
chart = "starrocks-operator"
|
chart = "starrocks-operator"
|
||||||
namespace = kubernetes_namespace.starrocks.metadata[0].name
|
namespace = kubernetes_namespace.starrocks.metadata[0].name
|
||||||
|
@ -348,8 +356,129 @@ resource "helm_release" "starrocks" {
|
||||||
// Create a namespace for StarRocks
|
// Create a namespace for StarRocks
|
||||||
resource "kubernetes_namespace" "starrocks" {
|
resource "kubernetes_namespace" "starrocks" {
|
||||||
metadata {
|
metadata {
|
||||||
name = "starrocks"
|
name = "buster-warehouse-starrocks"
|
||||||
}
|
}
|
||||||
|
|
||||||
depends_on = [module.eks]
|
depends_on = [module.eks]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Helm Release for PostgreSQL
|
||||||
|
resource "helm_release" "postgresql" {
|
||||||
|
name = "buster-warehouse-postgresql"
|
||||||
|
repository = "https://charts.bitnami.com/bitnami"
|
||||||
|
chart = "postgresql"
|
||||||
|
namespace = kubernetes_namespace.postgresql.metadata[0].name
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "global.postgresql.auth.postgresPassword"
|
||||||
|
value = var.postgres_password
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "primary.persistence.size"
|
||||||
|
value = "10Gi"
|
||||||
|
}
|
||||||
|
|
||||||
|
depends_on = [module.eks, kubernetes_namespace.postgresql]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a namespace for PostgreSQL
|
||||||
|
resource "kubernetes_namespace" "postgresql" {
|
||||||
|
metadata {
|
||||||
|
name = "buster-warehouse-postgresql"
|
||||||
|
}
|
||||||
|
|
||||||
|
depends_on = [module.eks]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helm Release for Iceberg REST
|
||||||
|
resource "helm_release" "iceberg_rest" {
|
||||||
|
name = "buster-warehouse-iceberg-rest"
|
||||||
|
repository = "https://charts.bitnami.com/bitnami"
|
||||||
|
chart = "common"
|
||||||
|
namespace = kubernetes_namespace.iceberg_rest.metadata[0].name
|
||||||
|
|
||||||
|
values = [
|
||||||
|
<<-EOT
|
||||||
|
replicaCount: 1
|
||||||
|
image:
|
||||||
|
repository: tabulario/iceberg-rest
|
||||||
|
tag: latest
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 8181
|
||||||
|
containerPort: 8181
|
||||||
|
env:
|
||||||
|
- name: AWS_ACCESS_KEY_ID
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: aws-credentials
|
||||||
|
key: aws-access-key-id
|
||||||
|
- name: AWS_SECRET_ACCESS_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: aws-credentials
|
||||||
|
key: aws-secret-access-key
|
||||||
|
- name: AWS_REGION
|
||||||
|
value: "${var.region}"
|
||||||
|
- name: CATALOG_WAREHOUSE
|
||||||
|
value: "${aws_s3_bucket.warehouse_bucket.id}"
|
||||||
|
- name: CATALOG_URI
|
||||||
|
value: "jdbc:postgresql://${helm_release.postgresql.name}-postgresql.${kubernetes_namespace.postgresql.metadata[0].name}.svc.cluster.local:5432/postgres"
|
||||||
|
- name: CATALOG_JDBC_USER
|
||||||
|
value: "postgres"
|
||||||
|
- name: CATALOG_JDBC_PASSWORD
|
||||||
|
value: "${var.postgres_password}"
|
||||||
|
EOT
|
||||||
|
]
|
||||||
|
|
||||||
|
depends_on = [module.eks, kubernetes_namespace.iceberg_rest, helm_release.postgresql]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a namespace for Iceberg REST
|
||||||
|
resource "kubernetes_namespace" "iceberg_rest" {
|
||||||
|
metadata {
|
||||||
|
name = "buster-warehouse-iceberg-rest"
|
||||||
|
}
|
||||||
|
|
||||||
|
depends_on = [module.eks]
|
||||||
|
}
|
||||||
|
|
||||||
|
// ... existing code ...
|
||||||
|
|
||||||
|
// Helm Release for Nginx Ingress Controller
|
||||||
|
resource "helm_release" "nginx_ingress" {
|
||||||
|
name = "buster-warehouse-nginx-ingress"
|
||||||
|
repository = "https://kubernetes.github.io/ingress-nginx"
|
||||||
|
chart = "ingress-nginx"
|
||||||
|
namespace = kubernetes_namespace.nginx_ingress.metadata[0].name
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "controller.service.type"
|
||||||
|
value = "LoadBalancer"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "controller.service.annotations.service\\.beta\\.kubernetes\\.io/aws-load-balancer-type"
|
||||||
|
value = "nlb"
|
||||||
|
}
|
||||||
|
|
||||||
|
set {
|
||||||
|
name = "controller.service.annotations.service\\.beta\\.kubernetes\\.io/aws-load-balancer-cross-zone-load-balancing-enabled"
|
||||||
|
value = "true"
|
||||||
|
}
|
||||||
|
|
||||||
|
depends_on = [module.eks, kubernetes_namespace.nginx_ingress]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a namespace for Nginx Ingress
|
||||||
|
resource "kubernetes_namespace" "nginx_ingress" {
|
||||||
|
metadata {
|
||||||
|
name = "buster-warehouse-nginx-ingress"
|
||||||
|
}
|
||||||
|
|
||||||
|
depends_on = [module.eks]
|
||||||
|
}
|
||||||
|
|
||||||
|
// ... rest of the existing code ...
|
|
@ -3,7 +3,7 @@ variable "region" {
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "cluster_name" {
|
variable "cluster_name" {
|
||||||
default = "my-eks-cluster"
|
default = "buster-warehouse"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "vpc_cidr" {
|
variable "vpc_cidr" {
|
||||||
|
@ -27,27 +27,47 @@ variable "node_groups" {
|
||||||
}))
|
}))
|
||||||
default = {
|
default = {
|
||||||
fe_group = {
|
fe_group = {
|
||||||
instance_type = "r6g.2xlarge"
|
instance_type = "t3.small"
|
||||||
min_size = 1
|
min_size = 1
|
||||||
max_size = 3
|
max_size = 1
|
||||||
desired_size = 2
|
desired_size = 1
|
||||||
disk_size = 200
|
disk_size = 200
|
||||||
},
|
},
|
||||||
be_group = {
|
be_group = {
|
||||||
instance_type = "r6g.4xlarge"
|
instance_type = "t3.small"
|
||||||
min_size = 1
|
min_size = 1
|
||||||
max_size = 3
|
max_size = 1
|
||||||
desired_size = 2
|
desired_size = 1
|
||||||
disk_size = 1000
|
disk_size = 1000
|
||||||
},
|
},
|
||||||
lb_group = {
|
lb_group = {
|
||||||
instance_type = "t3.small"
|
instance_type = "t3.small"
|
||||||
min_size = 1
|
min_size = 1
|
||||||
max_size = 2
|
max_size = 1
|
||||||
|
desired_size = 1
|
||||||
|
disk_size = 20
|
||||||
|
}
|
||||||
|
postgresql_group = {
|
||||||
|
instance_type = "t3.small"
|
||||||
|
min_size = 1
|
||||||
|
max_size = 1
|
||||||
|
desired_size = 1
|
||||||
|
disk_size = 20
|
||||||
|
}
|
||||||
|
iceberg_rest_group = {
|
||||||
|
instance_type = "t3.small"
|
||||||
|
min_size = 1
|
||||||
|
max_size = 1
|
||||||
desired_size = 1
|
desired_size = 1
|
||||||
disk_size = 20
|
disk_size = 20
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "postgres_password" {
|
||||||
|
description = "password"
|
||||||
|
type = string
|
||||||
|
sensitive = true
|
||||||
|
}
|
||||||
|
|
||||||
// Add more variables as needed
|
// Add more variables as needed
|
Loading…
Reference in New Issue