From 1b6ead8f05ff8fa8496e58b2e645cef597db8a3a Mon Sep 17 00:00:00 2001 From: Yasindu20 Date: Thu, 9 Oct 2025 21:43:28 +0530 Subject: [PATCH 1/2] Started Kubernetes --- .gitignore | 1 + k8s/mongodb.yaml | 0 k8s/namespace.yaml | 27 +++ terraform/main.tf | 9 +- terraform/plan.tfplan | Bin 12890 -> 16488 bytes terraform/terraform.tfstate | 355 +++++++++++++++++++++++++---- terraform/terraform.tfstate.backup | 296 +++++++++++++++++++++++- 7 files changed, 627 insertions(+), 61 deletions(-) create mode 100644 k8s/mongodb.yaml create mode 100644 k8s/namespace.yaml diff --git a/.gitignore b/.gitignore index 151bfa6..ad7360d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ terraform.tfvars +terraform.tfstate.backup # Local .terraform directories .terraform/ diff --git a/k8s/mongodb.yaml b/k8s/mongodb.yaml new file mode 100644 index 0000000..e69de29 diff --git a/k8s/namespace.yaml b/k8s/namespace.yaml new file mode 100644 index 0000000..70984b2 --- /dev/null +++ b/k8s/namespace.yaml @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: namespace +metadata: + name: issue-tracker + labels: + name: issue-tracker +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: app-Config + namespace: issue-tracker +data: + NODE_ENV: "production" + REACT_APP_API_URL: "http://localhost:8080/api" +--- + +apiVersion: v1 +kind: secret +metadata: + name: app-secret + namespace: issue-tracker +type: Opaque +stringData: + mongodb-uri: "mongodb+srv://yasindudemel:Yasindu20@cluster0.srjxrwz.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0" + jwt-secret: "your-super-secret-jwt-key-here-make-it-long-and-complex" diff --git a/terraform/main.tf b/terraform/main.tf index b3c5464..76094bb 100644 --- a/terraform/main.tf +++ b/terraform/main.tf @@ -122,7 +122,7 @@ resource "aws_security_group" "backend" { # AWS EC2 Instance for Backend resource "aws_instance" "backend" { ami = "ami-0c02fb55956c7d316" - instance_type = "t2.micro" + instance_type = "t3.micro" subnet_id = aws_subnet.main.id vpc_security_group_ids = [aws_security_group.backend.id] key_name = var.aws_key_name @@ -161,13 +161,6 @@ resource "mongodbatlas_cluster" "free_cluster" { backing_provider_name = "AWS" provider_region_name = "US_EAST_1" provider_instance_size_name = "M0" - - # free tier settings - disk_size_gb = 5 - - lifecycle { - ignore_changes = [disk_size_gb] - } } # vercel frontend Deployment diff --git a/terraform/plan.tfplan b/terraform/plan.tfplan index cafc0f325cb39008f0ff6a50512865dc92718a73..34422e4d81b42dd89400bd812f7b88ed051ddcef 100644 GIT binary patch delta 12494 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 diff --git a/terraform/terraform.tfstate b/terraform/terraform.tfstate index 05833ef..83978e1 100644 --- a/terraform/terraform.tfstate +++ b/terraform/terraform.tfstate @@ -1,15 +1,171 @@ { "version": 4, "terraform_version": "1.5.7", - "serial": 13, + "serial": 21, "lineage": "c5f764b6-5db0-0d43-a8bc-df41d8037f1a", "outputs": { + "backend_url": { + "value": "https://54.161.119.55:3000", + "type": "string" + }, + "ec2_public_ip": { + "value": "54.161.119.55", + "type": "string" + }, "frontend_url": { "value": "issue-tracker-frontend-pzuq75a4j-yasindu20s-projects.vercel.app", "type": "string" + }, + "mongodb_connection_string": { + "value": "mongodb+srv://issue-tracker-free.ffoquxf.mongodb.net", + "type": "string", + "sensitive": true } }, "resources": [ + { + "mode": "managed", + "type": "aws_instance", + "name": "backend", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "ami": "ami-0c02fb55956c7d316", + "arn": "arn:aws:ec2:us-east-1:053678525731:instance/i-0fcfbf9f6bbe41214", + "associate_public_ip_address": true, + "availability_zone": "us-east-1b", + "capacity_reservation_specification": [ + { + "capacity_reservation_preference": "open", + "capacity_reservation_target": [] + } + ], + "cpu_core_count": 1, + "cpu_options": [ + { + "amd_sev_snp": "", + "core_count": 1, + "threads_per_core": 2 + } + ], + "cpu_threads_per_core": 2, + "credit_specification": [ + { + "cpu_credits": "unlimited" + } + ], + "disable_api_stop": false, + "disable_api_termination": false, + "ebs_block_device": [], + "ebs_optimized": false, + "enable_primary_ipv6": null, + "enclave_options": [ + { + "enabled": false + } + ], + "ephemeral_block_device": [], + "get_password_data": false, + "hibernation": false, + "host_id": "", + "host_resource_group_arn": null, + "iam_instance_profile": "", + "id": "i-0fcfbf9f6bbe41214", + "instance_initiated_shutdown_behavior": "stop", + "instance_lifecycle": "", + "instance_market_options": [], + "instance_state": "running", + "instance_type": "t3.micro", + "ipv6_address_count": 0, + "ipv6_addresses": [], + "key_name": "", + "launch_template": [], + "maintenance_options": [ + { + "auto_recovery": "default" + } + ], + "metadata_options": [ + { + "http_endpoint": "enabled", + "http_protocol_ipv6": "disabled", + "http_put_response_hop_limit": 1, + "http_tokens": "optional", + "instance_metadata_tags": "disabled" + } + ], + "monitoring": false, + "network_interface": [], + "outpost_arn": "", + "password_data": "", + "placement_group": "", + "placement_partition_number": 0, + "primary_network_interface_id": "eni-0b7b142ade0b95ae9", + "private_dns": "ip-10-0-0-71.ec2.internal", + "private_dns_name_options": [ + { + "enable_resource_name_dns_a_record": false, + "enable_resource_name_dns_aaaa_record": false, + "hostname_type": "ip-name" + } + ], + "private_ip": "10.0.0.71", + "public_dns": "", + "public_ip": "54.161.119.55", + "root_block_device": [ + { + "delete_on_termination": true, + "device_name": "/dev/xvda", + "encrypted": false, + "iops": 100, + "kms_key_id": "", + "tags": {}, + "tags_all": {}, + "throughput": 0, + "volume_id": "vol-0044720a11fb25f1f", + "volume_size": 8, + "volume_type": "gp2" + } + ], + "secondary_private_ips": [], + "security_groups": [], + "source_dest_check": true, + "spot_instance_request_id": "", + "subnet_id": "subnet-06d3f0ec07af8a78a", + "tags": { + "name": "issue-tracker-backend-instance" + }, + "tags_all": { + "name": "issue-tracker-backend-instance" + }, + "tenancy": "default", + "timeouts": null, + "user_data": "fa3cb3badefd29edc0675dc1d9e0ca405c86f40f", + "user_data_base64": null, + "user_data_replace_on_change": false, + "volume_tags": null, + "vpc_security_group_ids": [ + "sg-009ea9136236b075f" + ] + }, + "sensitive_attributes": [ + [ + { + "type": "get_attr", + "value": "user_data" + } + ] + ], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMCwicmVhZCI6OTAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "aws_security_group.backend", + "aws_subnet.main" + ] + } + ] + }, { "mode": "managed", "type": "aws_internet_gateway", @@ -281,56 +437,132 @@ "type": "mongodbatlas_cluster", "name": "free_cluster", "provider": "provider[\"registry.terraform.io/mongodb/mongodbatlas\"]", - "instances": [] - }, - { - "mode": "managed", - "type": "railway_environment", - "name": "production", - "provider": "provider[\"registry.terraform.io/terraform-community-providers/railway\"]", - "instances": [] - }, - { - "mode": "managed", - "type": "railway_service", - "name": "backend", - "provider": "provider[\"registry.terraform.io/terraform-community-providers/railway\"]", - "instances": [] - }, - { - "mode": "managed", - "type": "railway_service_domain", - "name": "backend", - "provider": "provider[\"registry.terraform.io/terraform-community-providers/railway\"]", - "instances": [] - }, - { - "mode": "managed", - "type": "railway_variable", - "name": "jwt_secret", - "provider": "provider[\"registry.terraform.io/terraform-community-providers/railway\"]", - "instances": [] - }, - { - "mode": "managed", - "type": "railway_variable", - "name": "mongodb_url", - "provider": "provider[\"registry.terraform.io/terraform-community-providers/railway\"]", - "instances": [] - }, - { - "mode": "managed", - "type": "railway_variable", - "name": "node_env", - "provider": "provider[\"registry.terraform.io/terraform-community-providers/railway\"]", - "instances": [] + "instances": [ + { + "schema_version": 1, + "attributes": { + "advanced_configuration": [ + { + "default_read_concern": "", + "default_write_concern": "", + "fail_index_key_too_long": false, + "javascript_enabled": true, + "minimum_enabled_tls_protocol": "TLS1_2", + "no_table_scan": false, + "oplog_size_mb": 0, + "sample_refresh_interval_bi_connector": 0, + "sample_size_bi_connector": 0 + } + ], + "auto_scaling_compute_enabled": false, + "auto_scaling_compute_scale_down_enabled": false, + "auto_scaling_disk_gb_enabled": false, + "backing_provider_name": "AWS", + "backup_enabled": false, + "bi_connector": null, + "bi_connector_config": [ + { + "enabled": false, + "read_preference": "secondary" + } + ], + "cloud_backup": false, + "cluster_id": "68e2abdae2377a0297ff02ce", + "cluster_type": "REPLICASET", + "connection_strings": [ + { + "aws_private_link": {}, + "aws_private_link_srv": {}, + "private": "", + "private_endpoint": [], + "private_srv": "", + "standard": "mongodb://ac-a7lyfgg-shard-00-00.ffoquxf.mongodb.net:27017,ac-a7lyfgg-shard-00-01.ffoquxf.mongodb.net:27017,ac-a7lyfgg-shard-00-02.ffoquxf.mongodb.net:27017/?ssl=true\u0026authSource=admin\u0026replicaSet=atlas-qh4n6x-shard-0", + "standard_srv": "mongodb+srv://issue-tracker-free.ffoquxf.mongodb.net" + } + ], + "container_id": null, + "disk_size_gb": 0.5, + "encryption_at_rest_provider": "NONE", + "id": "Y2x1c3Rlcl9pZA==:NjhlMmFiZGFlMjM3N2EwMjk3ZmYwMmNl-Y2x1c3Rlcl9uYW1l:aXNzdWUtdHJhY2tlci1mcmVl-cHJvamVjdF9pZA==:NjhlMmE3MjdkYjk1YzA0Y2YzNDBhYTY3-cHJvdmlkZXJfbmFtZQ==:VEVOQU5U", + "labels": [], + "mongo_db_major_version": "8.0", + "mongo_db_version": "8.0.14", + "mongo_uri": "mongodb://ac-a7lyfgg-shard-00-00.ffoquxf.mongodb.net:27017,ac-a7lyfgg-shard-00-01.ffoquxf.mongodb.net:27017,ac-a7lyfgg-shard-00-02.ffoquxf.mongodb.net:27017", + "mongo_uri_updated": "2025-10-05T17:33:32Z", + "mongo_uri_with_options": "mongodb://ac-a7lyfgg-shard-00-00.ffoquxf.mongodb.net:27017,ac-a7lyfgg-shard-00-01.ffoquxf.mongodb.net:27017,ac-a7lyfgg-shard-00-02.ffoquxf.mongodb.net:27017/?ssl=true\u0026authSource=admin\u0026replicaSet=atlas-qh4n6x-shard-0", + "name": "issue-tracker-free", + "num_shards": 1, + "paused": false, + "pit_enabled": false, + "project_id": "68e2a727db95c04cf340aa67", + "provider_auto_scaling_compute_max_instance_size": "", + "provider_auto_scaling_compute_min_instance_size": "", + "provider_backup_enabled": false, + "provider_disk_iops": null, + "provider_disk_type_name": "", + "provider_encrypt_ebs_volume": null, + "provider_encrypt_ebs_volume_flag": null, + "provider_instance_size_name": "M0", + "provider_name": "TENANT", + "provider_region_name": "US_EAST_1", + "provider_volume_type": "", + "replication_factor": 3, + "replication_specs": [ + { + "id": "68e2abd9e2377a0297ff0280", + "num_shards": 1, + "regions_config": [ + { + "analytics_nodes": 0, + "electable_nodes": 3, + "priority": 7, + "read_only_nodes": 0, + "region_name": "US_EAST_1" + } + ], + "zone_name": "Zone 1" + } + ], + "snapshot_backup_policy": [], + "srv_address": "mongodb+srv://issue-tracker-free.ffoquxf.mongodb.net", + "state_name": "IDLE" + }, + "sensitive_attributes": [], + "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==", + "dependencies": [ + "mongodbatlas_project.issue_tracker" + ] + } + ] }, { "mode": "managed", - "type": "railway_variable", - "name": "port", - "provider": "provider[\"registry.terraform.io/terraform-community-providers/railway\"]", - "instances": [] + "type": "mongodbatlas_project", + "name": "issue_tracker", + "provider": "provider[\"registry.terraform.io/mongodb/mongodbatlas\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "cluster_count": 0, + "created": "2025-10-05T17:13:14Z", + "id": "68e2a727db95c04cf340aa67", + "name": "issue-tracker", + "org_id": "6884a3c39797b6261b1014e3", + "project_owner_id": null, + "teams": [] + }, + "sensitive_attributes": [ + [ + { + "type": "get_attr", + "value": "org_id" + } + ] + ], + "private": "bnVsbA==" + } + ] }, { "mode": "managed", @@ -433,7 +665,32 @@ "type": "vercel_project_environment_variable", "name": "api_url", "provider": "provider[\"registry.terraform.io/vercel/vercel\"]", - "instances": [] + "instances": [ + { + "schema_version": 0, + "attributes": { + "comment": "", + "custom_environment_ids": [], + "git_branch": null, + "id": "dJFoP9CiFfCRENbi", + "key": "REACT_APP_API_URL", + "project_id": "prj_gHiloCgAI4CfCjbKkhCSghOcxwGi", + "sensitive": false, + "target": [ + "production" + ], + "team_id": null, + "value": "https://54.161.119.55:3000/api" + }, + "sensitive_attributes": [], + "dependencies": [ + "aws_instance.backend", + "aws_security_group.backend", + "aws_subnet.main", + "vercel_project.frontend" + ] + } + ] } ], "check_results": null diff --git a/terraform/terraform.tfstate.backup b/terraform/terraform.tfstate.backup index f632926..8132593 100644 --- a/terraform/terraform.tfstate.backup +++ b/terraform/terraform.tfstate.backup @@ -1,7 +1,7 @@ { "version": 4, "terraform_version": "1.5.7", - "serial": 5, + "serial": 17, "lineage": "c5f764b6-5db0-0d43-a8bc-df41d8037f1a", "outputs": { "frontend_url": { @@ -12,10 +12,298 @@ "resources": [ { "mode": "managed", - "type": "mongodbatlas_cluster", - "name": "free_cluster", + "type": "aws_internet_gateway", + "name": "main", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ec2:us-east-1:053678525731:internet-gateway/igw-04af5cdc1bf3f644c", + "id": "igw-04af5cdc1bf3f644c", + "owner_id": "053678525731", + "tags": { + "Name": "issue_tracker_igw" + }, + "tags_all": { + "Name": "issue_tracker_igw" + }, + "timeouts": null, + "vpc_id": "vpc-03ed89f209948e16a" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjoxMjAwMDAwMDAwMDAwLCJkZWxldGUiOjEyMDAwMDAwMDAwMDAsInVwZGF0ZSI6MTIwMDAwMDAwMDAwMH19", + "dependencies": [ + "aws_vpc.main" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_route_table", + "name": "main", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ec2:us-east-1:053678525731:route-table/rtb-044104997d1675b50", + "id": "rtb-044104997d1675b50", + "owner_id": "053678525731", + "propagating_vgws": [], + "route": [ + { + "carrier_gateway_id": "", + "cidr_block": "0.0.0.0/0", + "core_network_arn": "", + "destination_prefix_list_id": "", + "egress_only_gateway_id": "", + "gateway_id": "igw-04af5cdc1bf3f644c", + "ipv6_cidr_block": "", + "local_gateway_id": "", + "nat_gateway_id": "", + "network_interface_id": "", + "transit_gateway_id": "", + "vpc_endpoint_id": "", + "vpc_peering_connection_id": "" + } + ], + "tags": { + "Name": "issue_tracker_rt" + }, + "tags_all": { + "Name": "issue_tracker_rt" + }, + "timeouts": null, + "vpc_id": "vpc-03ed89f209948e16a" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjEyMDAwMDAwMDAwMH19", + "dependencies": [ + "aws_internet_gateway.main", + "aws_vpc.main" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_route_table_association", + "name": "main", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "gateway_id": "", + "id": "rtbassoc-028d45deaaec7c2d2", + "route_table_id": "rtb-044104997d1675b50", + "subnet_id": "subnet-06d3f0ec07af8a78a", + "timeouts": null + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAsImRlbGV0ZSI6MzAwMDAwMDAwMDAwLCJ1cGRhdGUiOjEyMDAwMDAwMDAwMH19", + "dependencies": [ + "aws_internet_gateway.main", + "aws_route_table.main", + "aws_subnet.main", + "aws_vpc.main" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_security_group", + "name": "backend", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:us-east-1:053678525731:security-group/sg-009ea9136236b075f", + "description": "Allow inbound traffic for backend", + "egress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "id": "sg-009ea9136236b075f", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 3000, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 3000 + }, + { + "cidr_blocks": [ + "112.134.144.32/32" + ], + "description": "", + "from_port": 22, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 22 + } + ], + "name": "issue-tracker-backend-sg", + "name_prefix": "", + "owner_id": "053678525731", + "revoke_rules_on_delete": false, + "tags": { + "name": "issue-tracker-backend-sg" + }, + "tags_all": { + "name": "issue-tracker-backend-sg" + }, + "timeouts": null, + "vpc_id": "vpc-03ed89f209948e16a" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6OTAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", + "dependencies": [ + "aws_vpc.main" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_subnet", + "name": "main", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:us-east-1:053678525731:subnet/subnet-06d3f0ec07af8a78a", + "assign_ipv6_address_on_creation": false, + "availability_zone": "us-east-1b", + "availability_zone_id": "use1-az6", + "cidr_block": "10.0.0.0/24", + "customer_owned_ipv4_pool": "", + "enable_dns64": false, + "enable_lni_at_device_index": 0, + "enable_resource_name_dns_a_record_on_launch": false, + "enable_resource_name_dns_aaaa_record_on_launch": false, + "id": "subnet-06d3f0ec07af8a78a", + "ipv6_cidr_block": "", + "ipv6_cidr_block_association_id": "", + "ipv6_native": false, + "map_customer_owned_ip_on_launch": false, + "map_public_ip_on_launch": false, + "outpost_arn": "", + "owner_id": "053678525731", + "private_dns_hostname_type_on_launch": "ip-name", + "tags": { + "name": "issue_tracker_subnet" + }, + "tags_all": { + "name": "issue_tracker_subnet" + }, + "timeouts": null, + "vpc_id": "vpc-03ed89f209948e16a" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "aws_vpc.main" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_vpc", + "name": "main", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:us-east-1:053678525731:vpc/vpc-03ed89f209948e16a", + "assign_generated_ipv6_cidr_block": false, + "cidr_block": "10.0.0.0/16", + "default_network_acl_id": "acl-0b585a8cebf6adfa1", + "default_route_table_id": "rtb-0067f4a252d9e2160", + "default_security_group_id": "sg-02208a50ad984a34c", + "dhcp_options_id": "dopt-0c79c3be47546fe0b", + "enable_dns_hostnames": false, + "enable_dns_support": true, + "enable_network_address_usage_metrics": false, + "id": "vpc-03ed89f209948e16a", + "instance_tenancy": "default", + "ipv4_ipam_pool_id": null, + "ipv4_netmask_length": null, + "ipv6_association_id": "", + "ipv6_cidr_block": "", + "ipv6_cidr_block_network_border_group": "", + "ipv6_ipam_pool_id": "", + "ipv6_netmask_length": 0, + "main_route_table_id": "rtb-0067f4a252d9e2160", + "owner_id": "053678525731", + "tags": { + "name": "issue_tracker_vpc" + }, + "tags_all": { + "name": "issue_tracker_vpc" + } + }, + "sensitive_attributes": [], + "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==" + } + ] + }, + { + "mode": "managed", + "type": "mongodbatlas_project", + "name": "issue_tracker", "provider": "provider[\"registry.terraform.io/mongodb/mongodbatlas\"]", - "instances": [] + "instances": [ + { + "schema_version": 0, + "attributes": { + "cluster_count": 0, + "created": "2025-10-05T17:13:14Z", + "id": "68e2a727db95c04cf340aa67", + "name": "issue-tracker", + "org_id": "6884a3c39797b6261b1014e3", + "project_owner_id": null, + "teams": [] + }, + "sensitive_attributes": [ + [ + { + "type": "get_attr", + "value": "org_id" + } + ] + ], + "private": "bnVsbA==" + } + ] }, { "mode": "managed", From f572653b9be1019abd7361dfef62cf6a6db29d97 Mon Sep 17 00:00:00 2001 From: Yasindu20 Date: Thu, 9 Oct 2025 22:39:11 +0530 Subject: [PATCH 2/2] StatefulSet --- k8s/mongodb.yaml | 74 ++++++++++++++++++++++++++++++++++++++++++++++ k8s/namespace.yaml | 6 ++-- 2 files changed, 77 insertions(+), 3 deletions(-) diff --git a/k8s/mongodb.yaml b/k8s/mongodb.yaml index e69de29..5be604c 100644 --- a/k8s/mongodb.yaml +++ b/k8s/mongodb.yaml @@ -0,0 +1,74 @@ +apiVersion : app/v1 +kind: StatefulSet +metadata: + name: mongodb + namespace: issue-tracker +specs: + serviceName: "mongodb" + replicas: 1 + selector: + matchLabels: + app: mongodb + template: + metadata: + Labels: + app: mongodb + specs: + containers: + - name: mongodb + image: mongo:6-jammy + ports: + - container-ports: 27017 + env: + - name: MONGO_INITDB_ROOT_USERNAME + value: Yasindu + - name: MONGO_INITDB_ROOT_PASSWORD + value: yasindu20 + volumeMounts: + - name: mongodb-storage + mountPath: /data/db + resources: + requests: + memory: "256Mi" + cpu: "250m" + limits: + memory: "512Mi" + cpu: "500m" + livenessProbe: + exec: + command: + - mongosh + - --eval + - db.adminCommand('ping') + intialDelaySeconds: 30 + periodSeconds: 10 + readinessProbe: + exec: + command: + - mongosh + - --eval + - db.adminCommand('ping') + intialDelaySeconds: 5 + periodSeconds: 5 + volumeClaimTemplates: + - metadata: + name: mongodb-storage + spec: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 1Gi + +--- +apiVersion: v1 +kind: service +metadata: + name: mongodb + namespace: issue-tracker +spec: + selector: + app: mongodb + ports: + - port: 27017 + targetport: 27017 + clusterIP: None \ No newline at end of file diff --git a/k8s/namespace.yaml b/k8s/namespace.yaml index 70984b2..530da91 100644 --- a/k8s/namespace.yaml +++ b/k8s/namespace.yaml @@ -4,8 +4,8 @@ metadata: name: issue-tracker labels: name: issue-tracker + --- - apiVersion: v1 kind: ConfigMap metadata: @@ -14,8 +14,8 @@ metadata: data: NODE_ENV: "production" REACT_APP_API_URL: "http://localhost:8080/api" ---- +--- apiVersion: v1 kind: secret metadata: @@ -23,5 +23,5 @@ metadata: namespace: issue-tracker type: Opaque stringData: - mongodb-uri: "mongodb+srv://yasindudemel:Yasindu20@cluster0.srjxrwz.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0" + mongodb-uri: "mongodb+srv://Yasindu:yasindu20@issue-tracker-free.ffoquxf.mongodb.net/?retryWrites=true&w=majority&appName=issue-tracker-free" jwt-secret: "your-super-secret-jwt-key-here-make-it-long-and-complex"