@@ -843,6 +843,52 @@ func TestAccKubernetesServiceV1_ipFamilies(t *testing.T) {
843843 })
844844}
845845
846+ func TestAccKubernetesServiceV1_loadBalancer_ipMode (t * testing.T ) {
847+ var conf corev1.Service
848+ name := acctest .RandomWithPrefix ("tf-acc-test" )
849+ resourceName := "kubernetes_service_v1.test"
850+
851+ resource .ParallelTest (t , resource.TestCase {
852+ PreCheck : func () { testAccPreCheck (t ); skipIfNoLoadBalancersAvailable (t ) },
853+ IDRefreshIgnore : []string {"metadata.0.resource_version" },
854+ ProviderFactories : testAccProviderFactories ,
855+ CheckDestroy : testAccCheckKubernetesServiceV1Destroy ,
856+ Steps : []resource.TestStep {
857+ {
858+ Config : testAccKubernetesConfig_ignoreAnnotations () +
859+ testAccKubernetesServiceV1Config_loadBalancer_ipMode (name ),
860+ Check : resource .ComposeAggregateTestCheckFunc (
861+ testAccCheckKubernetesServiceV1Exists (resourceName , & conf ),
862+ resource .TestCheckResourceAttr (resourceName , "metadata.0.name" , name ),
863+ resource .TestCheckResourceAttr (resourceName , "spec.#" , "1" ),
864+ resource .TestCheckResourceAttr (resourceName , "spec.0.type" , "LoadBalancer" ),
865+ resource .TestCheckResourceAttr (resourceName , "status.0.load_balancer.0.ingress.0.ip_mode" , "VIP" ),
866+ ),
867+ },
868+ },
869+ })
870+ }
871+
872+ func testAccKubernetesServiceV1Config_loadBalancer_ipMode (name string ) string {
873+ return fmt .Sprintf (`
874+ resource "kubernetes_service_v1" "test" {
875+ metadata {
876+ name = "%s"
877+ }
878+ spec {
879+ type = "LoadBalancer"
880+ selector = {
881+ app = "test-app"
882+ }
883+ port {
884+ port = 80
885+ target_port = 80
886+ }
887+ }
888+ }
889+ ` , name )
890+ }
891+
846892func testAccCheckServiceV1Ports (svc * corev1.Service , expected []corev1.ServicePort ) resource.TestCheckFunc {
847893 return func (s * terraform.State ) error {
848894 if len (expected ) == 0 && len (svc .Spec .Ports ) == 0 {
0 commit comments