-
Notifications
You must be signed in to change notification settings - Fork 0
/
minio.tf
106 lines (106 loc) · 2.39 KB
/
minio.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
resource "random_uuid" "minio" {
}
resource "kubernetes_persistent_volume" "minio" {
metadata {
name = "minio"
}
spec {
capacity = {
storage = "10Gi"
}
access_modes = ["ReadWriteOnce"]
persistent_volume_source {
local {
path = "/mnt/disks/minio"
}
}
storage_class_name = "standard"
node_affinity {
required {
node_selector_term {
match_expressions {
key = "kubernetes.io/hostname"
operator = "NotIn"
values = ["k8s-cluster-control-plane"]
}
}
}
}
persistent_volume_reclaim_policy = "Delete"
}
depends_on = [
module.kind-istio-metallb
]
}
resource "helm_release" "minio" {
name = "minio"
repository = "https://helm.min.io/"
chart = "minio"
version = var.MINIO_VERSION
namespace = "minio"
create_namespace = true
values = [
<<-EOF
accessKey: "${var.minioAccessKey}"
secretKey: "${var.minioSecretKey}"
defaultBucket:
enabled: true
name: velero-${random_uuid.minio.result}
gcsgateway:
enabled: true
replicas: 1
gcsKeyJson: '${replace(file("${path.root}/.keys/gcs_key.json"), "\n", "")}'
projectId: ${var.PROJECT_ID}
persistence:
enabled: true
VolumeName: ${kubernetes_persistent_volume.minio.metadata[0].name}
size: 10Gi
resources:
requests:
memory: 2Gi
EOF
]
}
resource "local_file" "minio-ingress" {
content = <<-EOF
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: minio
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "minio.${module.kind-istio-metallb.ingress_ip_address}.nip.io"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: minio
spec:
hosts:
- "minio.${module.kind-istio-metallb.ingress_ip_address}.nip.io"
gateways:
- minio
http:
- route:
- destination:
port:
number: 9000
host: minio.minio.svc.cluster.local
EOF
filename = "${path.root}/configs/minio-ingress.yaml"
provisioner "local-exec" {
command = "kubectl apply -f ${self.filename} -n ${helm_release.minio.namespace}"
}
depends_on = [
module.kind-istio-metallb,
helm_release.minio,
local_file.minio-ingress
]
}