Skip to content
This repository was archived by the owner on Jan 13, 2025. It is now read-only.

Commit 378b351

Browse files
authored
Create app.tf
1 parent 1f372a9 commit 378b351

1 file changed

Lines changed: 141 additions & 0 deletions

File tree

terraform/app.tf

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
# app.tf
2+
3+
provider "kubernetes" {
4+
host = "https://${google_container_cluster.default.endpoint}"
5+
token = data.google_client_config.default.access_token
6+
cluster_ca_certificate = base64decode(google_container_cluster.default.master_auth[0].cluster_ca_certificate)
7+
8+
ignore_annotations = [
9+
"^autopilot\\.gke\\.io\\/.*",
10+
"^cloud\\.google\\.com\\/.*"
11+
]
12+
}
13+
14+
data "google_client_config" "default" {}
15+
16+
resource "kubernetes_deployment_v1" "default" {
17+
metadata {
18+
name = "webwallet-vite-app-deployment"
19+
}
20+
21+
spec {
22+
replicas = 2
23+
24+
selector {
25+
match_labels = {
26+
app = "vite-app"
27+
}
28+
}
29+
30+
template {
31+
metadata {
32+
labels = {
33+
app = "vite-app"
34+
}
35+
}
36+
37+
spec {
38+
container {
39+
image = "bernalraul/webwallet:latest"
40+
name = "vite-app-container"
41+
42+
port {
43+
container_port = 3000
44+
name = "vite-app-svc"
45+
}
46+
47+
security_context {
48+
allow_privilege_escalation = false
49+
privileged = false
50+
read_only_root_filesystem = false
51+
52+
capabilities {
53+
add = []
54+
drop = ["NET_RAW"]
55+
}
56+
}
57+
58+
liveness_probe {
59+
http_get {
60+
path = "/login"
61+
port = "3000"
62+
}
63+
64+
initial_delay_seconds = 60
65+
period_seconds = 5
66+
}
67+
}
68+
69+
security_context {
70+
run_as_non_root = true
71+
72+
seccomp_profile {
73+
type = "RuntimeDefault"
74+
}
75+
}
76+
77+
toleration {
78+
effect = "NoSchedule"
79+
key = "kubernetes.io/arch"
80+
operator = "Equal"
81+
value = "amd64"
82+
}
83+
}
84+
}
85+
}
86+
}
87+
88+
resource "kubernetes_service_v1" "default" {
89+
metadata {
90+
name = "webwallet-vite-app-loadbalancer"
91+
annotations = {
92+
"networking.gke.io/load-balancer-type" = "External"
93+
}
94+
}
95+
96+
spec {
97+
selector = {
98+
app = kubernetes_deployment_v1.default.spec[0].selector[0].match_labels.app
99+
}
100+
101+
# ip_family_policy = "RequireDualStack"
102+
103+
port {
104+
port = 443
105+
target_port = kubernetes_deployment_v1.default.spec[0].template[0].spec[0].container[0].port[0].name
106+
}
107+
108+
type = "LoadBalancer"
109+
}
110+
111+
depends_on = [time_sleep.wait_service_cleanup]
112+
}
113+
114+
resource "kubernetes_ingress_v1" "default" {
115+
metadata {
116+
name = "webwallet-ingress"
117+
annotations = {
118+
"kubernetes.io/ingress.class" : "gce",
119+
"networking.gke.io/managed-certificates" : "gke-wallet-cert"
120+
}
121+
}
122+
123+
spec {
124+
rule {
125+
host = "gke-wallet.bitcanna.io"
126+
http {
127+
path {
128+
path = "/"
129+
backend {
130+
service {
131+
name = kubernetes_service_v1.default.metadata[0].name
132+
port {
133+
number = 443
134+
}
135+
}
136+
}
137+
}
138+
}
139+
}
140+
}
141+
}

0 commit comments

Comments
 (0)