-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathmain.tf
More file actions
92 lines (76 loc) · 2.42 KB
/
Copy pathmain.tf
File metadata and controls
92 lines (76 loc) · 2.42 KB
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
terraform {
required_providers {
kaniko = {
source = "seal-io/kaniko"
version = "0.0.3"
}
}
}
#######
# Build
#######
resource "kaniko_image" "image" {
# Only handle git context. Explicitly use the git scheme.
context = "${local.formal_git_url}#refs/heads/${var.git_branch}"
dockerfile = var.dockerfile
destination = var.image
git_username = var.git_auth ? var.git_username : ""
git_password = var.git_auth ? var.git_password : ""
registry_username = var.registry_auth ? var.registry_username : ""
registry_password = var.registry_auth ? var.registry_password : ""
always_run = true
}
########
# Deploy
########
module "deployment" {
depends_on = [resource.kaniko_image.image]
# disable wait for all pods be ready.
#
wait_for_rollout = false
# Use local paths to avoid accessing external networks
# This module comes from terraform registry "terraform-iaac/deployment/kubernetes 1.4.2"
source = "./modules/deployment/kubernetes"
name = local.name
namespace = local.namespace
image = var.image
replicas = var.replicas
resources = {
request_cpu = var.request_cpu == "" ? null : var.request_cpu
limit_cpu = var.limit_cpu == "" ? null : var.limit_cpu
request_memory = var.request_memory == "" ? null : var.request_memory
limit_memory = var.limit_memory == "" ? null : var.limit_memory
}
env = var.env
}
module "service" {
depends_on = [resource.kaniko_image.image]
# Use local paths to avoid accessing external networks
# This module comes from terraform registry "terraform-iaac/service/kubernetes 1.0.4"
source = "./modules/service/kubernetes"
app_name = local.name
app_namespace = local.namespace
type = "NodePort"
port_mapping = [for p in var.ports :
{
name = "port-${p}"
internal_port = p
external_port = p
protocol = "TCP"
}]
}
data "kubernetes_service" "service" {
depends_on = [module.service]
metadata {
name = local.name
namespace = local.namespace
}
}
########
# Common
########
locals {
name = coalesce(try(var.name, null), try(var.walrus_metadata_service_name, null), try(var.context["resource"]["name"], null))
namespace = coalesce(try(var.namespace, null), try(var.walrus_metadata_namespace_name, null), try(var.context["environment"]["namespace"], null))
formal_git_url = replace(var.git_url, "https://", "git://")
}