Skip to content

Commit 7cb7332

Browse files
Support empty TLS blocks in ingress and ingress_v1
1 parent 3435032 commit 7cb7332

5 files changed

+117
-3
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/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/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)