6
6
# - Using kubergrunt to deploy Tiller with TLS management
7
7
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
8
9
+ terraform {
10
+ required_version = " >= 0.12"
11
+ }
12
+
9
13
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10
14
# CONFIGURE OUR KUBERNETES CONNECTIONS
11
15
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12
16
13
17
provider "kubernetes" {
14
- config_context = " ${ var . kubectl_config_context_name } "
15
- config_path = " ${ var . kubectl_config_path } "
18
+ config_context = var. kubectl_config_context_name
19
+ config_path = var. kubectl_config_path
16
20
}
17
21
18
22
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -25,7 +29,7 @@ module "tiller_namespace" {
25
29
# source = "git::https://github.com/gruntwork-io/terraform-kubernetes-helm.git//modules/k8s-namespace?ref=v0.3.0"
26
30
source = " ../../modules/k8s-namespace"
27
31
28
- name = " ${ var . tiller_namespace } "
32
+ name = var. tiller_namespace
29
33
}
30
34
31
35
module "resource_namespace" {
@@ -34,7 +38,7 @@ module "resource_namespace" {
34
38
# source = "git::https://github.com/gruntwork-io/terraform-kubernetes-helm.git//modules/k8s-namespace?ref=v0.3.0"
35
39
source = " ../../modules/k8s-namespace"
36
40
37
- name = " ${ var . resource_namespace } "
41
+ name = var. resource_namespace
38
42
}
39
43
40
44
module "tiller_service_account" {
@@ -43,18 +47,18 @@ module "tiller_service_account" {
43
47
# source = "git::https://github.com/gruntwork-io/terraform-kubernetes-helm.git//modules/k8s-service-account?ref=v0.3.0"
44
48
source = " ../../modules/k8s-service-account"
45
49
46
- name = " ${ var . service_account_name } "
47
- namespace = " ${ module . tiller_namespace . name } "
50
+ name = var. service_account_name
51
+ namespace = module. tiller_namespace . name
48
52
num_rbac_roles = 2
49
53
50
54
rbac_roles = [
51
55
{
52
- name = " ${ module . tiller_namespace . rbac_tiller_metadata_access_role } "
53
- namespace = " ${ module . tiller_namespace . name } "
56
+ name = module.tiller_namespace.rbac_tiller_metadata_access_role
57
+ namespace = module.tiller_namespace.name
54
58
},
55
59
{
56
- name = " ${ module . resource_namespace . rbac_tiller_resource_access_role } "
57
- namespace = " ${ module . resource_namespace . name } "
60
+ name = module.resource_namespace.rbac_tiller_resource_access_role
61
+ namespace = module.resource_namespace.name
58
62
},
59
63
]
60
64
@@ -73,31 +77,31 @@ module "tiller" {
73
77
# source = "git::https://github.com/gruntwork-io/terraform-kubernetes-helm.git//modules/k8s-tiller?ref=v0.3.0"
74
78
source = " ../../modules/k8s-tiller"
75
79
76
- tiller_service_account_name = " ${ module . tiller_service_account . name } "
77
- tiller_service_account_token_secret_name = " ${ module . tiller_service_account . token_secret_name } "
78
- namespace = " ${ module . tiller_namespace . name } "
79
- tiller_image_version = " ${ var . tiller_version } "
80
+ tiller_service_account_name = module. tiller_service_account . name
81
+ tiller_service_account_token_secret_name = module. tiller_service_account . token_secret_name
82
+ namespace = module. tiller_namespace . name
83
+ tiller_image_version = var. tiller_version
80
84
81
85
tiller_tls_gen_method = " kubergrunt"
82
- tiller_tls_subject = " ${ var . tls_subject } "
83
- private_key_algorithm = " ${ var . private_key_algorithm } "
84
- private_key_ecdsa_curve = " ${ var . private_key_ecdsa_curve } "
85
- private_key_rsa_bits = " ${ var . private_key_rsa_bits } "
86
+ tiller_tls_subject = var. tls_subject
87
+ private_key_algorithm = var. private_key_algorithm
88
+ private_key_ecdsa_curve = var. private_key_ecdsa_curve
89
+ private_key_rsa_bits = var. private_key_rsa_bits
86
90
87
- kubectl_config_context_name = " ${ var . kubectl_config_context_name } "
88
- kubectl_config_path = " ${ var . kubectl_config_path } "
91
+ kubectl_config_context_name = var. kubectl_config_context_name
92
+ kubectl_config_path = var. kubectl_config_path
89
93
}
90
94
91
95
# We use kubergrunt to wait for Tiller to be deployed. Any resources that depend on this can assume Tiller is
92
96
# successfully deployed and up at that point.
93
97
resource "null_resource" "wait_for_tiller" {
94
98
provisioner "local-exec" {
95
99
command = <<- EOF
96
- ${ lookup ( module. require_executables . executables , " kubergrunt" ) } helm wait-for-tiller ${ local . esc_newl }
97
- --tiller-namespace ${ module . tiller_namespace . name } ${ local . esc_newl }
98
- --tiller-deployment-name ${ module . tiller . deployment_name } ${ local . esc_newl }
99
- --expected-tiller-version ${ var . tiller_version }
100
- EOF
100
+ ${ module . require_executables . executables [ " kubergrunt" ] } helm wait-for-tiller ${ local . esc_newl }
101
+ --tiller-namespace ${ module . tiller_namespace . name } ${ local . esc_newl }
102
+ --tiller-deployment-name ${ module . tiller . deployment_name } ${ local . esc_newl }
103
+ --expected-tiller-version ${ var . tiller_version }
104
+ EOF
101
105
}
102
106
}
103
107
@@ -106,24 +110,24 @@ resource "null_resource" "wait_for_tiller" {
106
110
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
107
111
108
112
resource "null_resource" "grant_helm_access" {
109
- count = " ${ var . configure_helm } "
110
- depends_on = [" null_resource.wait_for_tiller" ]
113
+ count = var. configure_helm ? 1 : 0
114
+ depends_on = [null_resource. wait_for_tiller ]
111
115
112
116
provisioner "local-exec" {
113
117
command = <<- EOF
114
- ${ lookup ( module. require_executables . executables , " kubergrunt" ) } helm grant ${ local . esc_newl }
115
- --tiller-namespace ${ module . tiller_namespace . name } ${ local . esc_newl }
116
- ${ local . kubectl_config_options } ${ local . esc_newl }
117
- --tls-subject-json '${ jsonencode (var. client_tls_subject )} ' ${ local . esc_newl }
118
- ${ local . configure_args }
119
-
120
- ${ lookup ( module. require_executables . executables , " kubergrunt" ) } helm configure ${ local . esc_newl }
121
- --helm-home ${ local . helm_home_with_default } ${ local . esc_newl }
122
- --tiller-namespace ${ module . tiller_namespace . name } ${ local . esc_newl }
123
- --resource-namespace ${ module . resource_namespace . name } ${ local . esc_newl }
124
- ${ local . kubectl_config_options } ${ local . esc_newl }
125
- ${ local . configure_args }
126
- EOF
118
+ ${ module . require_executables . executables [ " kubergrunt" ] } helm grant ${ local . esc_newl }
119
+ --tiller-namespace ${ module . tiller_namespace . name } ${ local . esc_newl }
120
+ ${ local . kubectl_config_options } ${ local . esc_newl }
121
+ --tls-subject-json '${ jsonencode (var. client_tls_subject )} ' ${ local . esc_newl }
122
+ ${ local . configure_args }
123
+
124
+ ${ module . require_executables . executables [ " kubergrunt" ] } helm configure ${ local . esc_newl }
125
+ --helm-home ${ local . helm_home_with_default } ${ local . esc_newl }
126
+ --tiller-namespace ${ module . tiller_namespace . name } ${ local . esc_newl }
127
+ --resource-namespace ${ module . resource_namespace . name } ${ local . esc_newl }
128
+ ${ local . kubectl_config_options } ${ local . esc_newl }
129
+ ${ local . configure_args }
130
+ EOF
127
131
}
128
132
}
129
133
@@ -135,24 +139,19 @@ resource "null_resource" "grant_helm_access" {
135
139
locals {
136
140
kubectl_config_options = " ${ var . kubectl_config_context_name != " " ? " --kubectl-context-name ${ var . kubectl_config_context_name } " : " " } ${ var . kubectl_config_path != " " ? " --kubeconfig ${ var . kubectl_config_path } " : " " } "
137
141
138
- helm_home_with_default = " ${ var . helm_home == " " ? pathexpand (" ~/.helm" ) : var . helm_home } "
142
+ helm_home_with_default = var. helm_home == " " ? pathexpand (" ~/.helm" ) : var. helm_home
139
143
140
- configure_args = " ${
141
- var . helm_client_rbac_user != " " ? " --rbac-user ${ var . helm_client_rbac_user } "
142
- : var . helm_client_rbac_group != " " ? " --rbac-group ${ var . helm_client_rbac_group } "
143
- : var . helm_client_rbac_service_account != " " ? " --rbac-service-account ${ var . helm_client_rbac_service_account } "
144
- : " "
145
- } "
144
+ configure_args = var. helm_client_rbac_user != " " ? " --rbac-user ${ var . helm_client_rbac_user } " : var. helm_client_rbac_group != " " ? " --rbac-group ${ var . helm_client_rbac_group } " : var. helm_client_rbac_service_account != " " ? " --rbac-service-account ${ var . helm_client_rbac_service_account } " : " "
146
145
147
- esc_newl = " ${ module . os . name == " Windows" ? " `" : " \\ " } "
146
+ esc_newl = module. os . name == " Windows" ? " `" : " \\ "
148
147
}
149
148
150
149
module "os" {
151
- source = " git::https://github.com/gruntwork-io/package-terraform-utilities.git//modules/operating-system?ref=v0.0.8 "
150
+ source = " git::https://github.com/gruntwork-io/package-terraform-utilities.git//modules/operating-system?ref=v0.1.0 "
152
151
}
153
152
154
153
module "require_executables" {
155
- source = " git::https://github.com/gruntwork-io/package-terraform-utilities.git//modules/require-executable?ref=v0.0.8 "
154
+ source = " git::https://github.com/gruntwork-io/package-terraform-utilities.git//modules/require-executable?ref=v0.1.0 "
156
155
157
156
required_executables = [" kubergrunt" ]
158
157
error_message = " The __EXECUTABLE_NAME__ binary is not available in your PATH. Install the binary by following the instructions at https://github.com/gruntwork-io/terraform-kubernetes-helm/blob/master/examples/k8s-tiller-kubergrunt-minikube/README.md#installing-necessary-tools, or update your PATH variable to search where you installed __EXECUTABLE_NAME__."
0 commit comments