The gcp:compute/regionHealthCheck:RegionHealthCheck resource, part of the Pulumi GCP provider, defines regional health checks that poll backend instances at specified intervals to determine whether they can handle traffic. This guide focuses on four capabilities: TCP and HTTP protocol checks, health check logging, threshold configuration, and gRPC service verification.
Health checks monitor backend instances and attach to load balancer backend services. The examples are intentionally small. Combine them with your own backend services and load balancer configuration.
Check TCP port availability with minimal configuration
Load balancers verify that backend instances accept TCP connections on specific ports without sending application-layer data.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const tcp_region_health_check = new gcp.compute.RegionHealthCheck("tcp-region-health-check", {
name: "tcp-region-health-check",
timeoutSec: 1,
checkIntervalSec: 1,
tcpHealthCheck: {
port: 80,
},
});
import pulumi
import pulumi_gcp as gcp
tcp_region_health_check = gcp.compute.RegionHealthCheck("tcp-region-health-check",
name="tcp-region-health-check",
timeout_sec=1,
check_interval_sec=1,
tcp_health_check={
"port": 80,
})
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := compute.NewRegionHealthCheck(ctx, "tcp-region-health-check", &compute.RegionHealthCheckArgs{
Name: pulumi.String("tcp-region-health-check"),
TimeoutSec: pulumi.Int(1),
CheckIntervalSec: pulumi.Int(1),
TcpHealthCheck: &compute.RegionHealthCheckTcpHealthCheckArgs{
Port: pulumi.Int(80),
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var tcp_region_health_check = new Gcp.Compute.RegionHealthCheck("tcp-region-health-check", new()
{
Name = "tcp-region-health-check",
TimeoutSec = 1,
CheckIntervalSec = 1,
TcpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckTcpHealthCheckArgs
{
Port = 80,
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.RegionHealthCheck;
import com.pulumi.gcp.compute.RegionHealthCheckArgs;
import com.pulumi.gcp.compute.inputs.RegionHealthCheckTcpHealthCheckArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var tcp_region_health_check = new RegionHealthCheck("tcp-region-health-check", RegionHealthCheckArgs.builder()
.name("tcp-region-health-check")
.timeoutSec(1)
.checkIntervalSec(1)
.tcpHealthCheck(RegionHealthCheckTcpHealthCheckArgs.builder()
.port(80)
.build())
.build());
}
}
resources:
tcp-region-health-check:
type: gcp:compute:RegionHealthCheck
properties:
name: tcp-region-health-check
timeoutSec: 1
checkIntervalSec: 1
tcpHealthCheck:
port: '80'
The tcpHealthCheck property configures port-based connectivity checks. The timeoutSec and checkIntervalSec properties control how long to wait for responses and how frequently to probe. Instances that don’t respond within the timeout are marked unhealthy after consecutive failures.
Probe HTTP endpoints for application health
Web applications expose HTTP endpoints that return status codes indicating readiness to serve traffic.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const http_region_health_check = new gcp.compute.RegionHealthCheck("http-region-health-check", {
name: "http-region-health-check",
timeoutSec: 1,
checkIntervalSec: 1,
httpHealthCheck: {
port: 80,
},
});
import pulumi
import pulumi_gcp as gcp
http_region_health_check = gcp.compute.RegionHealthCheck("http-region-health-check",
name="http-region-health-check",
timeout_sec=1,
check_interval_sec=1,
http_health_check={
"port": 80,
})
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := compute.NewRegionHealthCheck(ctx, "http-region-health-check", &compute.RegionHealthCheckArgs{
Name: pulumi.String("http-region-health-check"),
TimeoutSec: pulumi.Int(1),
CheckIntervalSec: pulumi.Int(1),
HttpHealthCheck: &compute.RegionHealthCheckHttpHealthCheckArgs{
Port: pulumi.Int(80),
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var http_region_health_check = new Gcp.Compute.RegionHealthCheck("http-region-health-check", new()
{
Name = "http-region-health-check",
TimeoutSec = 1,
CheckIntervalSec = 1,
HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs
{
Port = 80,
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.RegionHealthCheck;
import com.pulumi.gcp.compute.RegionHealthCheckArgs;
import com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var http_region_health_check = new RegionHealthCheck("http-region-health-check", RegionHealthCheckArgs.builder()
.name("http-region-health-check")
.timeoutSec(1)
.checkIntervalSec(1)
.httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()
.port(80)
.build())
.build());
}
}
resources:
http-region-health-check:
type: gcp:compute:RegionHealthCheck
properties:
name: http-region-health-check
timeoutSec: 1
checkIntervalSec: 1
httpHealthCheck:
port: '80'
The httpHealthCheck property sends HTTP GET requests to the specified port. By default, it requests the root path ("/") and expects a 200 response. Instances returning error codes are marked unhealthy.
Enable health check logging for diagnostics
When troubleshooting backend failures, teams need visibility into probe results.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const http_region_health_check = new gcp.compute.RegionHealthCheck("http-region-health-check", {
name: "http-region-health-check",
timeoutSec: 1,
checkIntervalSec: 1,
httpHealthCheck: {
port: 80,
},
logConfig: {
enable: true,
},
});
import pulumi
import pulumi_gcp as gcp
http_region_health_check = gcp.compute.RegionHealthCheck("http-region-health-check",
name="http-region-health-check",
timeout_sec=1,
check_interval_sec=1,
http_health_check={
"port": 80,
},
log_config={
"enable": True,
})
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := compute.NewRegionHealthCheck(ctx, "http-region-health-check", &compute.RegionHealthCheckArgs{
Name: pulumi.String("http-region-health-check"),
TimeoutSec: pulumi.Int(1),
CheckIntervalSec: pulumi.Int(1),
HttpHealthCheck: &compute.RegionHealthCheckHttpHealthCheckArgs{
Port: pulumi.Int(80),
},
LogConfig: &compute.RegionHealthCheckLogConfigArgs{
Enable: pulumi.Bool(true),
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var http_region_health_check = new Gcp.Compute.RegionHealthCheck("http-region-health-check", new()
{
Name = "http-region-health-check",
TimeoutSec = 1,
CheckIntervalSec = 1,
HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs
{
Port = 80,
},
LogConfig = new Gcp.Compute.Inputs.RegionHealthCheckLogConfigArgs
{
Enable = true,
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.RegionHealthCheck;
import com.pulumi.gcp.compute.RegionHealthCheckArgs;
import com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;
import com.pulumi.gcp.compute.inputs.RegionHealthCheckLogConfigArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var http_region_health_check = new RegionHealthCheck("http-region-health-check", RegionHealthCheckArgs.builder()
.name("http-region-health-check")
.timeoutSec(1)
.checkIntervalSec(1)
.httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()
.port(80)
.build())
.logConfig(RegionHealthCheckLogConfigArgs.builder()
.enable(true)
.build())
.build());
}
}
resources:
http-region-health-check:
type: gcp:compute:RegionHealthCheck
properties:
name: http-region-health-check
timeoutSec: 1
checkIntervalSec: 1
httpHealthCheck:
port: '80'
logConfig:
enable: true
The logConfig property with enable set to true sends health check results to Cloud Logging. Each probe generates a log entry showing whether the instance responded successfully, helping diagnose intermittent failures or configuration issues.
Configure HTTP checks with custom paths and thresholds
Production health checks often need custom request paths, host headers, and threshold tuning.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const http_region_health_check = new gcp.compute.RegionHealthCheck("http-region-health-check", {
name: "http-region-health-check",
description: "Health check via http",
timeoutSec: 1,
checkIntervalSec: 1,
healthyThreshold: 4,
unhealthyThreshold: 5,
httpHealthCheck: {
portName: "health-check-port",
portSpecification: "USE_NAMED_PORT",
host: "1.2.3.4",
requestPath: "/mypath",
proxyHeader: "NONE",
response: "I AM HEALTHY",
},
});
import pulumi
import pulumi_gcp as gcp
http_region_health_check = gcp.compute.RegionHealthCheck("http-region-health-check",
name="http-region-health-check",
description="Health check via http",
timeout_sec=1,
check_interval_sec=1,
healthy_threshold=4,
unhealthy_threshold=5,
http_health_check={
"port_name": "health-check-port",
"port_specification": "USE_NAMED_PORT",
"host": "1.2.3.4",
"request_path": "/mypath",
"proxy_header": "NONE",
"response": "I AM HEALTHY",
})
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := compute.NewRegionHealthCheck(ctx, "http-region-health-check", &compute.RegionHealthCheckArgs{
Name: pulumi.String("http-region-health-check"),
Description: pulumi.String("Health check via http"),
TimeoutSec: pulumi.Int(1),
CheckIntervalSec: pulumi.Int(1),
HealthyThreshold: pulumi.Int(4),
UnhealthyThreshold: pulumi.Int(5),
HttpHealthCheck: &compute.RegionHealthCheckHttpHealthCheckArgs{
PortName: pulumi.String("health-check-port"),
PortSpecification: pulumi.String("USE_NAMED_PORT"),
Host: pulumi.String("1.2.3.4"),
RequestPath: pulumi.String("/mypath"),
ProxyHeader: pulumi.String("NONE"),
Response: pulumi.String("I AM HEALTHY"),
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var http_region_health_check = new Gcp.Compute.RegionHealthCheck("http-region-health-check", new()
{
Name = "http-region-health-check",
Description = "Health check via http",
TimeoutSec = 1,
CheckIntervalSec = 1,
HealthyThreshold = 4,
UnhealthyThreshold = 5,
HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs
{
PortName = "health-check-port",
PortSpecification = "USE_NAMED_PORT",
Host = "1.2.3.4",
RequestPath = "/mypath",
ProxyHeader = "NONE",
Response = "I AM HEALTHY",
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.RegionHealthCheck;
import com.pulumi.gcp.compute.RegionHealthCheckArgs;
import com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var http_region_health_check = new RegionHealthCheck("http-region-health-check", RegionHealthCheckArgs.builder()
.name("http-region-health-check")
.description("Health check via http")
.timeoutSec(1)
.checkIntervalSec(1)
.healthyThreshold(4)
.unhealthyThreshold(5)
.httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()
.portName("health-check-port")
.portSpecification("USE_NAMED_PORT")
.host("1.2.3.4")
.requestPath("/mypath")
.proxyHeader("NONE")
.response("I AM HEALTHY")
.build())
.build());
}
}
resources:
http-region-health-check:
type: gcp:compute:RegionHealthCheck
properties:
name: http-region-health-check
description: Health check via http
timeoutSec: 1
checkIntervalSec: 1
healthyThreshold: 4
unhealthyThreshold: 5
httpHealthCheck:
portName: health-check-port
portSpecification: USE_NAMED_PORT
host: 1.2.3.4
requestPath: /mypath
proxyHeader: NONE
response: I AM HEALTHY
The requestPath property specifies which endpoint to probe (e.g., “/health” or “/ready”). The host property sets the HTTP Host header. The healthyThreshold and unhealthyThreshold properties control how many consecutive successes or failures trigger state changes. The portSpecification set to “USE_NAMED_PORT” allows referencing ports by name rather than number, useful when port assignments vary across instance groups.
Check gRPC service health with native protocol
Microservices using gRPC expose health check endpoints through the gRPC Health Checking Protocol.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const grpc_region_health_check = new gcp.compute.RegionHealthCheck("grpc-region-health-check", {
name: "grpc-region-health-check",
timeoutSec: 1,
checkIntervalSec: 1,
grpcHealthCheck: {
port: 443,
},
});
import pulumi
import pulumi_gcp as gcp
grpc_region_health_check = gcp.compute.RegionHealthCheck("grpc-region-health-check",
name="grpc-region-health-check",
timeout_sec=1,
check_interval_sec=1,
grpc_health_check={
"port": 443,
})
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := compute.NewRegionHealthCheck(ctx, "grpc-region-health-check", &compute.RegionHealthCheckArgs{
Name: pulumi.String("grpc-region-health-check"),
TimeoutSec: pulumi.Int(1),
CheckIntervalSec: pulumi.Int(1),
GrpcHealthCheck: &compute.RegionHealthCheckGrpcHealthCheckArgs{
Port: pulumi.Int(443),
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var grpc_region_health_check = new Gcp.Compute.RegionHealthCheck("grpc-region-health-check", new()
{
Name = "grpc-region-health-check",
TimeoutSec = 1,
CheckIntervalSec = 1,
GrpcHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckGrpcHealthCheckArgs
{
Port = 443,
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.RegionHealthCheck;
import com.pulumi.gcp.compute.RegionHealthCheckArgs;
import com.pulumi.gcp.compute.inputs.RegionHealthCheckGrpcHealthCheckArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var grpc_region_health_check = new RegionHealthCheck("grpc-region-health-check", RegionHealthCheckArgs.builder()
.name("grpc-region-health-check")
.timeoutSec(1)
.checkIntervalSec(1)
.grpcHealthCheck(RegionHealthCheckGrpcHealthCheckArgs.builder()
.port(443)
.build())
.build());
}
}
resources:
grpc-region-health-check:
type: gcp:compute:RegionHealthCheck
properties:
name: grpc-region-health-check
timeoutSec: 1
checkIntervalSec: 1
grpcHealthCheck:
port: '443'
The grpcHealthCheck property sends gRPC health check RPCs to the specified port. This uses the standard gRPC health checking service, allowing load balancers to verify service readiness without HTTP translation.
Target specific gRPC services by name
When multiple gRPC services run on the same port, health checks can target specific services.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const grpc_region_health_check = new gcp.compute.RegionHealthCheck("grpc-region-health-check", {
name: "grpc-region-health-check",
timeoutSec: 1,
checkIntervalSec: 1,
grpcHealthCheck: {
portName: "health-check-port",
portSpecification: "USE_NAMED_PORT",
grpcServiceName: "testservice",
},
});
import pulumi
import pulumi_gcp as gcp
grpc_region_health_check = gcp.compute.RegionHealthCheck("grpc-region-health-check",
name="grpc-region-health-check",
timeout_sec=1,
check_interval_sec=1,
grpc_health_check={
"port_name": "health-check-port",
"port_specification": "USE_NAMED_PORT",
"grpc_service_name": "testservice",
})
package main
import (
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := compute.NewRegionHealthCheck(ctx, "grpc-region-health-check", &compute.RegionHealthCheckArgs{
Name: pulumi.String("grpc-region-health-check"),
TimeoutSec: pulumi.Int(1),
CheckIntervalSec: pulumi.Int(1),
GrpcHealthCheck: &compute.RegionHealthCheckGrpcHealthCheckArgs{
PortName: pulumi.String("health-check-port"),
PortSpecification: pulumi.String("USE_NAMED_PORT"),
GrpcServiceName: pulumi.String("testservice"),
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var grpc_region_health_check = new Gcp.Compute.RegionHealthCheck("grpc-region-health-check", new()
{
Name = "grpc-region-health-check",
TimeoutSec = 1,
CheckIntervalSec = 1,
GrpcHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckGrpcHealthCheckArgs
{
PortName = "health-check-port",
PortSpecification = "USE_NAMED_PORT",
GrpcServiceName = "testservice",
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.RegionHealthCheck;
import com.pulumi.gcp.compute.RegionHealthCheckArgs;
import com.pulumi.gcp.compute.inputs.RegionHealthCheckGrpcHealthCheckArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var grpc_region_health_check = new RegionHealthCheck("grpc-region-health-check", RegionHealthCheckArgs.builder()
.name("grpc-region-health-check")
.timeoutSec(1)
.checkIntervalSec(1)
.grpcHealthCheck(RegionHealthCheckGrpcHealthCheckArgs.builder()
.portName("health-check-port")
.portSpecification("USE_NAMED_PORT")
.grpcServiceName("testservice")
.build())
.build());
}
}
resources:
grpc-region-health-check:
type: gcp:compute:RegionHealthCheck
properties:
name: grpc-region-health-check
timeoutSec: 1
checkIntervalSec: 1
grpcHealthCheck:
portName: health-check-port
portSpecification: USE_NAMED_PORT
grpcServiceName: testservice
The grpcServiceName property specifies which service to check when multiple services share a port. This allows fine-grained health monitoring of individual microservices in a multi-service deployment.
Beyond these examples
These snippets focus on specific health check features: protocol-specific health checks (TCP, HTTP, HTTPS, HTTP/2, gRPC), threshold tuning and timing configuration, and named ports and custom request/response validation. They’re intentionally minimal rather than full load balancing configurations.
The examples assume pre-existing infrastructure such as a GCP project and region, backend instances or instance groups to monitor, and load balancer configuration (health checks attach to backend services). They focus on configuring the health check rather than provisioning the complete load balancing stack.
To keep things focused, common health check patterns are omitted, including:
- SSL/TLS health checks (sslHealthCheck, grpcTlsHealthCheck)
- Proxy header configuration for client IP preservation
- Response validation with custom strings
- Integration with backend services and load balancers
These omissions are intentional: the goal is to illustrate how each health check protocol is wired, not provide drop-in load balancing modules. See the RegionHealthCheck resource reference for all available configuration options.
Let's configure GCP Regional Health Checks
Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.
Try Pulumi Cloud for FREEFrequently Asked Questions
Configuration & Validation
timeoutSec value cannot be greater than checkIntervalSec. Ensure your timeout is less than or equal to the check interval.timeoutSec and checkIntervalSec default to 5 seconds. The healthyThreshold and unhealthyThreshold both default to 2 consecutive checks.Health Check Types & Protocols
tcpHealthCheck, httpHealthCheck, etc.).request and response fields. For HTTP-based checks, configure requestPath, host, and response fields.grpcHealthCheck for standard gRPC or grpcTlsHealthCheck for gRPC with TLS. Optionally specify grpcServiceName to check a specific service.Port Configuration
port for fixed port numbers (e.g., 80, 443). Use portName with portSpecification: USE_NAMED_PORT to reference a named port defined on your backend service.Immutability & Updates
name, project, and region properties are immutable. Changing any of these requires replacing the resource.Advanced Features
logConfig with enable: true to log health check probe results.Using a different cloud?
Explore networking guides for other cloud providers: