Skip to content

Commit a7809cd

Browse files
Support empty TLS blocks in Ingress resource (#2344)
1 parent 772e2ba commit a7809cd

11 files changed

+132
-33
lines changed

.changelog/2344.txt

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
```release-note:bug
2+
`resource/kubernetes_ingress`: Fix an issue where the empty `tls` attribute in the configuration does not generate the corresponding Ingress object without any TLS configuration.
3+
```
4+
5+
```release-note:bug
6+
`resource/kubernetes_ingress_v1`: Fix an issue where the empty `tls` attribute in the configuration does not generate the corresponding Ingress object without any TLS configuration.
7+
```

kubernetes/provider_ignore_metadata_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ func TestAccKubernetesIgnoreKubernetesMetadata_basic(t *testing.T) {
4444
}
4545

4646
func testAccKubernetesIgnoreKubernetesMetadataProviderConfig(namespaceName string, ignoreKubernetesMetadata string) string {
47-
return fmt.Sprintf(`
48-
provider "kubernetes" {
47+
return fmt.Sprintf(`provider "kubernetes" {
4948
ignore_annotations = [
5049
"%s",
5150
]

kubernetes/resource_kubernetes_ingress_v1_test.go

+53
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,39 @@ func TestAccKubernetesIngressV1_TLS(t *testing.T) {
164164
})
165165
}
166166

167+
func TestAccKubernetesIngressV1_emptyTLS(t *testing.T) {
168+
var conf networking.Ingress
169+
name := fmt.Sprintf("tf-acc-test-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
170+
resourceName := "kubernetes_ingress_v1.test"
171+
172+
resource.ParallelTest(t, resource.TestCase{
173+
PreCheck: func() {
174+
testAccPreCheck(t)
175+
skipIfClusterVersionLessThan(t, "1.22.0")
176+
},
177+
IDRefreshName: resourceName,
178+
ProviderFactories: testAccProviderFactories,
179+
CheckDestroy: testAccCheckKubernetesIngressV1Destroy,
180+
IDRefreshIgnore: []string{"metadata.0.resource_version"},
181+
Steps: []resource.TestStep{
182+
{
183+
Config: testAccKubernetesIngressV1Config_emptyTLS(name),
184+
Check: resource.ComposeAggregateTestCheckFunc(
185+
testAccCheckKubernetesIngressV1Exists(resourceName, &conf),
186+
resource.TestCheckResourceAttr(resourceName, "metadata.0.name", name),
187+
resource.TestCheckResourceAttrSet(resourceName, "metadata.0.generation"),
188+
resource.TestCheckResourceAttrSet(resourceName, "metadata.0.resource_version"),
189+
resource.TestCheckResourceAttrSet(resourceName, "metadata.0.uid"),
190+
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
191+
resource.TestCheckResourceAttr(resourceName, "spec.0.tls.#", "1"),
192+
resource.TestCheckResourceAttr(resourceName, "spec.0.tls.0.hosts.#", "0"),
193+
resource.TestCheckResourceAttr(resourceName, "spec.0.tls.0.secret_name", ""),
194+
),
195+
},
196+
},
197+
})
198+
}
199+
167200
func TestAccKubernetesIngressV1_InternalKey(t *testing.T) {
168201
var conf networking.Ingress
169202
name := fmt.Sprintf("tf-acc-test-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
@@ -541,6 +574,26 @@ func testAccKubernetesIngressV1Config_TLS_modified(name string) string {
541574
}`, name)
542575
}
543576

577+
func testAccKubernetesIngressV1Config_emptyTLS(name string) string {
578+
return fmt.Sprintf(`resource "kubernetes_ingress_v1" "test" {
579+
metadata {
580+
name = "%s"
581+
}
582+
spec {
583+
default_backend {
584+
service {
585+
name = "app1"
586+
port {
587+
number = 443
588+
}
589+
}
590+
}
591+
tls {
592+
}
593+
}
594+
}`, name)
595+
}
596+
544597
func testAccKubernetesIngressV1Config_internalKey(name string) string {
545598
return fmt.Sprintf(`resource "kubernetes_ingress_v1" "test" {
546599
metadata {

kubernetes/resource_kubernetes_ingress_v1beta1_test.go

+49-1
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,39 @@ func TestAccKubernetesIngressV1Beta1_TLS(t *testing.T) {
119119
})
120120
}
121121

122+
func TestAccKubernetesIngressV1Beta1_emptyTLS(t *testing.T) {
123+
var conf api.Ingress
124+
name := fmt.Sprintf("tf-acc-test-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
125+
resourceName := "kubernetes_ingress.test"
126+
127+
resource.ParallelTest(t, resource.TestCase{
128+
PreCheck: func() {
129+
testAccPreCheck(t)
130+
skipIfClusterVersionGreaterThanOrEqual(t, "1.22.0")
131+
},
132+
IDRefreshName: resourceName,
133+
IDRefreshIgnore: []string{"metadata.0.resource_version"},
134+
ProviderFactories: testAccProviderFactories,
135+
CheckDestroy: testAccCheckKubernetesIngressV1Beta1Destroy,
136+
Steps: []resource.TestStep{
137+
{
138+
Config: testAccKubernetesIngressV1Beta1Config_TLS(name),
139+
Check: resource.ComposeAggregateTestCheckFunc(
140+
testAccCheckKubernetesIngressV1Beta1Exists(resourceName, &conf),
141+
resource.TestCheckResourceAttr(resourceName, "metadata.0.name", name),
142+
resource.TestCheckResourceAttrSet(resourceName, "metadata.0.generation"),
143+
resource.TestCheckResourceAttrSet(resourceName, "metadata.0.resource_version"),
144+
resource.TestCheckResourceAttrSet(resourceName, "metadata.0.uid"),
145+
resource.TestCheckResourceAttr(resourceName, "spec.#", "1"),
146+
resource.TestCheckResourceAttr(resourceName, "spec.0.tls.#", "1"),
147+
resource.TestCheckResourceAttr(resourceName, "spec.0.tls.0.hosts.#", "0"),
148+
resource.TestCheckResourceAttr(resourceName, "spec.0.tls.0.secret_name", ""),
149+
),
150+
},
151+
},
152+
})
153+
}
154+
122155
func TestAccKubernetesIngressV1Beta1_InternalKey(t *testing.T) {
123156
var conf api.Ingress
124157
name := fmt.Sprintf("tf-acc-test-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
@@ -194,7 +227,6 @@ func TestAccKubernetesIngressV1Beta1_WaitForLoadBalancerGoogleCloud(t *testing.T
194227

195228
func testAccCheckKubernetesIngressV1Beta1Destroy(s *terraform.State) error {
196229
conn, err := testAccProvider.Meta().(KubeClientsets).MainClientset()
197-
198230
if err != nil {
199231
return err
200232
}
@@ -309,6 +341,22 @@ func testAccKubernetesIngressV1Beta1Config_TLS(name string) string {
309341
}`, name)
310342
}
311343

344+
func testAccKubernetesIngressV1Beta1Config_emptyTLS(name string) string {
345+
return fmt.Sprintf(`resource "kubernetes_ingress" "test" {
346+
metadata {
347+
name = "%s"
348+
}
349+
spec {
350+
backend {
351+
service_name = "app1"
352+
service_port = 443
353+
}
354+
tls {
355+
}
356+
}
357+
}`, name)
358+
}
359+
312360
func testAccKubernetesIngressV1Beta1Config_TLS_modified(name string) string {
313361
return fmt.Sprintf(`resource "kubernetes_ingress" "test" {
314362
metadata {

kubernetes/resource_kubernetes_mutating_webhook_configuration_test.go

+3-6
Original file line numberDiff line numberDiff line change
@@ -216,8 +216,7 @@ func testAccCheckKubernetesMutatingWebhookConfigurationExists(n string) resource
216216
}
217217

218218
func testAccKubernetesMutatingWebhookConfigurationConfig_basic(name string) string {
219-
return fmt.Sprintf(`
220-
resource "kubernetes_mutating_webhook_configuration" "test" {
219+
return fmt.Sprintf(`resource "kubernetes_mutating_webhook_configuration" "test" {
221220
metadata {
222221
name = %q
223222
}
@@ -254,8 +253,7 @@ resource "kubernetes_mutating_webhook_configuration" "test" {
254253
}
255254

256255
func testAccKubernetesMutatingWebhookConfigurationConfig_modified(name string) string {
257-
return fmt.Sprintf(`
258-
resource "kubernetes_mutating_webhook_configuration" "test" {
256+
return fmt.Sprintf(`resource "kubernetes_mutating_webhook_configuration" "test" {
259257
metadata {
260258
name = %q
261259
}
@@ -306,8 +304,7 @@ resource "kubernetes_mutating_webhook_configuration" "test" {
306304
}
307305

308306
func testAccKubernetesMutatingWebhookConfigurationConfig_without_rules(name string) string {
309-
return fmt.Sprintf(`
310-
resource "kubernetes_mutating_webhook_configuration" "test" {
307+
return fmt.Sprintf(`resource "kubernetes_mutating_webhook_configuration" "test" {
311308
metadata {
312309
name = %q
313310
}

kubernetes/resource_kubernetes_node_taint_test.go

+4-8
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,7 @@ func testAccKubernetesNodeTaintExists(n string) resource.TestCheckFunc {
155155
}
156156

157157
func testAccKubernetesNodeTaintConfig_basic() string {
158-
return fmt.Sprintf(`
159-
data "kubernetes_nodes" "test" {}
158+
return fmt.Sprintf(`data "kubernetes_nodes" "test" {}
160159
161160
resource "kubernetes_node_taint" "test" {
162161
metadata {
@@ -173,8 +172,7 @@ resource "kubernetes_node_taint" "test" {
173172
}
174173

175174
func testAccKubernetesNodeTaintConfig_multipleBasic() string {
176-
return fmt.Sprintf(`
177-
data "kubernetes_nodes" "test" {}
175+
return fmt.Sprintf(`data "kubernetes_nodes" "test" {}
178176
179177
resource "kubernetes_node_taint" "test" {
180178
metadata {
@@ -201,8 +199,7 @@ resource "kubernetes_node_taint" "test" {
201199
}
202200

203201
func testAccKubernetesNodeTaintConfig_updateTaint() string {
204-
return fmt.Sprintf(`
205-
data "kubernetes_nodes" "test" {}
202+
return fmt.Sprintf(`data "kubernetes_nodes" "test" {}
206203
207204
resource "kubernetes_node_taint" "test" {
208205
metadata {
@@ -229,8 +226,7 @@ resource "kubernetes_node_taint" "test" {
229226
}
230227

231228
func testAccKubernetesNodeTaintConfig_removeTaint() string {
232-
return fmt.Sprintf(`
233-
data "kubernetes_nodes" "test" {}
229+
return fmt.Sprintf(`data "kubernetes_nodes" "test" {}
234230
235231
resource "kubernetes_node_taint" "test" {
236232
metadata {

kubernetes/resource_kubernetes_pod_v1_test.go

+2-4
Original file line numberDiff line numberDiff line change
@@ -1949,8 +1949,7 @@ func testAccKubernetesPodV1ConfigWithSecurityContextRunAsGroup(podName, imageNam
19491949
}
19501950

19511951
func testAccKubernetesPodV1ConfigWithSecurityContextSeccompProfile(podName, imageName, seccompProfileType string) string {
1952-
return fmt.Sprintf(`
1953-
resource "kubernetes_pod_v1" "test" {
1952+
return fmt.Sprintf(`resource "kubernetes_pod_v1" "test" {
19541953
metadata {
19551954
labels = {
19561955
app = "pod_label"
@@ -1982,8 +1981,7 @@ resource "kubernetes_pod_v1" "test" {
19821981
}
19831982

19841983
func testAccKubernetesPodV1ConfigWithSecurityContextSeccompProfileLocalhost(podName, imageName string) string {
1985-
return fmt.Sprintf(`
1986-
resource "kubernetes_pod_v1" "test" {
1984+
return fmt.Sprintf(`resource "kubernetes_pod_v1" "test" {
19871985
metadata {
19881986
labels = {
19891987
app = "pod_label"

kubernetes/resource_kubernetes_validating_webhook_configuration_v1_test.go

+3-6
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,7 @@ func testAccCheckKubernetesValidatingWebhookConfigurationV1Exists(n string) reso
198198
}
199199

200200
func testAccKubernetesValidatingWebhookConfigurationV1Config_basic(name string) string {
201-
return fmt.Sprintf(`
202-
resource "kubernetes_validating_webhook_configuration_v1" "test" {
201+
return fmt.Sprintf(`resource "kubernetes_validating_webhook_configuration_v1" "test" {
203202
metadata {
204203
name = %q
205204
}
@@ -235,8 +234,7 @@ resource "kubernetes_validating_webhook_configuration_v1" "test" {
235234
}
236235

237236
func testAccKubernetesValidatingWebhookConfigurationV1Config_modified(name string) string {
238-
return fmt.Sprintf(`
239-
resource "kubernetes_validating_webhook_configuration_v1" "test" {
237+
return fmt.Sprintf(`resource "kubernetes_validating_webhook_configuration_v1" "test" {
240238
metadata {
241239
name = %q
242240
}
@@ -291,8 +289,7 @@ resource "kubernetes_validating_webhook_configuration_v1" "test" {
291289
}
292290

293291
func testAccKubernetesValidatingWebhookConfigurationV1Config_without_rules(name string) string {
294-
return fmt.Sprintf(`
295-
resource "kubernetes_validating_webhook_configuration_v1" "test" {
292+
return fmt.Sprintf(`resource "kubernetes_validating_webhook_configuration_v1" "test" {
296293
metadata {
297294
name = %q
298295
}

kubernetes/resource_kubernetes_validating_webhook_configuration_v1beta1_test.go

+2-4
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,7 @@ func testAccCheckKubernetesValidatingWebhookConfigurationV1Beta1Exists(n string)
192192
}
193193

194194
func testAccKubernetesValidatingWebhookConfigurationV1Beta1Config_basic(name string) string {
195-
return fmt.Sprintf(`
196-
resource "kubernetes_validating_webhook_configuration" "test" {
195+
return fmt.Sprintf(`resource "kubernetes_validating_webhook_configuration" "test" {
197196
metadata {
198197
name = %q
199198
}
@@ -229,8 +228,7 @@ resource "kubernetes_validating_webhook_configuration" "test" {
229228
}
230229

231230
func testAccKubernetesValidatingWebhookConfigurationV1Beta1Config_modified(name string) string {
232-
return fmt.Sprintf(`
233-
resource "kubernetes_validating_webhook_configuration" "test" {
231+
return fmt.Sprintf(`resource "kubernetes_validating_webhook_configuration" "test" {
234232
metadata {
235233
name = %q
236234
}

kubernetes/structure_ingress_spec.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -194,12 +194,15 @@ func expandIngressBackend(l []interface{}) *v1beta1.IngressBackend {
194194
}
195195

196196
func expandIngressTLS(l []interface{}) []v1beta1.IngressTLS {
197-
if len(l) == 0 || l[0] == nil {
197+
if len(l) == 0 {
198198
return nil
199199
}
200200

201201
tlsList := make([]v1beta1.IngressTLS, len(l))
202202
for i, t := range l {
203+
if t == nil {
204+
t = map[string]interface{}{}
205+
}
203206
in := t.(map[string]interface{})
204207
obj := v1beta1.IngressTLS{}
205208

kubernetes/structure_ingress_spec_v1.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -252,12 +252,15 @@ func expandIngressV1Backend(l []interface{}) *networking.IngressBackend {
252252
}
253253

254254
func expandIngressV1TLS(l []interface{}) []networking.IngressTLS {
255-
if len(l) == 0 || l[0] == nil {
255+
if len(l) == 0 {
256256
return nil
257257
}
258258

259259
tlsList := make([]networking.IngressTLS, len(l))
260260
for i, t := range l {
261+
if t == nil {
262+
t = map[string]interface{}{}
263+
}
261264
in := t.(map[string]interface{})
262265
obj := networking.IngressTLS{}
263266

0 commit comments

Comments
 (0)