Service

class Service : KotlinCustomResource

Service is a network/api interface that exposes some functionality to clients for consumption over the network. Service typically has one or more Workloads behind it. It registers identified service to the Application.

Example Usage

Apphub Service Basic

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
import * as time from "@pulumi/time";
const application = new gcp.apphub.Application("application", {
location: "us-central1",
applicationId: "example-application-1",
scope: {
type: "REGIONAL",
},
});
const serviceProject = new gcp.organizations.Project("service_project", {
projectId: "project-1",
name: "Service Project",
orgId: "123456789",
billingAccount: "000000-0000000-0000000-000000",
});
// Enable Compute API
const computeServiceProject = new gcp.projects.Service("compute_service_project", {
project: serviceProject.projectId,
service: "compute.googleapis.com",
});
const wait120s = new time.index.Sleep("wait_120s", {createDuration: "120s"}, {
dependsOn: [computeServiceProject],
});
const serviceProjectAttachment = new gcp.apphub.ServiceProjectAttachment("service_project_attachment", {serviceProjectAttachmentId: serviceProject.projectId}, {
dependsOn: [wait120s],
});
// VPC network
const ilbNetwork = new gcp.compute.Network("ilb_network", {
name: "l7-ilb-network",
project: serviceProject.projectId,
autoCreateSubnetworks: false,
}, {
dependsOn: [wait120s],
});
// backend subnet
const ilbSubnet = new gcp.compute.Subnetwork("ilb_subnet", {
name: "l7-ilb-subnet",
project: serviceProject.projectId,
ipCidrRange: "10.0.1.0/24",
region: "us-central1",
network: ilbNetwork.id,
});
// health check
const _default = new gcp.compute.HealthCheck("default", {
name: "l7-ilb-hc",
project: serviceProject.projectId,
checkIntervalSec: 1,
timeoutSec: 1,
tcpHealthCheck: {
port: 80,
},
}, {
dependsOn: [wait120s],
});
// backend service
const backend = new gcp.compute.RegionBackendService("backend", {
name: "l7-ilb-backend-subnet",
project: serviceProject.projectId,
region: "us-central1",
healthChecks: _default.id,
});
// forwarding rule
const forwardingRule = new gcp.compute.ForwardingRule("forwarding_rule", {
name: "l7-ilb-forwarding-rule",
project: serviceProject.projectId,
region: "us-central1",
ipVersion: "IPV4",
loadBalancingScheme: "INTERNAL",
allPorts: true,
backendService: backend.id,
network: ilbNetwork.id,
subnetwork: ilbSubnet.id,
});
// discovered service block
const catalog-service = gcp.apphub.getDiscoveredServiceOutput({
location: "us-central1",
serviceUri: pulumi.interpolate`//compute.googleapis.com/${forwardingRule.id}`,
});
const wait120sForResourceIngestion = new time.index.Sleep("wait_120s_for_resource_ingestion", {createDuration: "120s"}, {
dependsOn: [forwardingRule],
});
const example = new gcp.apphub.Service("example", {
location: "us-central1",
applicationId: application.applicationId,
serviceId: forwardingRule.name,
discoveredService: catalog_service.apply(catalog_service => catalog_service.name),
});
import pulumi
import pulumi_gcp as gcp
import pulumi_time as time
application = gcp.apphub.Application("application",
location="us-central1",
application_id="example-application-1",
scope={
"type": "REGIONAL",
})
service_project = gcp.organizations.Project("service_project",
project_id="project-1",
name="Service Project",
org_id="123456789",
billing_account="000000-0000000-0000000-000000")
# Enable Compute API
compute_service_project = gcp.projects.Service("compute_service_project",
project=service_project.project_id,
service="compute.googleapis.com")
wait120s = time.index.Sleep("wait_120s", create_duration=120s,
opts = pulumi.ResourceOptions(depends_on=[compute_service_project]))
service_project_attachment = gcp.apphub.ServiceProjectAttachment("service_project_attachment", service_project_attachment_id=service_project.project_id,
opts = pulumi.ResourceOptions(depends_on=[wait120s]))
# VPC network
ilb_network = gcp.compute.Network("ilb_network",
name="l7-ilb-network",
project=service_project.project_id,
auto_create_subnetworks=False,
opts = pulumi.ResourceOptions(depends_on=[wait120s]))
# backend subnet
ilb_subnet = gcp.compute.Subnetwork("ilb_subnet",
name="l7-ilb-subnet",
project=service_project.project_id,
ip_cidr_range="10.0.1.0/24",
region="us-central1",
network=ilb_network.id)
# health check
default = gcp.compute.HealthCheck("default",
name="l7-ilb-hc",
project=service_project.project_id,
check_interval_sec=1,
timeout_sec=1,
tcp_health_check={
"port": 80,
},
opts = pulumi.ResourceOptions(depends_on=[wait120s]))
# backend service
backend = gcp.compute.RegionBackendService("backend",
name="l7-ilb-backend-subnet",
project=service_project.project_id,
region="us-central1",
health_checks=default.id)
# forwarding rule
forwarding_rule = gcp.compute.ForwardingRule("forwarding_rule",
name="l7-ilb-forwarding-rule",
project=service_project.project_id,
region="us-central1",
ip_version="IPV4",
load_balancing_scheme="INTERNAL",
all_ports=True,
backend_service=backend.id,
network=ilb_network.id,
subnetwork=ilb_subnet.id)
# discovered service block
catalog_service = gcp.apphub.get_discovered_service_output(location="us-central1",
service_uri=forwarding_rule.id.apply(lambda id: f"//compute.googleapis.com/{id}"))
wait120s_for_resource_ingestion = time.index.Sleep("wait_120s_for_resource_ingestion", create_duration=120s,
opts = pulumi.ResourceOptions(depends_on=[forwarding_rule]))
example = gcp.apphub.Service("example",
location="us-central1",
application_id=application.application_id,
service_id=forwarding_rule.name,
discovered_service=catalog_service.name)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
using Time = Pulumi.Time;
return await Deployment.RunAsync(() =>
{
var application = new Gcp.Apphub.Application("application", new()
{
Location = "us-central1",
ApplicationId = "example-application-1",
Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs
{
Type = "REGIONAL",
},
});
var serviceProject = new Gcp.Organizations.Project("service_project", new()
{
ProjectId = "project-1",
Name = "Service Project",
OrgId = "123456789",
BillingAccount = "000000-0000000-0000000-000000",
});
// Enable Compute API
var computeServiceProject = new Gcp.Projects.Service("compute_service_project", new()
{
Project = serviceProject.ProjectId,
ServiceName = "compute.googleapis.com",
});
var wait120s = new Time.Index.Sleep("wait_120s", new()
{
CreateDuration = "120s",
}, new CustomResourceOptions
{
DependsOn =
{
computeServiceProject,
},
});
var serviceProjectAttachment = new Gcp.Apphub.ServiceProjectAttachment("service_project_attachment", new()
{
ServiceProjectAttachmentId = serviceProject.ProjectId,
}, new CustomResourceOptions
{
DependsOn =
{
wait120s,
},
});
// VPC network
var ilbNetwork = new Gcp.Compute.Network("ilb_network", new()
{
Name = "l7-ilb-network",
Project = serviceProject.ProjectId,
AutoCreateSubnetworks = false,
}, new CustomResourceOptions
{
DependsOn =
{
wait120s,
},
});
// backend subnet
var ilbSubnet = new Gcp.Compute.Subnetwork("ilb_subnet", new()
{
Name = "l7-ilb-subnet",
Project = serviceProject.ProjectId,
IpCidrRange = "10.0.1.0/24",
Region = "us-central1",
Network = ilbNetwork.Id,
});
// health check
var @default = new Gcp.Compute.HealthCheck("default", new()
{
Name = "l7-ilb-hc",
Project = serviceProject.ProjectId,
CheckIntervalSec = 1,
TimeoutSec = 1,
TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs
{
Port = 80,
},
}, new CustomResourceOptions
{
DependsOn =
{
wait120s,
},
});
// backend service
var backend = new Gcp.Compute.RegionBackendService("backend", new()
{
Name = "l7-ilb-backend-subnet",
Project = serviceProject.ProjectId,
Region = "us-central1",
HealthChecks = @default.Id,
});
// forwarding rule
var forwardingRule = new Gcp.Compute.ForwardingRule("forwarding_rule", new()
{
Name = "l7-ilb-forwarding-rule",
Project = serviceProject.ProjectId,
Region = "us-central1",
IpVersion = "IPV4",
LoadBalancingScheme = "INTERNAL",
AllPorts = true,
BackendService = backend.Id,
Network = ilbNetwork.Id,
Subnetwork = ilbSubnet.Id,
});
// discovered service block
var catalog_service = Gcp.Apphub.GetDiscoveredService.Invoke(new()
{
Location = "us-central1",
ServiceUri = $"//compute.googleapis.com/{forwardingRule.Id}",
});
var wait120sForResourceIngestion = new Time.Index.Sleep("wait_120s_for_resource_ingestion", new()
{
CreateDuration = "120s",
}, new CustomResourceOptions
{
DependsOn =
{
forwardingRule,
},
});
var example = new Gcp.Apphub.Service("example", new()
{
Location = "us-central1",
ApplicationId = application.ApplicationId,
ServiceId = forwardingRule.Name,
DiscoveredService = catalog_service.Apply(catalog_service => catalog_service.Apply(getDiscoveredServiceResult => getDiscoveredServiceResult.Name)),
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apphub"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects"
"github.com/pulumi/pulumi-time/sdk/go/time"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
application, err := apphub.NewApplication(ctx, "application", &apphub.ApplicationArgs{
Location: pulumi.String("us-central1"),
ApplicationId: pulumi.String("example-application-1"),
Scope: &apphub.ApplicationScopeArgs{
Type: pulumi.String("REGIONAL"),
},
})
if err != nil {
return err
}
serviceProject, err := organizations.NewProject(ctx, "service_project", &organizations.ProjectArgs{
ProjectId: pulumi.String("project-1"),
Name: pulumi.String("Service Project"),
OrgId: pulumi.String("123456789"),
BillingAccount: pulumi.String("000000-0000000-0000000-000000"),
})
if err != nil {
return err
}
// Enable Compute API
computeServiceProject, err := projects.NewService(ctx, "compute_service_project", &projects.ServiceArgs{
Project: serviceProject.ProjectId,
Service: pulumi.String("compute.googleapis.com"),
})
if err != nil {
return err
}
wait120s, err := time.NewSleep(ctx, "wait_120s", &time.SleepArgs{
CreateDuration: "120s",
}, pulumi.DependsOn([]pulumi.Resource{
computeServiceProject,
}))
if err != nil {
return err
}
_, err = apphub.NewServiceProjectAttachment(ctx, "service_project_attachment", &apphub.ServiceProjectAttachmentArgs{
ServiceProjectAttachmentId: serviceProject.ProjectId,
}, pulumi.DependsOn([]pulumi.Resource{
wait120s,
}))
if err != nil {
return err
}
// VPC network
ilbNetwork, err := compute.NewNetwork(ctx, "ilb_network", &compute.NetworkArgs{
Name: pulumi.String("l7-ilb-network"),
Project: serviceProject.ProjectId,
AutoCreateSubnetworks: pulumi.Bool(false),
}, pulumi.DependsOn([]pulumi.Resource{
wait120s,
}))
if err != nil {
return err
}
// backend subnet
ilbSubnet, err := compute.NewSubnetwork(ctx, "ilb_subnet", &compute.SubnetworkArgs{
Name: pulumi.String("l7-ilb-subnet"),
Project: serviceProject.ProjectId,
IpCidrRange: pulumi.String("10.0.1.0/24"),
Region: pulumi.String("us-central1"),
Network: ilbNetwork.ID(),
})
if err != nil {
return err
}
// health check
_, err = compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{
Name: pulumi.String("l7-ilb-hc"),
Project: serviceProject.ProjectId,
CheckIntervalSec: pulumi.Int(1),
TimeoutSec: pulumi.Int(1),
TcpHealthCheck: &compute.HealthCheckTcpHealthCheckArgs{
Port: pulumi.Int(80),
},
}, pulumi.DependsOn([]pulumi.Resource{
wait120s,
}))
if err != nil {
return err
}
// backend service
backend, err := compute.NewRegionBackendService(ctx, "backend", &compute.RegionBackendServiceArgs{
Name: pulumi.String("l7-ilb-backend-subnet"),
Project: serviceProject.ProjectId,
Region: pulumi.String("us-central1"),
HealthChecks: _default.ID(),
})
if err != nil {
return err
}
// forwarding rule
forwardingRule, err := compute.NewForwardingRule(ctx, "forwarding_rule", &compute.ForwardingRuleArgs{
Name: pulumi.String("l7-ilb-forwarding-rule"),
Project: serviceProject.ProjectId,
Region: pulumi.String("us-central1"),
IpVersion: pulumi.String("IPV4"),
LoadBalancingScheme: pulumi.String("INTERNAL"),
AllPorts: pulumi.Bool(true),
BackendService: backend.ID(),
Network: ilbNetwork.ID(),
Subnetwork: ilbSubnet.ID(),
})
if err != nil {
return err
}
// discovered service block
catalog_service := apphub.GetDiscoveredServiceOutput(ctx, apphub.GetDiscoveredServiceOutputArgs{
Location: pulumi.String("us-central1"),
ServiceUri: forwardingRule.ID().ApplyT(func(id string) (string, error) {
return fmt.Sprintf("//compute.googleapis.com/%v", id), nil
}).(pulumi.StringOutput),
}, nil)
_, err = time.NewSleep(ctx, "wait_120s_for_resource_ingestion", &time.SleepArgs{
CreateDuration: "120s",
}, pulumi.DependsOn([]pulumi.Resource{
forwardingRule,
}))
if err != nil {
return err
}
_, err = apphub.NewService(ctx, "example", &apphub.ServiceArgs{
Location: pulumi.String("us-central1"),
ApplicationId: application.ApplicationId,
ServiceId: forwardingRule.Name,
DiscoveredService: pulumi.String(catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) {
return &catalog_service.Name, nil
}).(pulumi.StringPtrOutput)),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.apphub.Application;
import com.pulumi.gcp.apphub.ApplicationArgs;
import com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;
import com.pulumi.gcp.organizations.Project;
import com.pulumi.gcp.organizations.ProjectArgs;
import com.pulumi.gcp.projects.Service;
import com.pulumi.gcp.projects.ServiceArgs;
import com.pulumi.time.sleep;
import com.pulumi.time.SleepArgs;
import com.pulumi.gcp.apphub.ServiceProjectAttachment;
import com.pulumi.gcp.apphub.ServiceProjectAttachmentArgs;
import com.pulumi.gcp.compute.Network;
import com.pulumi.gcp.compute.NetworkArgs;
import com.pulumi.gcp.compute.Subnetwork;
import com.pulumi.gcp.compute.SubnetworkArgs;
import com.pulumi.gcp.compute.HealthCheck;
import com.pulumi.gcp.compute.HealthCheckArgs;
import com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;
import com.pulumi.gcp.compute.RegionBackendService;
import com.pulumi.gcp.compute.RegionBackendServiceArgs;
import com.pulumi.gcp.compute.ForwardingRule;
import com.pulumi.gcp.compute.ForwardingRuleArgs;
import com.pulumi.gcp.apphub.ApphubFunctions;
import com.pulumi.gcp.apphub.inputs.GetDiscoveredServiceArgs;
import com.pulumi.gcp.apphub.Service;
import com.pulumi.gcp.apphub.ServiceArgs;
import com.pulumi.resources.CustomResourceOptions;
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 application = new Application("application", ApplicationArgs.builder()
.location("us-central1")
.applicationId("example-application-1")
.scope(ApplicationScopeArgs.builder()
.type("REGIONAL")
.build())
.build());
var serviceProject = new Project("serviceProject", ProjectArgs.builder()
.projectId("project-1")
.name("Service Project")
.orgId("123456789")
.billingAccount("000000-0000000-0000000-000000")
.build());
// Enable Compute API
var computeServiceProject = new Service("computeServiceProject", ServiceArgs.builder()
.project(serviceProject.projectId())
.service("compute.googleapis.com")
.build());
var wait120s = new Sleep("wait120s", SleepArgs.builder()
.createDuration("120s")
.build(), CustomResourceOptions.builder()
.dependsOn(computeServiceProject)
.build());
var serviceProjectAttachment = new ServiceProjectAttachment("serviceProjectAttachment", ServiceProjectAttachmentArgs.builder()
.serviceProjectAttachmentId(serviceProject.projectId())
.build(), CustomResourceOptions.builder()
.dependsOn(wait120s)
.build());
// VPC network
var ilbNetwork = new Network("ilbNetwork", NetworkArgs.builder()
.name("l7-ilb-network")
.project(serviceProject.projectId())
.autoCreateSubnetworks(false)
.build(), CustomResourceOptions.builder()
.dependsOn(wait120s)
.build());
// backend subnet
var ilbSubnet = new Subnetwork("ilbSubnet", SubnetworkArgs.builder()
.name("l7-ilb-subnet")
.project(serviceProject.projectId())
.ipCidrRange("10.0.1.0/24")
.region("us-central1")
.network(ilbNetwork.id())
.build());
// health check
var default_ = new HealthCheck("default", HealthCheckArgs.builder()
.name("l7-ilb-hc")
.project(serviceProject.projectId())
.checkIntervalSec(1)
.timeoutSec(1)
.tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()
.port("80")
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(wait120s)
.build());
// backend service
var backend = new RegionBackendService("backend", RegionBackendServiceArgs.builder()
.name("l7-ilb-backend-subnet")
.project(serviceProject.projectId())
.region("us-central1")
.healthChecks(default_.id())
.build());
// forwarding rule
var forwardingRule = new ForwardingRule("forwardingRule", ForwardingRuleArgs.builder()
.name("l7-ilb-forwarding-rule")
.project(serviceProject.projectId())
.region("us-central1")
.ipVersion("IPV4")
.loadBalancingScheme("INTERNAL")
.allPorts(true)
.backendService(backend.id())
.network(ilbNetwork.id())
.subnetwork(ilbSubnet.id())
.build());
// discovered service block
final var catalog-service = ApphubFunctions.getDiscoveredService(GetDiscoveredServiceArgs.builder()
.location("us-central1")
.serviceUri(forwardingRule.id().applyValue(id -> String.format("//compute.googleapis.com/%s", id)))
.build());
var wait120sForResourceIngestion = new Sleep("wait120sForResourceIngestion", SleepArgs.builder()
.createDuration("120s")
.build(), CustomResourceOptions.builder()
.dependsOn(forwardingRule)
.build());
var example = new Service("example", ServiceArgs.builder()
.location("us-central1")
.applicationId(application.applicationId())
.serviceId(forwardingRule.name())
.discoveredService(catalog_service.applyValue(catalog_service -> catalog_service.name()))
.build());
}
}
resources:
application:
type: gcp:apphub:Application
properties:
location: us-central1
applicationId: example-application-1
scope:
type: REGIONAL
serviceProject:
type: gcp:organizations:Project
name: service_project
properties:
projectId: project-1
name: Service Project
orgId: '123456789'
billingAccount: 000000-0000000-0000000-000000
# Enable Compute API
computeServiceProject:
type: gcp:projects:Service
name: compute_service_project
properties:
project: ${serviceProject.projectId}
service: compute.googleapis.com
wait120s:
type: time:sleep
name: wait_120s
properties:
createDuration: 120s
options:
dependson:
- ${computeServiceProject}
serviceProjectAttachment:
type: gcp:apphub:ServiceProjectAttachment
name: service_project_attachment
properties:
serviceProjectAttachmentId: ${serviceProject.projectId}
options:
dependson:
- ${wait120s}
wait120sForResourceIngestion:
type: time:sleep
name: wait_120s_for_resource_ingestion
properties:
createDuration: 120s
options:
dependson:
- ${forwardingRule}
example:
type: gcp:apphub:Service
properties:
location: us-central1
applicationId: ${application.applicationId}
serviceId: ${forwardingRule.name}
discoveredService: ${["catalog-service"].name}
# VPC network
ilbNetwork:
type: gcp:compute:Network
name: ilb_network
properties:
name: l7-ilb-network
project: ${serviceProject.projectId}
autoCreateSubnetworks: false
options:
dependson:
- ${wait120s}
# backend subnet
ilbSubnet:
type: gcp:compute:Subnetwork
name: ilb_subnet
properties:
name: l7-ilb-subnet
project: ${serviceProject.projectId}
ipCidrRange: 10.0.1.0/24
region: us-central1
network: ${ilbNetwork.id}
# forwarding rule
forwardingRule:
type: gcp:compute:ForwardingRule
name: forwarding_rule
properties:
name: l7-ilb-forwarding-rule
project: ${serviceProject.projectId}
region: us-central1
ipVersion: IPV4
loadBalancingScheme: INTERNAL
allPorts: true
backendService: ${backend.id}
network: ${ilbNetwork.id}
subnetwork: ${ilbSubnet.id}
# backend service
backend:
type: gcp:compute:RegionBackendService
properties:
name: l7-ilb-backend-subnet
project: ${serviceProject.projectId}
region: us-central1
healthChecks: ${default.id}
# health check
default:
type: gcp:compute:HealthCheck
properties:
name: l7-ilb-hc
project: ${serviceProject.projectId}
checkIntervalSec: 1
timeoutSec: 1
tcpHealthCheck:
port: '80'
options:
dependson:
- ${wait120s}
variables:
# discovered service block
catalog-service:
fn::invoke:
Function: gcp:apphub:getDiscoveredService
Arguments:
location: us-central1
serviceUri: //compute.googleapis.com/${forwardingRule.id}

Apphub Service Full

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
import * as time from "@pulumi/time";
const application = new gcp.apphub.Application("application", {
location: "us-central1",
applicationId: "example-application-1",
scope: {
type: "REGIONAL",
},
});
const serviceProject = new gcp.organizations.Project("service_project", {
projectId: "project-1",
name: "Service Project",
orgId: "123456789",
billingAccount: "000000-0000000-0000000-000000",
});
// Enable Compute API
const computeServiceProject = new gcp.projects.Service("compute_service_project", {
project: serviceProject.projectId,
service: "compute.googleapis.com",
});
const wait120s = new time.index.Sleep("wait_120s", {createDuration: "120s"}, {
dependsOn: [computeServiceProject],
});
const serviceProjectAttachment = new gcp.apphub.ServiceProjectAttachment("service_project_attachment", {serviceProjectAttachmentId: serviceProject.projectId}, {
dependsOn: [wait120s],
});
// VPC network
const ilbNetwork = new gcp.compute.Network("ilb_network", {
name: "l7-ilb-network",
project: serviceProject.projectId,
autoCreateSubnetworks: false,
}, {
dependsOn: [wait120s],
});
// backend subnet
const ilbSubnet = new gcp.compute.Subnetwork("ilb_subnet", {
name: "l7-ilb-subnet",
project: serviceProject.projectId,
ipCidrRange: "10.0.1.0/24",
region: "us-central1",
network: ilbNetwork.id,
});
// health check
const _default = new gcp.compute.HealthCheck("default", {
name: "l7-ilb-hc",
project: serviceProject.projectId,
checkIntervalSec: 1,
timeoutSec: 1,
tcpHealthCheck: {
port: 80,
},
}, {
dependsOn: [wait120s],
});
// backend service
const backend = new gcp.compute.RegionBackendService("backend", {
name: "l7-ilb-backend-subnet",
project: serviceProject.projectId,
region: "us-central1",
healthChecks: _default.id,
});
// forwarding rule
const forwardingRule = new gcp.compute.ForwardingRule("forwarding_rule", {
name: "l7-ilb-forwarding-rule",
project: serviceProject.projectId,
region: "us-central1",
ipVersion: "IPV4",
loadBalancingScheme: "INTERNAL",
allPorts: true,
backendService: backend.id,
network: ilbNetwork.id,
subnetwork: ilbSubnet.id,
});
// discovered service block
const catalog-service = gcp.apphub.getDiscoveredServiceOutput({
location: "us-central1",
serviceUri: pulumi.interpolate`//compute.googleapis.com/${forwardingRule.id}`,
});
const wait120sForResourceIngestion = new time.index.Sleep("wait_120s_for_resource_ingestion", {createDuration: "120s"}, {
dependsOn: [forwardingRule],
});
const example = new gcp.apphub.Service("example", {
location: "us-central1",
applicationId: application.applicationId,
serviceId: forwardingRule.name,
discoveredService: catalog_service.apply(catalog_service => catalog_service.name),
displayName: "Example Service Full",
description: "Register service for testing",
attributes: {
environment: {
type: "STAGING",
},
criticality: {
type: "MISSION_CRITICAL",
},
businessOwners: [{
displayName: "Alice",
email: "alice@google.com",
}],
developerOwners: [{
displayName: "Bob",
email: "bob@google.com",
}],
operatorOwners: [{
displayName: "Charlie",
email: "charlie@google.com",
}],
},
});
import pulumi
import pulumi_gcp as gcp
import pulumi_time as time
application = gcp.apphub.Application("application",
location="us-central1",
application_id="example-application-1",
scope={
"type": "REGIONAL",
})
service_project = gcp.organizations.Project("service_project",
project_id="project-1",
name="Service Project",
org_id="123456789",
billing_account="000000-0000000-0000000-000000")
# Enable Compute API
compute_service_project = gcp.projects.Service("compute_service_project",
project=service_project.project_id,
service="compute.googleapis.com")
wait120s = time.index.Sleep("wait_120s", create_duration=120s,
opts = pulumi.ResourceOptions(depends_on=[compute_service_project]))
service_project_attachment = gcp.apphub.ServiceProjectAttachment("service_project_attachment", service_project_attachment_id=service_project.project_id,
opts = pulumi.ResourceOptions(depends_on=[wait120s]))
# VPC network
ilb_network = gcp.compute.Network("ilb_network",
name="l7-ilb-network",
project=service_project.project_id,
auto_create_subnetworks=False,
opts = pulumi.ResourceOptions(depends_on=[wait120s]))
# backend subnet
ilb_subnet = gcp.compute.Subnetwork("ilb_subnet",
name="l7-ilb-subnet",
project=service_project.project_id,
ip_cidr_range="10.0.1.0/24",
region="us-central1",
network=ilb_network.id)
# health check
default = gcp.compute.HealthCheck("default",
name="l7-ilb-hc",
project=service_project.project_id,
check_interval_sec=1,
timeout_sec=1,
tcp_health_check={
"port": 80,
},
opts = pulumi.ResourceOptions(depends_on=[wait120s]))
# backend service
backend = gcp.compute.RegionBackendService("backend",
name="l7-ilb-backend-subnet",
project=service_project.project_id,
region="us-central1",
health_checks=default.id)
# forwarding rule
forwarding_rule = gcp.compute.ForwardingRule("forwarding_rule",
name="l7-ilb-forwarding-rule",
project=service_project.project_id,
region="us-central1",
ip_version="IPV4",
load_balancing_scheme="INTERNAL",
all_ports=True,
backend_service=backend.id,
network=ilb_network.id,
subnetwork=ilb_subnet.id)
# discovered service block
catalog_service = gcp.apphub.get_discovered_service_output(location="us-central1",
service_uri=forwarding_rule.id.apply(lambda id: f"//compute.googleapis.com/{id}"))
wait120s_for_resource_ingestion = time.index.Sleep("wait_120s_for_resource_ingestion", create_duration=120s,
opts = pulumi.ResourceOptions(depends_on=[forwarding_rule]))
example = gcp.apphub.Service("example",
location="us-central1",
application_id=application.application_id,
service_id=forwarding_rule.name,
discovered_service=catalog_service.name,
display_name="Example Service Full",
description="Register service for testing",
attributes={
"environment": {
"type": "STAGING",
},
"criticality": {
"type": "MISSION_CRITICAL",
},
"business_owners": [{
"display_name": "Alice",
"email": "alice@google.com",
}],
"developer_owners": [{
"display_name": "Bob",
"email": "bob@google.com",
}],
"operator_owners": [{
"display_name": "Charlie",
"email": "charlie@google.com",
}],
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
using Time = Pulumi.Time;
return await Deployment.RunAsync(() =>
{
var application = new Gcp.Apphub.Application("application", new()
{
Location = "us-central1",
ApplicationId = "example-application-1",
Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs
{
Type = "REGIONAL",
},
});
var serviceProject = new Gcp.Organizations.Project("service_project", new()
{
ProjectId = "project-1",
Name = "Service Project",
OrgId = "123456789",
BillingAccount = "000000-0000000-0000000-000000",
});
// Enable Compute API
var computeServiceProject = new Gcp.Projects.Service("compute_service_project", new()
{
Project = serviceProject.ProjectId,
ServiceName = "compute.googleapis.com",
});
var wait120s = new Time.Index.Sleep("wait_120s", new()
{
CreateDuration = "120s",
}, new CustomResourceOptions
{
DependsOn =
{
computeServiceProject,
},
});
var serviceProjectAttachment = new Gcp.Apphub.ServiceProjectAttachment("service_project_attachment", new()
{
ServiceProjectAttachmentId = serviceProject.ProjectId,
}, new CustomResourceOptions
{
DependsOn =
{
wait120s,
},
});
// VPC network
var ilbNetwork = new Gcp.Compute.Network("ilb_network", new()
{
Name = "l7-ilb-network",
Project = serviceProject.ProjectId,
AutoCreateSubnetworks = false,
}, new CustomResourceOptions
{
DependsOn =
{
wait120s,
},
});
// backend subnet
var ilbSubnet = new Gcp.Compute.Subnetwork("ilb_subnet", new()
{
Name = "l7-ilb-subnet",
Project = serviceProject.ProjectId,
IpCidrRange = "10.0.1.0/24",
Region = "us-central1",
Network = ilbNetwork.Id,
});
// health check
var @default = new Gcp.Compute.HealthCheck("default", new()
{
Name = "l7-ilb-hc",
Project = serviceProject.ProjectId,
CheckIntervalSec = 1,
TimeoutSec = 1,
TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs
{
Port = 80,
},
}, new CustomResourceOptions
{
DependsOn =
{
wait120s,
},
});
// backend service
var backend = new Gcp.Compute.RegionBackendService("backend", new()
{
Name = "l7-ilb-backend-subnet",
Project = serviceProject.ProjectId,
Region = "us-central1",
HealthChecks = @default.Id,
});
// forwarding rule
var forwardingRule = new Gcp.Compute.ForwardingRule("forwarding_rule", new()
{
Name = "l7-ilb-forwarding-rule",
Project = serviceProject.ProjectId,
Region = "us-central1",
IpVersion = "IPV4",
LoadBalancingScheme = "INTERNAL",
AllPorts = true,
BackendService = backend.Id,
Network = ilbNetwork.Id,
Subnetwork = ilbSubnet.Id,
});
// discovered service block
var catalog_service = Gcp.Apphub.GetDiscoveredService.Invoke(new()
{
Location = "us-central1",
ServiceUri = $"//compute.googleapis.com/{forwardingRule.Id}",
});
var wait120sForResourceIngestion = new Time.Index.Sleep("wait_120s_for_resource_ingestion", new()
{
CreateDuration = "120s",
}, new CustomResourceOptions
{
DependsOn =
{
forwardingRule,
},
});
var example = new Gcp.Apphub.Service("example", new()
{
Location = "us-central1",
ApplicationId = application.ApplicationId,
ServiceId = forwardingRule.Name,
DiscoveredService = catalog_service.Apply(catalog_service => catalog_service.Apply(getDiscoveredServiceResult => getDiscoveredServiceResult.Name)),
DisplayName = "Example Service Full",
Description = "Register service for testing",
Attributes = new Gcp.Apphub.Inputs.ServiceAttributesArgs
{
Environment = new Gcp.Apphub.Inputs.ServiceAttributesEnvironmentArgs
{
Type = "STAGING",
},
Criticality = new Gcp.Apphub.Inputs.ServiceAttributesCriticalityArgs
{
Type = "MISSION_CRITICAL",
},
BusinessOwners = new[]
{
new Gcp.Apphub.Inputs.ServiceAttributesBusinessOwnerArgs
{
DisplayName = "Alice",
Email = "alice@google.com",
},
},
DeveloperOwners = new[]
{
new Gcp.Apphub.Inputs.ServiceAttributesDeveloperOwnerArgs
{
DisplayName = "Bob",
Email = "bob@google.com",
},
},
OperatorOwners = new[]
{
new Gcp.Apphub.Inputs.ServiceAttributesOperatorOwnerArgs
{
DisplayName = "Charlie",
Email = "charlie@google.com",
},
},
},
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/apphub"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/compute"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/organizations"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/projects"
"github.com/pulumi/pulumi-time/sdk/go/time"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
application, err := apphub.NewApplication(ctx, "application", &apphub.ApplicationArgs{
Location: pulumi.String("us-central1"),
ApplicationId: pulumi.String("example-application-1"),
Scope: &apphub.ApplicationScopeArgs{
Type: pulumi.String("REGIONAL"),
},
})
if err != nil {
return err
}
serviceProject, err := organizations.NewProject(ctx, "service_project", &organizations.ProjectArgs{
ProjectId: pulumi.String("project-1"),
Name: pulumi.String("Service Project"),
OrgId: pulumi.String("123456789"),
BillingAccount: pulumi.String("000000-0000000-0000000-000000"),
})
if err != nil {
return err
}
// Enable Compute API
computeServiceProject, err := projects.NewService(ctx, "compute_service_project", &projects.ServiceArgs{
Project: serviceProject.ProjectId,
Service: pulumi.String("compute.googleapis.com"),
})
if err != nil {
return err
}
wait120s, err := time.NewSleep(ctx, "wait_120s", &time.SleepArgs{
CreateDuration: "120s",
}, pulumi.DependsOn([]pulumi.Resource{
computeServiceProject,
}))
if err != nil {
return err
}
_, err = apphub.NewServiceProjectAttachment(ctx, "service_project_attachment", &apphub.ServiceProjectAttachmentArgs{
ServiceProjectAttachmentId: serviceProject.ProjectId,
}, pulumi.DependsOn([]pulumi.Resource{
wait120s,
}))
if err != nil {
return err
}
// VPC network
ilbNetwork, err := compute.NewNetwork(ctx, "ilb_network", &compute.NetworkArgs{
Name: pulumi.String("l7-ilb-network"),
Project: serviceProject.ProjectId,
AutoCreateSubnetworks: pulumi.Bool(false),
}, pulumi.DependsOn([]pulumi.Resource{
wait120s,
}))
if err != nil {
return err
}
// backend subnet
ilbSubnet, err := compute.NewSubnetwork(ctx, "ilb_subnet", &compute.SubnetworkArgs{
Name: pulumi.String("l7-ilb-subnet"),
Project: serviceProject.ProjectId,
IpCidrRange: pulumi.String("10.0.1.0/24"),
Region: pulumi.String("us-central1"),
Network: ilbNetwork.ID(),
})
if err != nil {
return err
}
// health check
_, err = compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{
Name: pulumi.String("l7-ilb-hc"),
Project: serviceProject.ProjectId,
CheckIntervalSec: pulumi.Int(1),
TimeoutSec: pulumi.Int(1),
TcpHealthCheck: &compute.HealthCheckTcpHealthCheckArgs{
Port: pulumi.Int(80),
},
}, pulumi.DependsOn([]pulumi.Resource{
wait120s,
}))
if err != nil {
return err
}
// backend service
backend, err := compute.NewRegionBackendService(ctx, "backend", &compute.RegionBackendServiceArgs{
Name: pulumi.String("l7-ilb-backend-subnet"),
Project: serviceProject.ProjectId,
Region: pulumi.String("us-central1"),
HealthChecks: _default.ID(),
})
if err != nil {
return err
}
// forwarding rule
forwardingRule, err := compute.NewForwardingRule(ctx, "forwarding_rule", &compute.ForwardingRuleArgs{
Name: pulumi.String("l7-ilb-forwarding-rule"),
Project: serviceProject.ProjectId,
Region: pulumi.String("us-central1"),
IpVersion: pulumi.String("IPV4"),
LoadBalancingScheme: pulumi.String("INTERNAL"),
AllPorts: pulumi.Bool(true),
BackendService: backend.ID(),
Network: ilbNetwork.ID(),
Subnetwork: ilbSubnet.ID(),
})
if err != nil {
return err
}
// discovered service block
catalog_service := apphub.GetDiscoveredServiceOutput(ctx, apphub.GetDiscoveredServiceOutputArgs{
Location: pulumi.String("us-central1"),
ServiceUri: forwardingRule.ID().ApplyT(func(id string) (string, error) {
return fmt.Sprintf("//compute.googleapis.com/%v", id), nil
}).(pulumi.StringOutput),
}, nil)
_, err = time.NewSleep(ctx, "wait_120s_for_resource_ingestion", &time.SleepArgs{
CreateDuration: "120s",
}, pulumi.DependsOn([]pulumi.Resource{
forwardingRule,
}))
if err != nil {
return err
}
_, err = apphub.NewService(ctx, "example", &apphub.ServiceArgs{
Location: pulumi.String("us-central1"),
ApplicationId: application.ApplicationId,
ServiceId: forwardingRule.Name,
DiscoveredService: pulumi.String(catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) {
return &catalog_service.Name, nil
}).(pulumi.StringPtrOutput)),
DisplayName: pulumi.String("Example Service Full"),
Description: pulumi.String("Register service for testing"),
Attributes: &apphub.ServiceAttributesArgs{
Environment: &apphub.ServiceAttributesEnvironmentArgs{
Type: pulumi.String("STAGING"),
},
Criticality: &apphub.ServiceAttributesCriticalityArgs{
Type: pulumi.String("MISSION_CRITICAL"),
},
BusinessOwners: apphub.ServiceAttributesBusinessOwnerArray{
&apphub.ServiceAttributesBusinessOwnerArgs{
DisplayName: pulumi.String("Alice"),
Email: pulumi.String("alice@google.com"),
},
},
DeveloperOwners: apphub.ServiceAttributesDeveloperOwnerArray{
&apphub.ServiceAttributesDeveloperOwnerArgs{
DisplayName: pulumi.String("Bob"),
Email: pulumi.String("bob@google.com"),
},
},
OperatorOwners: apphub.ServiceAttributesOperatorOwnerArray{
&apphub.ServiceAttributesOperatorOwnerArgs{
DisplayName: pulumi.String("Charlie"),
Email: pulumi.String("charlie@google.com"),
},
},
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.apphub.Application;
import com.pulumi.gcp.apphub.ApplicationArgs;
import com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;
import com.pulumi.gcp.organizations.Project;
import com.pulumi.gcp.organizations.ProjectArgs;
import com.pulumi.gcp.projects.Service;
import com.pulumi.gcp.projects.ServiceArgs;
import com.pulumi.time.sleep;
import com.pulumi.time.SleepArgs;
import com.pulumi.gcp.apphub.ServiceProjectAttachment;
import com.pulumi.gcp.apphub.ServiceProjectAttachmentArgs;
import com.pulumi.gcp.compute.Network;
import com.pulumi.gcp.compute.NetworkArgs;
import com.pulumi.gcp.compute.Subnetwork;
import com.pulumi.gcp.compute.SubnetworkArgs;
import com.pulumi.gcp.compute.HealthCheck;
import com.pulumi.gcp.compute.HealthCheckArgs;
import com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;
import com.pulumi.gcp.compute.RegionBackendService;
import com.pulumi.gcp.compute.RegionBackendServiceArgs;
import com.pulumi.gcp.compute.ForwardingRule;
import com.pulumi.gcp.compute.ForwardingRuleArgs;
import com.pulumi.gcp.apphub.ApphubFunctions;
import com.pulumi.gcp.apphub.inputs.GetDiscoveredServiceArgs;
import com.pulumi.gcp.apphub.Service;
import com.pulumi.gcp.apphub.ServiceArgs;
import com.pulumi.gcp.apphub.inputs.ServiceAttributesArgs;
import com.pulumi.gcp.apphub.inputs.ServiceAttributesEnvironmentArgs;
import com.pulumi.gcp.apphub.inputs.ServiceAttributesCriticalityArgs;
import com.pulumi.resources.CustomResourceOptions;
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 application = new Application("application", ApplicationArgs.builder()
.location("us-central1")
.applicationId("example-application-1")
.scope(ApplicationScopeArgs.builder()
.type("REGIONAL")
.build())
.build());
var serviceProject = new Project("serviceProject", ProjectArgs.builder()
.projectId("project-1")
.name("Service Project")
.orgId("123456789")
.billingAccount("000000-0000000-0000000-000000")
.build());
// Enable Compute API
var computeServiceProject = new Service("computeServiceProject", ServiceArgs.builder()
.project(serviceProject.projectId())
.service("compute.googleapis.com")
.build());
var wait120s = new Sleep("wait120s", SleepArgs.builder()
.createDuration("120s")
.build(), CustomResourceOptions.builder()
.dependsOn(computeServiceProject)
.build());
var serviceProjectAttachment = new ServiceProjectAttachment("serviceProjectAttachment", ServiceProjectAttachmentArgs.builder()
.serviceProjectAttachmentId(serviceProject.projectId())
.build(), CustomResourceOptions.builder()
.dependsOn(wait120s)
.build());
// VPC network
var ilbNetwork = new Network("ilbNetwork", NetworkArgs.builder()
.name("l7-ilb-network")
.project(serviceProject.projectId())
.autoCreateSubnetworks(false)
.build(), CustomResourceOptions.builder()
.dependsOn(wait120s)
.build());
// backend subnet
var ilbSubnet = new Subnetwork("ilbSubnet", SubnetworkArgs.builder()
.name("l7-ilb-subnet")
.project(serviceProject.projectId())
.ipCidrRange("10.0.1.0/24")
.region("us-central1")
.network(ilbNetwork.id())
.build());
// health check
var default_ = new HealthCheck("default", HealthCheckArgs.builder()
.name("l7-ilb-hc")
.project(serviceProject.projectId())
.checkIntervalSec(1)
.timeoutSec(1)
.tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()
.port("80")
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(wait120s)
.build());
// backend service
var backend = new RegionBackendService("backend", RegionBackendServiceArgs.builder()
.name("l7-ilb-backend-subnet")
.project(serviceProject.projectId())
.region("us-central1")
.healthChecks(default_.id())
.build());
// forwarding rule
var forwardingRule = new ForwardingRule("forwardingRule", ForwardingRuleArgs.builder()
.name("l7-ilb-forwarding-rule")
.project(serviceProject.projectId())
.region("us-central1")
.ipVersion("IPV4")
.loadBalancingScheme("INTERNAL")
.allPorts(true)
.backendService(backend.id())
.network(ilbNetwork.id())
.subnetwork(ilbSubnet.id())
.build());
// discovered service block
final var catalog-service = ApphubFunctions.getDiscoveredService(GetDiscoveredServiceArgs.builder()
.location("us-central1")
.serviceUri(forwardingRule.id().applyValue(id -> String.format("//compute.googleapis.com/%s", id)))
.build());
var wait120sForResourceIngestion = new Sleep("wait120sForResourceIngestion", SleepArgs.builder()
.createDuration("120s")
.build(), CustomResourceOptions.builder()
.dependsOn(forwardingRule)
.build());
var example = new Service("example", ServiceArgs.builder()
.location("us-central1")
.applicationId(application.applicationId())
.serviceId(forwardingRule.name())
.discoveredService(catalog_service.applyValue(catalog_service -> catalog_service.name()))
.displayName("Example Service Full")
.description("Register service for testing")
.attributes(ServiceAttributesArgs.builder()
.environment(ServiceAttributesEnvironmentArgs.builder()
.type("STAGING")
.build())
.criticality(ServiceAttributesCriticalityArgs.builder()
.type("MISSION_CRITICAL")
.build())
.businessOwners(ServiceAttributesBusinessOwnerArgs.builder()
.displayName("Alice")
.email("alice@google.com")
.build())
.developerOwners(ServiceAttributesDeveloperOwnerArgs.builder()
.displayName("Bob")
.email("bob@google.com")
.build())
.operatorOwners(ServiceAttributesOperatorOwnerArgs.builder()
.displayName("Charlie")
.email("charlie@google.com")
.build())
.build())
.build());
}
}
resources:
application:
type: gcp:apphub:Application
properties:
location: us-central1
applicationId: example-application-1
scope:
type: REGIONAL
serviceProject:
type: gcp:organizations:Project
name: service_project
properties:
projectId: project-1
name: Service Project
orgId: '123456789'
billingAccount: 000000-0000000-0000000-000000
# Enable Compute API
computeServiceProject:
type: gcp:projects:Service
name: compute_service_project
properties:
project: ${serviceProject.projectId}
service: compute.googleapis.com
wait120s:
type: time:sleep
name: wait_120s
properties:
createDuration: 120s
options:
dependson:
- ${computeServiceProject}
serviceProjectAttachment:
type: gcp:apphub:ServiceProjectAttachment
name: service_project_attachment
properties:
serviceProjectAttachmentId: ${serviceProject.projectId}
options:
dependson:
- ${wait120s}
wait120sForResourceIngestion:
type: time:sleep
name: wait_120s_for_resource_ingestion
properties:
createDuration: 120s
options:
dependson:
- ${forwardingRule}
example:
type: gcp:apphub:Service
properties:
location: us-central1
applicationId: ${application.applicationId}
serviceId: ${forwardingRule.name}
discoveredService: ${["catalog-service"].name}
displayName: Example Service Full
description: Register service for testing
attributes:
environment:
type: STAGING
criticality:
type: MISSION_CRITICAL
businessOwners:
- displayName: Alice
email: alice@google.com
developerOwners:
- displayName: Bob
email: bob@google.com
operatorOwners:
- displayName: Charlie
email: charlie@google.com
# VPC network
ilbNetwork:
type: gcp:compute:Network
name: ilb_network
properties:
name: l7-ilb-network
project: ${serviceProject.projectId}
autoCreateSubnetworks: false
options:
dependson:
- ${wait120s}
# backend subnet
ilbSubnet:
type: gcp:compute:Subnetwork
name: ilb_subnet
properties:
name: l7-ilb-subnet
project: ${serviceProject.projectId}
ipCidrRange: 10.0.1.0/24
region: us-central1
network: ${ilbNetwork.id}
# forwarding rule
forwardingRule:
type: gcp:compute:ForwardingRule
name: forwarding_rule
properties:
name: l7-ilb-forwarding-rule
project: ${serviceProject.projectId}
region: us-central1
ipVersion: IPV4
loadBalancingScheme: INTERNAL
allPorts: true
backendService: ${backend.id}
network: ${ilbNetwork.id}
subnetwork: ${ilbSubnet.id}
# backend service
backend:
type: gcp:compute:RegionBackendService
properties:
name: l7-ilb-backend-subnet
project: ${serviceProject.projectId}
region: us-central1
healthChecks: ${default.id}
# health check
default:
type: gcp:compute:HealthCheck
properties:
name: l7-ilb-hc
project: ${serviceProject.projectId}
checkIntervalSec: 1
timeoutSec: 1
tcpHealthCheck:
port: '80'
options:
dependson:
- ${wait120s}
variables:
# discovered service block
catalog-service:
fn::invoke:
Function: gcp:apphub:getDiscoveredService
Arguments:
location: us-central1
serviceUri: //compute.googleapis.com/${forwardingRule.id}

Import

Service can be imported using any of these accepted formats:

  • projects/{{project}}/locations/{{location}}/applications/{{application_id}}/services/{{service_id}}

  • {{project}}/{{location}}/{{application_id}}/{{service_id}}

  • {{location}}/{{application_id}}/{{service_id}} When using the pulumi import command, Service can be imported using one of the formats above. For example:

$ pulumi import gcp:apphub/service:Service default projects/{{project}}/locations/{{location}}/applications/{{application_id}}/services/{{service_id}}
$ pulumi import gcp:apphub/service:Service default {{project}}/{{location}}/{{application_id}}/{{service_id}}
$ pulumi import gcp:apphub/service:Service default {{location}}/{{application_id}}/{{service_id}}

Properties

Link copied to clipboard
val applicationId: Output<String>

Part of parent. Full resource name of a parent Application. Example: projects/{HOST_PROJECT_ID}/locations/{LOCATION}/applications/{APPLICATION_ID}

Link copied to clipboard

Consumer provided attributes. Structure is documented below.

Link copied to clipboard
val createTime: Output<String>

Output only. Create time.

Link copied to clipboard
val description: Output<String>?

User-defined description of a Service.

Link copied to clipboard

Immutable. The resource name of the original discovered service.

Link copied to clipboard
val displayName: Output<String>?

User-defined name for the Service.

Link copied to clipboard
val id: Output<String>
Link copied to clipboard
val location: Output<String>

Part of parent. Full resource name of a parent Application. Example: projects/{HOST_PROJECT_ID}/locations/{LOCATION}/applications/{APPLICATION_ID}

Link copied to clipboard
val name: Output<String>

Identifier. The resource name of a Service. Format: "projects/{host-project-id}/locations/{location}/applications/{application-id}/services/{service-id}"

Link copied to clipboard
val project: Output<String>

The ID of the project in which the resource belongs. If it is not provided, the provider project is used.

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val serviceId: Output<String>

The Service identifier.

Link copied to clipboard

Properties of an underlying cloud resource that can comprise a Service. Structure is documented below.

Link copied to clipboard

Reference to an underlying networking resource that can comprise a Service. Structure is documented below.

Link copied to clipboard
val state: Output<String>

Output only. Service state. Possible values: STATE_UNSPECIFIED CREATING ACTIVE DELETING DETACHED

Link copied to clipboard
val uid: Output<String>

Output only. A universally unique identifier (UUID) for the Service in the UUID4 format.

Link copied to clipboard
val updateTime: Output<String>

Output only. Update time.

Link copied to clipboard
val urn: Output<String>