Membership Binding
MembershipBinding is a subresource of a Membership, representing what Fleet Scopes (or other, future Fleet resources) a Membership is bound to. To get more information about MembershipBinding, see:
How-to Guides
Example Usage
Gkehub Membership Binding Basic
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const primary = new gcp.container.Cluster("primary", {
name: "basic-cluster",
location: "us-central1-a",
initialNodeCount: 1,
deletionProtection: true,
network: "default",
subnetwork: "default",
});
const membership = new gcp.gkehub.Membership("membership", {
membershipId: "tf-test-membership_39249",
endpoint: {
gkeCluster: {
resourceLink: pulumi.interpolate`//container.googleapis.com/${primary.id}`,
},
},
}, {
dependsOn: [primary],
});
const scope = new gcp.gkehub.Scope("scope", {scopeId: "tf-test-scope_74391"});
const membershipBinding = new gcp.gkehub.MembershipBinding("membership_binding", {
membershipBindingId: "tf-test-membership-binding_16511",
scope: scope.name,
membershipId: membership.membershipId,
location: "global",
labels: {
keyb: "valueb",
keya: "valuea",
keyc: "valuec",
},
}, {
dependsOn: [
membership,
scope,
],
});
import pulumi
import pulumi_gcp as gcp
primary = gcp.container.Cluster("primary",
name="basic-cluster",
location="us-central1-a",
initial_node_count=1,
deletion_protection=True,
network="default",
subnetwork="default")
membership = gcp.gkehub.Membership("membership",
membership_id="tf-test-membership_39249",
endpoint={
"gke_cluster": {
"resource_link": primary.id.apply(lambda id: f"//container.googleapis.com/{id}"),
},
},
opts = pulumi.ResourceOptions(depends_on=[primary]))
scope = gcp.gkehub.Scope("scope", scope_id="tf-test-scope_74391")
membership_binding = gcp.gkehub.MembershipBinding("membership_binding",
membership_binding_id="tf-test-membership-binding_16511",
scope=scope.name,
membership_id=membership.membership_id,
location="global",
labels={
"keyb": "valueb",
"keya": "valuea",
"keyc": "valuec",
},
opts = pulumi.ResourceOptions(depends_on=[
membership,
scope,
]))
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var primary = new Gcp.Container.Cluster("primary", new()
{
Name = "basic-cluster",
Location = "us-central1-a",
InitialNodeCount = 1,
DeletionProtection = true,
Network = "default",
Subnetwork = "default",
});
var membership = new Gcp.GkeHub.Membership("membership", new()
{
MembershipId = "tf-test-membership_39249",
Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs
{
GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs
{
ResourceLink = primary.Id.Apply(id => $"//container.googleapis.com/{id}"),
},
},
}, new CustomResourceOptions
{
DependsOn =
{
primary,
},
});
var scope = new Gcp.GkeHub.Scope("scope", new()
{
ScopeId = "tf-test-scope_74391",
});
var membershipBinding = new Gcp.GkeHub.MembershipBinding("membership_binding", new()
{
MembershipBindingId = "tf-test-membership-binding_16511",
Scope = scope.Name,
MembershipId = membership.MembershipId,
Location = "global",
Labels =
{
{ "keyb", "valueb" },
{ "keya", "valuea" },
{ "keyc", "valuec" },
},
}, new CustomResourceOptions
{
DependsOn =
{
membership,
scope,
},
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/container"
"github.com/pulumi/pulumi-gcp/sdk/v7/go/gcp/gkehub"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
primary, err := container.NewCluster(ctx, "primary", &container.ClusterArgs{
Name: pulumi.String("basic-cluster"),
Location: pulumi.String("us-central1-a"),
InitialNodeCount: pulumi.Int(1),
DeletionProtection: pulumi.Bool(true),
Network: pulumi.String("default"),
Subnetwork: pulumi.String("default"),
})
if err != nil {
return err
}
membership, err := gkehub.NewMembership(ctx, "membership", &gkehub.MembershipArgs{
MembershipId: pulumi.String("tf-test-membership_39249"),
Endpoint: &gkehub.MembershipEndpointArgs{
GkeCluster: &gkehub.MembershipEndpointGkeClusterArgs{
ResourceLink: primary.ID().ApplyT(func(id string) (string, error) {
return fmt.Sprintf("//container.googleapis.com/%v", id), nil
}).(pulumi.StringOutput),
},
},
}, pulumi.DependsOn([]pulumi.Resource{
primary,
}))
if err != nil {
return err
}
scope, err := gkehub.NewScope(ctx, "scope", &gkehub.ScopeArgs{
ScopeId: pulumi.String("tf-test-scope_74391"),
})
if err != nil {
return err
}
_, err = gkehub.NewMembershipBinding(ctx, "membership_binding", &gkehub.MembershipBindingArgs{
MembershipBindingId: pulumi.String("tf-test-membership-binding_16511"),
Scope: scope.Name,
MembershipId: membership.MembershipId,
Location: pulumi.String("global"),
Labels: pulumi.StringMap{
"keyb": pulumi.String("valueb"),
"keya": pulumi.String("valuea"),
"keyc": pulumi.String("valuec"),
},
}, pulumi.DependsOn([]pulumi.Resource{
membership,
scope,
}))
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.container.Cluster;
import com.pulumi.gcp.container.ClusterArgs;
import com.pulumi.gcp.gkehub.Membership;
import com.pulumi.gcp.gkehub.MembershipArgs;
import com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;
import com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;
import com.pulumi.gcp.gkehub.Scope;
import com.pulumi.gcp.gkehub.ScopeArgs;
import com.pulumi.gcp.gkehub.MembershipBinding;
import com.pulumi.gcp.gkehub.MembershipBindingArgs;
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 primary = new Cluster("primary", ClusterArgs.builder()
.name("basic-cluster")
.location("us-central1-a")
.initialNodeCount(1)
.deletionProtection("true")
.network("default")
.subnetwork("default")
.build());
var membership = new Membership("membership", MembershipArgs.builder()
.membershipId("tf-test-membership_39249")
.endpoint(MembershipEndpointArgs.builder()
.gkeCluster(MembershipEndpointGkeClusterArgs.builder()
.resourceLink(primary.id().applyValue(id -> String.format("//container.googleapis.com/%s", id)))
.build())
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(primary)
.build());
var scope = new Scope("scope", ScopeArgs.builder()
.scopeId("tf-test-scope_74391")
.build());
var membershipBinding = new MembershipBinding("membershipBinding", MembershipBindingArgs.builder()
.membershipBindingId("tf-test-membership-binding_16511")
.scope(scope.name())
.membershipId(membership.membershipId())
.location("global")
.labels(Map.ofEntries(
Map.entry("keyb", "valueb"),
Map.entry("keya", "valuea"),
Map.entry("keyc", "valuec")
))
.build(), CustomResourceOptions.builder()
.dependsOn(
membership,
scope)
.build());
}
}
resources:
primary:
type: gcp:container:Cluster
properties:
name: basic-cluster
location: us-central1-a
initialNodeCount: 1
deletionProtection: 'true'
network: default
subnetwork: default
membership:
type: gcp:gkehub:Membership
properties:
membershipId: tf-test-membership_39249
endpoint:
gkeCluster:
resourceLink: //container.googleapis.com/${primary.id}
options:
dependson:
- ${primary}
scope:
type: gcp:gkehub:Scope
properties:
scopeId: tf-test-scope_74391
membershipBinding:
type: gcp:gkehub:MembershipBinding
name: membership_binding
properties:
membershipBindingId: tf-test-membership-binding_16511
scope: ${scope.name}
membershipId: ${membership.membershipId}
location: global
labels:
keyb: valueb
keya: valuea
keyc: valuec
options:
dependson:
- ${membership}
- ${scope}
Import
MembershipBinding can be imported using any of these accepted formats:
projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/bindings/{{membership_binding_id}}
{{project}}/{{location}}/{{membership_id}}/{{membership_binding_id}}
{{location}}/{{membership_id}}/{{membership_binding_id}}
When using thepulumi import
command, MembershipBinding can be imported using one of the formats above. For example:
$ pulumi import gcp:gkehub/membershipBinding:MembershipBinding default projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/bindings/{{membership_binding_id}}
$ pulumi import gcp:gkehub/membershipBinding:MembershipBinding default {{project}}/{{location}}/{{membership_id}}/{{membership_binding_id}}
$ pulumi import gcp:gkehub/membershipBinding:MembershipBinding default {{location}}/{{membership_id}}/{{membership_binding_id}}
Properties
Time the MembershipBinding was created in UTC.
Time the MembershipBinding was deleted in UTC.
All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
The client-provided identifier of the membership binding.
Id of the membership
The combination of labels configured directly on the resource and default labels configured on the provider.
State of the membership binding resource. Structure is documented below.
Time the MembershipBinding was updated in UTC.