Bare Metal Cluster
Example Usage
Gkeonprem Bare Metal Cluster Basic
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.gkeonprem.BareMetalCluster;
import com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;
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 cluster_basic = new BareMetalCluster("cluster-basic", BareMetalClusterArgs.builder()
.location("us-west1")
.adminClusterMembership("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test")
.bareMetalVersion("1.12.3")
.networkConfig(BareMetalClusterNetworkConfigArgs.builder()
.islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()
.serviceAddressCidrBlocks("172.26.0.0/16")
.podAddressCidrBlocks("10.240.0.0/13")
.build())
.build())
.controlPlane(BareMetalClusterControlPlaneArgs.builder()
.controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()
.nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()
.labels()
.operatingSystem("LINUX")
.nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()
.labels()
.nodeIp("10.200.0.9")
.build())
.build())
.build())
.build())
.loadBalancer(BareMetalClusterLoadBalancerArgs.builder()
.portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()
.controlPlaneLoadBalancerPort(443)
.build())
.vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()
.controlPlaneVip("10.200.0.13")
.ingressVip("10.200.0.14")
.build())
.metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()
.addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()
.pool("pool1")
.addresses(
"10.200.0.14/32",
"10.200.0.15/32",
"10.200.0.16/32",
"10.200.0.17/32",
"10.200.0.18/32",
"fd00:1::f/128",
"fd00:1::10/128",
"fd00:1::11/128",
"fd00:1::12/128")
.avoidBuggyIps(true)
.manualAssign(true)
.build())
.build())
.build())
.storage(BareMetalClusterStorageArgs.builder()
.lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()
.lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()
.path("/mnt/localpv-share")
.storageClass("local-shared")
.build())
.sharedPathPvCount(5)
.build())
.lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()
.path("/mnt/localpv-disk")
.storageClass("local-disks")
.build())
.build())
.securityConfig(BareMetalClusterSecurityConfigArgs.builder()
.authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()
.adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()
.username("admin@hashicorptest.com")
.build())
.build())
.build())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
}
}
Gkeonprem Bare Metal Cluster Manuallb
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.gkeonprem.BareMetalCluster;
import com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerManualLbConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterBinaryAuthorizationArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterUpgradePolicyArgs;
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 cluster_manuallb = new BareMetalCluster("cluster-manuallb", BareMetalClusterArgs.builder()
.location("us-west1")
.adminClusterMembership("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test")
.bareMetalVersion("1.12.3")
.networkConfig(BareMetalClusterNetworkConfigArgs.builder()
.islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()
.serviceAddressCidrBlocks("172.26.0.0/16")
.podAddressCidrBlocks("10.240.0.0/13")
.build())
.build())
.controlPlane(BareMetalClusterControlPlaneArgs.builder()
.controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()
.nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()
.labels()
.operatingSystem("LINUX")
.nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()
.labels()
.nodeIp("10.200.0.9")
.build())
.build())
.build())
.build())
.loadBalancer(BareMetalClusterLoadBalancerArgs.builder()
.portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()
.controlPlaneLoadBalancerPort(443)
.build())
.vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()
.controlPlaneVip("10.200.0.13")
.ingressVip("10.200.0.14")
.build())
.manualLbConfig(BareMetalClusterLoadBalancerManualLbConfigArgs.builder()
.enabled(true)
.build())
.build())
.storage(BareMetalClusterStorageArgs.builder()
.lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()
.lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()
.path("/mnt/localpv-share")
.storageClass("local-shared")
.build())
.sharedPathPvCount(5)
.build())
.lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()
.path("/mnt/localpv-disk")
.storageClass("local-disks")
.build())
.build())
.securityConfig(BareMetalClusterSecurityConfigArgs.builder()
.authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()
.adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()
.username("admin@hashicorptest.com")
.build())
.build())
.build())
.binaryAuthorization(BareMetalClusterBinaryAuthorizationArgs.builder()
.evaluationMode("DISABLED")
.build())
.upgradePolicy(BareMetalClusterUpgradePolicyArgs.builder()
.policy("SERIAL")
.build())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
}
}
Gkeonprem Bare Metal Cluster Bgplb
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.gkeonprem.BareMetalCluster;
import com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigSrIovConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterProxyArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterClusterOperationsArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterMaintenanceConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNodeConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNodeAccessConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterOsEnvironmentConfigArgs;
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 cluster_bgplb = new BareMetalCluster("cluster-bgplb", BareMetalClusterArgs.builder()
.location("us-west1")
.adminClusterMembership("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test")
.bareMetalVersion("1.12.3")
.networkConfig(BareMetalClusterNetworkConfigArgs.builder()
.islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()
.serviceAddressCidrBlocks("172.26.0.0/16")
.podAddressCidrBlocks("10.240.0.0/13")
.build())
.advancedNetworking(true)
.multipleNetworkInterfacesConfig(BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs.builder()
.enabled(true)
.build())
.srIovConfig(BareMetalClusterNetworkConfigSrIovConfigArgs.builder()
.enabled(true)
.build())
.build())
.controlPlane(BareMetalClusterControlPlaneArgs.builder()
.controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()
.nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()
.labels()
.operatingSystem("LINUX")
.nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()
.labels()
.nodeIp("10.200.0.9")
.build())
.taints(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs.builder()
.key("test-key")
.value("test-value")
.effect("NO_EXECUTE")
.build())
.build())
.build())
.apiServerArgs(BareMetalClusterControlPlaneApiServerArgArgs.builder()
.argument("test-argument")
.value("test-value")
.build())
.build())
.loadBalancer(BareMetalClusterLoadBalancerArgs.builder()
.portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()
.controlPlaneLoadBalancerPort(443)
.build())
.vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()
.controlPlaneVip("10.200.0.13")
.ingressVip("10.200.0.14")
.build())
.bgpLbConfig(BareMetalClusterLoadBalancerBgpLbConfigArgs.builder()
.asn(123456)
.bgpPeerConfigs(BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs.builder()
.asn(123457)
.ipAddress("10.0.0.1")
.controlPlaneNodes("test-node")
.build())
.addressPools(BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs.builder()
.pool("pool1")
.addresses(
"10.200.0.14/32",
"10.200.0.15/32",
"10.200.0.16/32",
"10.200.0.17/32",
"10.200.0.18/32",
"fd00:1::f/128",
"fd00:1::10/128",
"fd00:1::11/128",
"fd00:1::12/128")
.build())
.loadBalancerNodePoolConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs.builder()
.nodePoolConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs.builder()
.labels()
.operatingSystem("LINUX")
.nodeConfigs(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs.builder()
.labels()
.nodeIp("10.200.0.9")
.build())
.taints(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs.builder()
.key("test-key")
.value("test-value")
.effect("NO_EXECUTE")
.build())
.kubeletConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs.builder()
.registryPullQps(10)
.registryBurst(12)
.serializeImagePullsDisabled(true)
.build())
.build())
.build())
.build())
.build())
.storage(BareMetalClusterStorageArgs.builder()
.lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()
.lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()
.path("/mnt/localpv-share")
.storageClass("local-shared")
.build())
.sharedPathPvCount(5)
.build())
.lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()
.path("/mnt/localpv-disk")
.storageClass("local-disks")
.build())
.build())
.securityConfig(BareMetalClusterSecurityConfigArgs.builder()
.authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()
.adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()
.username("admin@hashicorptest.com")
.build())
.build())
.build())
.proxy(BareMetalClusterProxyArgs.builder()
.uri("http://test-domain/test")
.noProxies("127.0.0.1")
.build())
.clusterOperations(BareMetalClusterClusterOperationsArgs.builder()
.enableApplicationLogs(true)
.build())
.maintenanceConfig(BareMetalClusterMaintenanceConfigArgs.builder()
.maintenanceAddressCidrBlocks("192.168.0.1/20")
.build())
.nodeConfig(BareMetalClusterNodeConfigArgs.builder()
.maxPodsPerNode(10)
.containerRuntime("CONTAINERD")
.build())
.nodeAccessConfig(BareMetalClusterNodeAccessConfigArgs.builder()
.loginUser("test@example.com")
.build())
.osEnvironmentConfig(BareMetalClusterOsEnvironmentConfigArgs.builder()
.packageRepoExcluded(true)
.build())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
}
}
Import
BareMetalCluster can be imported using any of these accepted formats
$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default projects/{{project}}/locations/{{location}}/bareMetalClusters/{{name}}
$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default {{project}}/{{location}}/{{name}}
$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default {{location}}/{{name}}
Properties
The Admin Cluster this Bare Metal User Cluster belongs to. This is the full resource name of the Admin Cluster's hub membership.
Annotations on the Bare Metal User Cluster. This field has the same restrictions as Kubernetes annotations. The total size of all keys and values combined is limited to 256k. Key can have 2 segments: prefix (optional) and name (required), separated by a slash (/). Prefix must be a DNS subdomain. Name must be 63 characters or less, begin and end with alphanumerics, with dashes (-), underscores (_), dots (.), and alphanumerics between.
A human readable description of this Bare Metal User Cluster.
Binary Authorization related configurations. Structure is documented below.
Specifies the User Cluster's observability infrastructure. Structure is documented below.
Specifies the control plane configuration. Structure is documented below.
The time the cluster was created, in RFC3339 text format.
The time the cluster was deleted, in RFC3339 text format.
A human readable description of this Bare Metal User Cluster.
This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. Allows clients to perform consistent read-modify-writes through optimistic concurrency control.
Fleet related configuration. Fleets are a Google Cloud concept for logically organizing clusters, letting you use and manage multi-cluster capabilities and apply consistent policies across your systems. See Anthos Fleets for more details on Anthos multi-cluster capabilities using Fleets. Structure is documented below.
Specifies the load balancer configuration. Structure is documented below.
The object name of the Bare Metal Cluster custom resource on the associated admin cluster. This field is used to support conflicting names when enrolling existing clusters to the API. When used as a part of cluster enrollment, this field will differ from the ID in the resource name. For new clusters, this field will match the user provided cluster ID and be visible in the last component of the resource name. It is not modifiable. All users should use this name to access their cluster using gkectl or kubectl and should expect to see the local name when viewing admin cluster controller logs.
Specifies the workload node configurations. Structure is documented below.
Network configuration. Structure is documented below.
Specifies the node access related settings for the bare metal user cluster. Structure is documented below.
Specifies the workload node configurations. Structure is documented below.
OS environment related configurations. Structure is documented below.
Specifies the cluster proxy configuration. Structure is documented below.
If set, there are currently changes in flight to the Bare Metal User Cluster.
Specifies the security related settings for the Bare Metal User Cluster. Structure is documented below.
(Output) Specifies the detailed validation check status Structure is documented below.
Specifies the cluster storage configuration. Structure is documented below.
The time the cluster was last updated, in RFC3339 text format.
The cluster upgrade policy. Structure is documented below.
Specifies the security related settings for the Bare Metal User Cluster. Structure is documented below.