Skip to content

Commit 99e531c

Browse files
committed
feat: restructure deploy cluster ok
1 parent 647d051 commit 99e531c

File tree

20 files changed

+835
-68
lines changed

20 files changed

+835
-68
lines changed

examples/multi-instance/main.tf

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
terraform {
2+
required_version = ">= 1.6.0"
3+
4+
required_providers {
5+
kubernetes = {
6+
source = "hashicorp/kubernetes"
7+
version = "~> 2.35"
8+
}
9+
helm = {
10+
source = "hashicorp/helm"
11+
version = "~> 2.17"
12+
}
13+
}
14+
}
15+
16+
provider "kubernetes" {
17+
config_path = "~/.kube/config"
18+
config_context = "kind-seaweedfs"
19+
}
20+
21+
provider "helm" {
22+
kubernetes {
23+
config_path = "~/.kube/config"
24+
config_context = "kind-seaweedfs"
25+
}
26+
}
27+
28+
resource "helm_release" "bunkerweb" {
29+
name = "bunkerweb"
30+
repository = "https://repo.bunkerweb.io/charts"
31+
chart = "bunkerweb"
32+
version = "1.0.13"
33+
namespace = "bunkerweb"
34+
create_namespace = true
35+
wait = true
36+
timeout = 600
37+
38+
values = [yamlencode({
39+
service = {
40+
enabled = false
41+
}
42+
43+
bunkerweb = {
44+
kind = "Deployment"
45+
replicas = 1
46+
pdb = {
47+
create = false
48+
}
49+
}
50+
51+
settings = {
52+
kubernetes = {
53+
ingressClass = "bunkerweb"
54+
}
55+
misc = {
56+
dnsResolvers = "kube-dns.kube-system.svc.cluster.local"
57+
apiWhitelistIp = "127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 100.64.0.0/10"
58+
}
59+
ui = {
60+
wizard = false
61+
}
62+
}
63+
64+
ingressClass = {
65+
enabled = true
66+
name = "bunkerweb"
67+
controller = "bunkerweb.io/ingress-controller"
68+
}
69+
70+
controller = {
71+
enabled = true
72+
}
73+
74+
ui = { enabled = false }
75+
api = { enabled = false }
76+
mariadb = {
77+
enabled = true
78+
persistence = { storageClass = "standard" }
79+
}
80+
redis = {
81+
enabled = true
82+
persistence = { storageClass = "standard" }
83+
}
84+
prometheus = { enabled = false }
85+
grafana = { enabled = false }
86+
})]
87+
}
88+
89+
resource "kubernetes_service_v1" "bunkerweb_external" {
90+
metadata {
91+
name = "bunkerweb"
92+
namespace = "bunkerweb"
93+
labels = {
94+
"app.kubernetes.io/name" = "bunkerweb"
95+
"app.kubernetes.io/instance" = "bunkerweb"
96+
}
97+
}
98+
99+
spec {
100+
type = "ClusterIP"
101+
selector = {
102+
"bunkerweb.io/component" = "bunkerweb"
103+
}
104+
port {
105+
name = "http"
106+
port = 80
107+
target_port = 8080
108+
protocol = "TCP"
109+
}
110+
port {
111+
name = "https"
112+
port = 443
113+
target_port = 8443
114+
protocol = "TCP"
115+
}
116+
}
117+
118+
depends_on = [helm_release.bunkerweb]
119+
}
120+
121+
module "team_alpha" {
122+
source = "../../modules/seaweedfs-instance"
123+
124+
namespace = "team-alpha"
125+
storage_class_name = "standard"
126+
seaweedfs_domain = "s3-alpha.example.com"
127+
keycloak_domain = "auth-alpha.example.com"
128+
email_lets_encrypt = "admin@example.com"
129+
ingress_class_name = "bunkerweb"
130+
bunkerweb_cluster_ip = kubernetes_service_v1.bunkerweb_external.spec[0].cluster_ip
131+
}
132+
133+
module "team_beta" {
134+
source = "../../modules/seaweedfs-instance"
135+
136+
namespace = "team-beta"
137+
storage_class_name = "standard"
138+
seaweedfs_domain = "s3-beta.example.com"
139+
keycloak_domain = "auth-beta.example.com"
140+
email_lets_encrypt = "admin@example.com"
141+
ingress_class_name = "bunkerweb"
142+
bunkerweb_cluster_ip = kubernetes_service_v1.bunkerweb_external.spec[0].cluster_ip
143+
}
144+
145+
output "alpha_s3_url" {
146+
value = module.team_alpha.s3_api_url
147+
}
148+
149+
output "beta_s3_url" {
150+
value = module.team_beta.s3_api_url
151+
}

