File tree 14 files changed +232
-1
lines changed
14 files changed +232
-1
lines changed Original file line number Diff line number Diff line change @@ -12,7 +12,7 @@ crash.log
12
12
# .tfvars files are managed as part of configuration and so should be included in
13
13
# version control.
14
14
#
15
- # example .tfvars
15
+ local .tfvars
16
16
17
17
# Ignore override files as they are usually used to override resources locally and so
18
18
# are not checked in
Original file line number Diff line number Diff line change
1
+ resource "kubernetes_deployment_v1" "kubernetes_deployment_v1" {
2
+ metadata {
3
+ name = var. name
4
+ labels = {
5
+ app = var.name
6
+ name = var.name
7
+ }
8
+ }
9
+
10
+ spec {
11
+ selector {
12
+ match_labels = {
13
+ app = var.name
14
+ }
15
+ }
16
+
17
+ template {
18
+ metadata {
19
+ labels = {
20
+ app = var.name
21
+ name = var.name
22
+ }
23
+ }
24
+
25
+ spec {
26
+
27
+ container {
28
+ image = " ${ var . image } "
29
+ image_pull_policy = " Always"
30
+ name = var. name
31
+
32
+ resources {
33
+ requests = {
34
+ cpu = var.requests_cpu
35
+ memory = var.requests_memory
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }
41
+ }
42
+ }
Original file line number Diff line number Diff line change
1
+ variable "name" {
2
+ type = string
3
+ }
4
+
5
+ variable "image" {
6
+ type = string
7
+ }
8
+
9
+ variable "requests_cpu" {
10
+ type = string
11
+ }
12
+
13
+ variable "requests_memory" {
14
+ type = string
15
+ }
Original file line number Diff line number Diff line change
1
+ terraform {
2
+ required_providers {
3
+ kubernetes = {
4
+ source = " hashicorp/kubernetes"
5
+ }
6
+ }
7
+ }
Original file line number Diff line number Diff line change
1
+ resource "kubernetes_ingress_v1" "generic-ingress" {
2
+ for_each = toset (var. dns_names )
3
+ metadata {
4
+ name = " ${ var . name } -${ each . value } "
5
+ labels = {
6
+ app = " ${ var . name } -${ each . value } "
7
+ }
8
+ annotations = {
9
+ " cert-manager.io/cluster-issuer" : " letsencrypt-prod"
10
+ " kubernetes.io/ingress.class" : " default"
11
+ " haproxy.org/check" : " false" // todo: use http-check
12
+ " haproxy.org/check-http" : " /health.txt"
13
+ " haproxy.org/check-interval" : " 10s"
14
+ }
15
+ }
16
+ spec {
17
+ rule {
18
+ host = each. value
19
+ http {
20
+ path {
21
+ path = " /"
22
+ backend {
23
+ service {
24
+ name = var. name
25
+ port {
26
+ number = 80
27
+ }
28
+ }
29
+ }
30
+ }
31
+ }
32
+ }
33
+
34
+ tls {
35
+ hosts = [each . value ]
36
+ secret_name = each. value
37
+ }
38
+ }
39
+ }
Original file line number Diff line number Diff line change
1
+ variable "name" {
2
+ type = string
3
+ }
4
+
5
+ variable "dns_names" {
6
+ type = list (string )
7
+ }
Original file line number Diff line number Diff line change
1
+ terraform {
2
+ required_providers {
3
+ kubernetes = {
4
+ source = " hashicorp/kubernetes"
5
+ }
6
+ }
7
+ }
Original file line number Diff line number Diff line change
1
+ resource "kubernetes_service" "ingress-service" {
2
+ metadata {
3
+ labels = {
4
+ app = var.name
5
+ }
6
+ name = var. name
7
+ }
8
+ spec {
9
+ port {
10
+ port = 80
11
+ protocol = " TCP"
12
+ target_port = var. target_port
13
+ }
14
+ selector = {
15
+ app = var.name
16
+ }
17
+ type = " NodePort"
18
+ }
19
+ }
Original file line number Diff line number Diff line change
1
+ variable "name" {
2
+ type = string
3
+ }
4
+
5
+ variable "target_port" {
6
+ type = number
7
+ }
Original file line number Diff line number Diff line change
1
+ terraform {
2
+ required_providers {
3
+ kubernetes = {
4
+ source = " hashicorp/kubernetes"
5
+ }
6
+ }
7
+ }
Original file line number Diff line number Diff line change
1
+ module "kubernetes-deployment-v1" {
2
+ source = " ./kubernetes/deployment_v1"
3
+ image = var. image
4
+ name = var. name
5
+ requests_cpu = var. requests_cpu
6
+ requests_memory = var. requests_memory
7
+ }
8
+
9
+ module "kubernetes-service" {
10
+ source = " ./kubernetes/service"
11
+ name = var. name
12
+ target_port = var. target_port
13
+ }
14
+
15
+ module "kubernetes-ingress" {
16
+ source = " ./kubernetes/ingress"
17
+ dns_names = var. dns_names
18
+ name = var. name
19
+ }
Original file line number Diff line number Diff line change
1
+ provider "kubernetes" {
2
+ host = var. host
3
+ client_certificate = base64decode (var. client_certificate )
4
+ client_key = base64decode (var. client_key )
5
+ cluster_ca_certificate = base64decode (var. cluster_ca_certificate )
6
+ }
Original file line number Diff line number Diff line change
1
+ variable "name" {
2
+ type = string
3
+ default = " deployment"
4
+ }
5
+
6
+ variable "dns_names" {
7
+ type = list (string )
8
+ default = [" example.com" ]
9
+ }
10
+
11
+ variable "target_port" {
12
+ type = number
13
+ default = 80
14
+ }
15
+
16
+ variable "image" {
17
+ type = string
18
+ default = " yeasy/simple-web"
19
+ }
20
+
21
+ variable "requests_cpu" {
22
+ default = " 300m"
23
+ }
24
+ variable "requests_memory" {
25
+ default = " 64Mi"
26
+ }
27
+
28
+ # kubectl
29
+ variable "host" {
30
+ description = " (Required) The hostname (in form of URI) of the Kubernetes API. Can be sourced from KUBE_HOST."
31
+ type = string
32
+ }
33
+
34
+ variable "client_certificate" {
35
+ description = " (Required) PEM-encoded client certificate for TLS authentication. Can be sourced from KUBE_CLIENT_CERT_DATA."
36
+ type = string
37
+ }
38
+
39
+ variable "client_key" {
40
+ description = " (Required) PEM-encoded client certificate key for TLS authentication. Can be sourced from KUBE_CLIENT_KEY_DATA."
41
+ type = string
42
+ }
43
+
44
+ variable "cluster_ca_certificate" {
45
+ description = " (Required) PEM-encoded root certificates bundle for TLS authentication. Can be sourced from KUBE_CLUSTER_CA_CERT_DATA."
46
+ type = string
47
+ }
Original file line number Diff line number Diff line change
1
+ terraform {
2
+ required_providers {
3
+ kubernetes = {
4
+ source = " hashicorp/kubernetes"
5
+ version = " 2.12.1"
6
+ }
7
+ }
8
+ required_version = " >= 1.2.6"
9
+ }
You can’t perform that action at this time.
0 commit comments