examples/single-instance/main.tf

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
terraform {
2+
required_version = ">= 1.6.0"
3+
4+
required_providers {
5+
kubernetes = {
6+
source = "hashicorp/kubernetes"
7+
version = "~> 2.35"
8+
}
9+
helm = {
10+
source = "hashicorp/helm"
11+
version = "~> 2.17"
12+
}
13+
}
14+
}
15+
16+
provider "kubernetes" {
17+
config_path = "~/.kube/config"
18+
config_context = "kind-seaweedfs"
19+
}
20+
21+
provider "helm" {
22+
kubernetes {
23+
config_path = "~/.kube/config"
24+
config_context = "kind-seaweedfs"
25+
}
26+
}
27+
28+
resource "helm_release" "bunkerweb" {
29+
name = "bunkerweb"
30+
repository = "https://repo.bunkerweb.io/charts"
31+
chart = "bunkerweb"
32+
version = "1.0.13"
33+
namespace = "seaweedfs"
34+
create_namespace = true
35+
wait = true
36+
timeout = 600
37+
38+
values = [yamlencode({
39+
service = {
40+
enabled = false
41+
}
42+
43+
bunkerweb = {
44+
kind = "Deployment"
45+
replicas = 1
46+
pdb = {
47+
create = false
48+
}
49+
}
50+
51+
settings = {
52+
kubernetes = {
53+
ingressClass = "bunkerweb"
54+
}
55+
misc = {
56+
dnsResolvers = "kube-dns.kube-system.svc.cluster.local"
57+
apiWhitelistIp = "127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 100.64.0.0/10"
58+
}
59+
ui = {
60+
wizard = false
61+
}
62+
}
63+
64+
ingressClass = {
65+
enabled = true
66+
name = "bunkerweb"
67+
controller = "bunkerweb.io/ingress-controller"
68+
}
69+
70+
controller = {
71+
enabled = true
72+
}
73+
74+
ui = { enabled = false }
75+
api = { enabled = false }
76+
mariadb = {
77+
enabled = true
78+
persistence = { storageClass = "standard" }
79+
}
80+
redis = {
81+
enabled = true
82+
persistence = { storageClass = "standard" }
83+
}
84+
prometheus = { enabled = false }
85+
grafana = { enabled = false }
86+
})]
87+
}
88+
89+
resource "kubernetes_service_v1" "bunkerweb_external" {
90+
metadata {
91+
name = "bunkerweb"
92+
namespace = "seaweedfs"
93+
labels = {
94+
"app.kubernetes.io/name" = "bunkerweb"
95+
"app.kubernetes.io/instance" = "bunkerweb"
96+
}
97+
}
98+
99+
spec {
100+
type = "ClusterIP"
101+
selector = {
102+
"bunkerweb.io/component" = "bunkerweb"
103+
}
104+
port {
105+
name = "http"
106+
port = 80
107+
target_port = 8080
108+
protocol = "TCP"
109+
}
110+
port {
111+
name = "https"
112+
port = 443
113+
target_port = 8443
114+
protocol = "TCP"
115+
}
116+
}
117+
118+
depends_on = [helm_release.bunkerweb]
119+
}
120+
121+
module "seaweedfs" {
122+
source = "../../modules/seaweedfs-instance"
123+
124+
namespace = "seaweedfs"
125+
storage_class_name = "standard"
126+
seaweedfs_domain = "s3.localhost"
127+
keycloak_domain = "auth.localhost"
128+
email_lets_encrypt = "admin@example.com"
129+
ingress_class_name = "bunkerweb"
130+
bunkerweb_cluster_ip = kubernetes_service_v1.bunkerweb_external.spec[0].cluster_ip
131+
}
132+
133+
output "s3_api_url" {
134+
value = module.seaweedfs.s3_api_url
135+
}
136+
137+
output "keycloak_url" {
138+
value = module.seaweedfs.keycloak_url
139+
}
140+
141+
output "keycloak_admin_password" {
142+
value = module.seaweedfs.keycloak_admin_password
143+
sensitive = true
144+
}

0 commit comments

Comments
 (0)