Edge Kubernetes
This resource will help you to manage a Edge Kubernetes Cluster in Alibaba Cloud Kubernetes Service, see What is edge kubernetes.
NOTE: Kubernetes cluster only supports VPC network and it can access internet while creating kubernetes cluster. A Nat Gateway and configuring a SNAT for it can ensure one VPC network access internet. If there is no nat gateway in the VPC, you can set
new_nat_gatewayto "true" to create one automatically. NOTE: Creating kubernetes cluster need to install several packages and it will cost about 15 minutes. Please be patient. NOTE: The provider supports to download kube config, client certificate, client key and cluster ca certificate after creating cluster successfully, and you can put them into the specified location, like '~/.kube/config'. NOTE: The provider supports disabling internet load balancer for API Server by settingfalsetoslb_internet_enabled. NOTE: If you want to manage Kubernetes, you can use Kubernetes Provider. NOTE: Available since v1.103.0. NOTE: From version 1.185.0+, support new fieldscluster_spec,runtimeandload_balancer_spec.
Example Usage
Basic Usage
import * as pulumi from "@pulumi/pulumi";
import * as alicloud from "@pulumi/alicloud";
const config = new pulumi.Config();
const name = config.get("name") || "tf-example";
const default = alicloud.getZones({
availableResourceCreation: "VSwitch",
});
const defaultGetInstanceTypes = _default.then(_default => alicloud.ecs.getInstanceTypes({
availabilityZone: _default.zones?.[0]?.id,
cpuCoreCount: 4,
memorySize: 8,
kubernetesNodeRole: "Master",
}));
const defaultNetwork = new alicloud.vpc.Network("default", {
vpcName: name,
cidrBlock: "10.4.0.0/16",
});
const defaultSwitch = new alicloud.vpc.Switch("default", {
vswitchName: name,
cidrBlock: "10.4.0.0/24",
vpcId: defaultNetwork.id,
zoneId: _default.then(_default => _default.zones?.[0]?.id),
});
const defaultEdgeKubernetes = new alicloud.cs.EdgeKubernetes("default", {
namePrefix: name,
workerVswitchIds: [defaultSwitch.id],
workerInstanceTypes: [defaultGetInstanceTypes.then(defaultGetInstanceTypes => defaultGetInstanceTypes.instanceTypes?.[0]?.id)],
version: "1.26.3-aliyun.1",
workerNumber: 1,
password: "Test12345",
podCidr: "10.99.0.0/16",
serviceCidr: "172.16.0.0/16",
workerInstanceChargeType: "PostPaid",
newNatGateway: true,
nodeCidrMask: 24,
installCloudMonitor: true,
slbInternetEnabled: true,
isEnterpriseSecurityGroup: true,
workerDataDisks: [{
category: "cloud_ssd",
size: "200",
encrypted: "false",
}],
});import pulumi
import pulumi_alicloud as alicloud
config = pulumi.Config()
name = config.get("name")
if name is None:
name = "tf-example"
default = alicloud.get_zones(available_resource_creation="VSwitch")
default_get_instance_types = alicloud.ecs.get_instance_types(availability_zone=default.zones[0].id,
cpu_core_count=4,
memory_size=8,
kubernetes_node_role="Master")
default_network = alicloud.vpc.Network("default",
vpc_name=name,
cidr_block="10.4.0.0/16")
default_switch = alicloud.vpc.Switch("default",
vswitch_name=name,
cidr_block="10.4.0.0/24",
vpc_id=default_network.id,
zone_id=default.zones[0].id)
default_edge_kubernetes = alicloud.cs.EdgeKubernetes("default",
name_prefix=name,
worker_vswitch_ids=[default_switch.id],
worker_instance_types=[default_get_instance_types.instance_types[0].id],
version="1.26.3-aliyun.1",
worker_number=1,
password="Test12345",
pod_cidr="10.99.0.0/16",
service_cidr="172.16.0.0/16",
worker_instance_charge_type="PostPaid",
new_nat_gateway=True,
node_cidr_mask=24,
install_cloud_monitor=True,
slb_internet_enabled=True,
is_enterprise_security_group=True,
worker_data_disks=[alicloud.cs.EdgeKubernetesWorkerDataDiskArgs(
category="cloud_ssd",
size="200",
encrypted="false",
)])using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;
return await Deployment.RunAsync(() =>
{
var config = new Config();
var name = config.Get("name") ?? "tf-example";
var @default = AliCloud.GetZones.Invoke(new()
{
AvailableResourceCreation = "VSwitch",
});
var defaultGetInstanceTypes = AliCloud.Ecs.GetInstanceTypes.Invoke(new()
{
AvailabilityZone = @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id),
CpuCoreCount = 4,
MemorySize = 8,
KubernetesNodeRole = "Master",
});
var defaultNetwork = new AliCloud.Vpc.Network("default", new()
{
VpcName = name,
CidrBlock = "10.4.0.0/16",
});
var defaultSwitch = new AliCloud.Vpc.Switch("default", new()
{
VswitchName = name,
CidrBlock = "10.4.0.0/24",
VpcId = defaultNetwork.Id,
ZoneId = @default.Apply(@default => @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id)),
});
var defaultEdgeKubernetes = new AliCloud.CS.EdgeKubernetes("default", new()
{
NamePrefix = name,
WorkerVswitchIds = new[]
{
defaultSwitch.Id,
},
WorkerInstanceTypes = new[]
{
defaultGetInstanceTypes.Apply(getInstanceTypesResult => getInstanceTypesResult.InstanceTypes[0]?.Id),
},
Version = "1.26.3-aliyun.1",
WorkerNumber = 1,
Password = "Test12345",
PodCidr = "10.99.0.0/16",
ServiceCidr = "172.16.0.0/16",
WorkerInstanceChargeType = "PostPaid",
NewNatGateway = true,
NodeCidrMask = 24,
InstallCloudMonitor = true,
SlbInternetEnabled = true,
IsEnterpriseSecurityGroup = true,
WorkerDataDisks = new[]
{
new AliCloud.CS.Inputs.EdgeKubernetesWorkerDataDiskArgs
{
Category = "cloud_ssd",
Size = "200",
Encrypted = "false",
},
},
});
});package main
import (
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/cs"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/ecs"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/vpc"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
name := "tf-example"
if param := cfg.Get("name"); param != "" {
name = param
}
_default, err := alicloud.GetZones(ctx, &alicloud.GetZonesArgs{
AvailableResourceCreation: pulumi.StringRef("VSwitch"),
}, nil)
if err != nil {
return err
}
defaultGetInstanceTypes, err := ecs.GetInstanceTypes(ctx, &ecs.GetInstanceTypesArgs{
AvailabilityZone: pulumi.StringRef(_default.Zones[0].Id),
CpuCoreCount: pulumi.IntRef(4),
MemorySize: pulumi.Float64Ref(8),
KubernetesNodeRole: pulumi.StringRef("Master"),
}, nil)
if err != nil {
return err
}
defaultNetwork, err := vpc.NewNetwork(ctx, "default", &vpc.NetworkArgs{
VpcName: pulumi.String(name),
CidrBlock: pulumi.String("10.4.0.0/16"),
})
if err != nil {
return err
}
defaultSwitch, err := vpc.NewSwitch(ctx, "default", &vpc.SwitchArgs{
VswitchName: pulumi.String(name),
CidrBlock: pulumi.String("10.4.0.0/24"),
VpcId: defaultNetwork.ID(),
ZoneId: pulumi.String(_default.Zones[0].Id),
})
if err != nil {
return err
}
_, err = cs.NewEdgeKubernetes(ctx, "default", &cs.EdgeKubernetesArgs{
NamePrefix: pulumi.String(name),
WorkerVswitchIds: pulumi.StringArray{
defaultSwitch.ID(),
},
WorkerInstanceTypes: pulumi.StringArray{
pulumi.String(defaultGetInstanceTypes.InstanceTypes[0].Id),
},
Version: pulumi.String("1.26.3-aliyun.1"),
WorkerNumber: pulumi.Int(1),
Password: pulumi.String("Test12345"),
PodCidr: pulumi.String("10.99.0.0/16"),
ServiceCidr: pulumi.String("172.16.0.0/16"),
WorkerInstanceChargeType: pulumi.String("PostPaid"),
NewNatGateway: pulumi.Bool(true),
NodeCidrMask: pulumi.Int(24),
InstallCloudMonitor: pulumi.Bool(true),
SlbInternetEnabled: pulumi.Bool(true),
IsEnterpriseSecurityGroup: pulumi.Bool(true),
WorkerDataDisks: cs.EdgeKubernetesWorkerDataDiskArray{
&cs.EdgeKubernetesWorkerDataDiskArgs{
Category: pulumi.String("cloud_ssd"),
Size: pulumi.String("200"),
Encrypted: pulumi.String("false"),
},
},
})
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.alicloud.AlicloudFunctions;
import com.pulumi.alicloud.inputs.GetZonesArgs;
import com.pulumi.alicloud.ecs.EcsFunctions;
import com.pulumi.alicloud.ecs.inputs.GetInstanceTypesArgs;
import com.pulumi.alicloud.vpc.Network;
import com.pulumi.alicloud.vpc.NetworkArgs;
import com.pulumi.alicloud.vpc.Switch;
import com.pulumi.alicloud.vpc.SwitchArgs;
import com.pulumi.alicloud.cs.EdgeKubernetes;
import com.pulumi.alicloud.cs.EdgeKubernetesArgs;
import com.pulumi.alicloud.cs.inputs.EdgeKubernetesWorkerDataDiskArgs;
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) {
final var config = ctx.config();
final var name = config.get("name").orElse("tf-example");
final var default = AlicloudFunctions.getZones(GetZonesArgs.builder()
.availableResourceCreation("VSwitch")
.build());
final var defaultGetInstanceTypes = EcsFunctions.getInstanceTypes(GetInstanceTypesArgs.builder()
.availabilityZone(default_.zones()[0].id())
.cpuCoreCount(4)
.memorySize(8)
.kubernetesNodeRole("Master")
.build());
var defaultNetwork = new Network("defaultNetwork", NetworkArgs.builder()
.vpcName(name)
.cidrBlock("10.4.0.0/16")
.build());
var defaultSwitch = new Switch("defaultSwitch", SwitchArgs.builder()
.vswitchName(name)
.cidrBlock("10.4.0.0/24")
.vpcId(defaultNetwork.id())
.zoneId(default_.zones()[0].id())
.build());
var defaultEdgeKubernetes = new EdgeKubernetes("defaultEdgeKubernetes", EdgeKubernetesArgs.builder()
.namePrefix(name)
.workerVswitchIds(defaultSwitch.id())
.workerInstanceTypes(defaultGetInstanceTypes.applyValue(getInstanceTypesResult -> getInstanceTypesResult.instanceTypes()[0].id()))
.version("1.26.3-aliyun.1")
.workerNumber("1")
.password("Test12345")
.podCidr("10.99.0.0/16")
.serviceCidr("172.16.0.0/16")
.workerInstanceChargeType("PostPaid")
.newNatGateway("true")
.nodeCidrMask("24")
.installCloudMonitor("true")
.slbInternetEnabled("true")
.isEnterpriseSecurityGroup("true")
.workerDataDisks(EdgeKubernetesWorkerDataDiskArgs.builder()
.category("cloud_ssd")
.size("200")
.encrypted("false")
.build())
.build());
}
}configuration:
name:
type: string
default: tf-example
resources:
defaultNetwork:
type: alicloud:vpc:Network
name: default
properties:
vpcName: ${name}
cidrBlock: 10.4.0.0/16
defaultSwitch:
type: alicloud:vpc:Switch
name: default
properties:
vswitchName: ${name}
cidrBlock: 10.4.0.0/24
vpcId: ${defaultNetwork.id}
zoneId: ${default.zones[0].id}
defaultEdgeKubernetes:
type: alicloud:cs:EdgeKubernetes
name: default
properties:
namePrefix: ${name}
workerVswitchIds:
- ${defaultSwitch.id}
workerInstanceTypes:
- ${defaultGetInstanceTypes.instanceTypes[0].id}
version: 1.26.3-aliyun.1
workerNumber: '1'
password: Test12345
podCidr: 10.99.0.0/16
serviceCidr: 172.16.0.0/16
workerInstanceChargeType: PostPaid
newNatGateway: 'true'
nodeCidrMask: '24'
installCloudMonitor: 'true'
slbInternetEnabled: 'true'
isEnterpriseSecurityGroup: 'true'
workerDataDisks:
- category: cloud_ssd
size: '200'
encrypted: 'false'
variables:
default:
fn::invoke:
Function: alicloud:getZones
Arguments:
availableResourceCreation: VSwitch
defaultGetInstanceTypes:
fn::invoke:
Function: alicloud:ecs:getInstanceTypes
Arguments:
availabilityZone: ${default.zones[0].id}
cpuCoreCount: 4
memorySize: 8
kubernetesNodeRole: MasterYou could create a professional kubernetes edge cluster now.
import * as pulumi from "@pulumi/pulumi";
import * as alicloud from "@pulumi/alicloud";
const config = new pulumi.Config();
const name = config.get("name") || "tf_example";
const default = alicloud.getZones({
availableResourceCreation: "VSwitch",
});
const defaultGetInstanceTypes = _default.then(_default => alicloud.ecs.getInstanceTypes({
availabilityZone: _default.zones?.[0]?.id,
cpuCoreCount: 4,
memorySize: 8,
kubernetesNodeRole: "Master",
}));
const defaultNetwork = new alicloud.vpc.Network("default", {
vpcName: name,
cidrBlock: "10.4.0.0/16",
});
const defaultSwitch = new alicloud.vpc.Switch("default", {
vswitchName: name,
cidrBlock: "10.4.0.0/24",
vpcId: defaultNetwork.id,
zoneId: _default.then(_default => _default.zones?.[0]?.id),
});
const defaultEdgeKubernetes = new alicloud.cs.EdgeKubernetes("default", {
namePrefix: name,
workerVswitchIds: [defaultSwitch.id],
workerInstanceTypes: [defaultGetInstanceTypes.then(defaultGetInstanceTypes => defaultGetInstanceTypes.instanceTypes?.[0]?.id)],
clusterSpec: "ack.pro.small",
workerNumber: 1,
password: "Test12345",
podCidr: "10.99.0.0/16",
serviceCidr: "172.16.0.0/16",
workerInstanceChargeType: "PostPaid",
newNatGateway: true,
nodeCidrMask: 24,
loadBalancerSpec: "slb.s2.small",
installCloudMonitor: true,
slbInternetEnabled: true,
isEnterpriseSecurityGroup: true,
workerDataDisks: [{
category: "cloud_ssd",
size: "200",
encrypted: "false",
}],
});import pulumi
import pulumi_alicloud as alicloud
config = pulumi.Config()
name = config.get("name")
if name is None:
name = "tf_example"
default = alicloud.get_zones(available_resource_creation="VSwitch")
default_get_instance_types = alicloud.ecs.get_instance_types(availability_zone=default.zones[0].id,
cpu_core_count=4,
memory_size=8,
kubernetes_node_role="Master")
default_network = alicloud.vpc.Network("default",
vpc_name=name,
cidr_block="10.4.0.0/16")
default_switch = alicloud.vpc.Switch("default",
vswitch_name=name,
cidr_block="10.4.0.0/24",
vpc_id=default_network.id,
zone_id=default.zones[0].id)
default_edge_kubernetes = alicloud.cs.EdgeKubernetes("default",
name_prefix=name,
worker_vswitch_ids=[default_switch.id],
worker_instance_types=[default_get_instance_types.instance_types[0].id],
cluster_spec="ack.pro.small",
worker_number=1,
password="Test12345",
pod_cidr="10.99.0.0/16",
service_cidr="172.16.0.0/16",
worker_instance_charge_type="PostPaid",
new_nat_gateway=True,
node_cidr_mask=24,
load_balancer_spec="slb.s2.small",
install_cloud_monitor=True,
slb_internet_enabled=True,
is_enterprise_security_group=True,
worker_data_disks=[alicloud.cs.EdgeKubernetesWorkerDataDiskArgs(
category="cloud_ssd",
size="200",
encrypted="false",
)])using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;
return await Deployment.RunAsync(() =>
{
var config = new Config();
var name = config.Get("name") ?? "tf_example";
var @default = AliCloud.GetZones.Invoke(new()
{
AvailableResourceCreation = "VSwitch",
});
var defaultGetInstanceTypes = AliCloud.Ecs.GetInstanceTypes.Invoke(new()
{
AvailabilityZone = @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id),
CpuCoreCount = 4,
MemorySize = 8,
KubernetesNodeRole = "Master",
});
var defaultNetwork = new AliCloud.Vpc.Network("default", new()
{
VpcName = name,
CidrBlock = "10.4.0.0/16",
});
var defaultSwitch = new AliCloud.Vpc.Switch("default", new()
{
VswitchName = name,
CidrBlock = "10.4.0.0/24",
VpcId = defaultNetwork.Id,
ZoneId = @default.Apply(@default => @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id)),
});
var defaultEdgeKubernetes = new AliCloud.CS.EdgeKubernetes("default", new()
{
NamePrefix = name,
WorkerVswitchIds = new[]
{
defaultSwitch.Id,
},
WorkerInstanceTypes = new[]
{
defaultGetInstanceTypes.Apply(getInstanceTypesResult => getInstanceTypesResult.InstanceTypes[0]?.Id),
},
ClusterSpec = "ack.pro.small",
WorkerNumber = 1,
Password = "Test12345",
PodCidr = "10.99.0.0/16",
ServiceCidr = "172.16.0.0/16",
WorkerInstanceChargeType = "PostPaid",
NewNatGateway = true,
NodeCidrMask = 24,
LoadBalancerSpec = "slb.s2.small",
InstallCloudMonitor = true,
SlbInternetEnabled = true,
IsEnterpriseSecurityGroup = true,
WorkerDataDisks = new[]
{
new AliCloud.CS.Inputs.EdgeKubernetesWorkerDataDiskArgs
{
Category = "cloud_ssd",
Size = "200",
Encrypted = "false",
},
},
});
});package main
import (
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/cs"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/ecs"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/vpc"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
name := "tf_example"
if param := cfg.Get("name"); param != "" {
name = param
}
_default, err := alicloud.GetZones(ctx, &alicloud.GetZonesArgs{
AvailableResourceCreation: pulumi.StringRef("VSwitch"),
}, nil)
if err != nil {
return err
}
defaultGetInstanceTypes, err := ecs.GetInstanceTypes(ctx, &ecs.GetInstanceTypesArgs{
AvailabilityZone: pulumi.StringRef(_default.Zones[0].Id),
CpuCoreCount: pulumi.IntRef(4),
MemorySize: pulumi.Float64Ref(8),
KubernetesNodeRole: pulumi.StringRef("Master"),
}, nil)
if err != nil {
return err
}
defaultNetwork, err := vpc.NewNetwork(ctx, "default", &vpc.NetworkArgs{
VpcName: pulumi.String(name),
CidrBlock: pulumi.String("10.4.0.0/16"),
})
if err != nil {
return err
}
defaultSwitch, err := vpc.NewSwitch(ctx, "default", &vpc.SwitchArgs{
VswitchName: pulumi.String(name),
CidrBlock: pulumi.String("10.4.0.0/24"),
VpcId: defaultNetwork.ID(),
ZoneId: pulumi.String(_default.Zones[0].Id),
})
if err != nil {
return err
}
_, err = cs.NewEdgeKubernetes(ctx, "default", &cs.EdgeKubernetesArgs{
NamePrefix: pulumi.String(name),
WorkerVswitchIds: pulumi.StringArray{
defaultSwitch.ID(),
},
WorkerInstanceTypes: pulumi.StringArray{
pulumi.String(defaultGetInstanceTypes.InstanceTypes[0].Id),
},
ClusterSpec: pulumi.String("ack.pro.small"),
WorkerNumber: pulumi.Int(1),
Password: pulumi.String("Test12345"),
PodCidr: pulumi.String("10.99.0.0/16"),
ServiceCidr: pulumi.String("172.16.0.0/16"),
WorkerInstanceChargeType: pulumi.String("PostPaid"),
NewNatGateway: pulumi.Bool(true),
NodeCidrMask: pulumi.Int(24),
LoadBalancerSpec: pulumi.String("slb.s2.small"),
InstallCloudMonitor: pulumi.Bool(true),
SlbInternetEnabled: pulumi.Bool(true),
IsEnterpriseSecurityGroup: pulumi.Bool(true),
WorkerDataDisks: cs.EdgeKubernetesWorkerDataDiskArray{
&cs.EdgeKubernetesWorkerDataDiskArgs{
Category: pulumi.String("cloud_ssd"),
Size: pulumi.String("200"),
Encrypted: pulumi.String("false"),
},
},
})
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.alicloud.AlicloudFunctions;
import com.pulumi.alicloud.inputs.GetZonesArgs;
import com.pulumi.alicloud.ecs.EcsFunctions;
import com.pulumi.alicloud.ecs.inputs.GetInstanceTypesArgs;
import com.pulumi.alicloud.vpc.Network;
import com.pulumi.alicloud.vpc.NetworkArgs;
import com.pulumi.alicloud.vpc.Switch;
import com.pulumi.alicloud.vpc.SwitchArgs;
import com.pulumi.alicloud.cs.EdgeKubernetes;
import com.pulumi.alicloud.cs.EdgeKubernetesArgs;
import com.pulumi.alicloud.cs.inputs.EdgeKubernetesWorkerDataDiskArgs;
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) {
final var config = ctx.config();
final var name = config.get("name").orElse("tf_example");
final var default = AlicloudFunctions.getZones(GetZonesArgs.builder()
.availableResourceCreation("VSwitch")
.build());
final var defaultGetInstanceTypes = EcsFunctions.getInstanceTypes(GetInstanceTypesArgs.builder()
.availabilityZone(default_.zones()[0].id())
.cpuCoreCount(4)
.memorySize(8)
.kubernetesNodeRole("Master")
.build());
var defaultNetwork = new Network("defaultNetwork", NetworkArgs.builder()
.vpcName(name)
.cidrBlock("10.4.0.0/16")
.build());
var defaultSwitch = new Switch("defaultSwitch", SwitchArgs.builder()
.vswitchName(name)
.cidrBlock("10.4.0.0/24")
.vpcId(defaultNetwork.id())
.zoneId(default_.zones()[0].id())
.build());
var defaultEdgeKubernetes = new EdgeKubernetes("defaultEdgeKubernetes", EdgeKubernetesArgs.builder()
.namePrefix(name)
.workerVswitchIds(defaultSwitch.id())
.workerInstanceTypes(defaultGetInstanceTypes.applyValue(getInstanceTypesResult -> getInstanceTypesResult.instanceTypes()[0].id()))
.clusterSpec("ack.pro.small")
.workerNumber("1")
.password("Test12345")
.podCidr("10.99.0.0/16")
.serviceCidr("172.16.0.0/16")
.workerInstanceChargeType("PostPaid")
.newNatGateway("true")
.nodeCidrMask("24")
.loadBalancerSpec("slb.s2.small")
.installCloudMonitor("true")
.slbInternetEnabled("true")
.isEnterpriseSecurityGroup("true")
.workerDataDisks(EdgeKubernetesWorkerDataDiskArgs.builder()
.category("cloud_ssd")
.size("200")
.encrypted("false")
.build())
.build());
}
}configuration:
name:
type: string
default: tf_example
resources:
defaultNetwork:
type: alicloud:vpc:Network
name: default
properties:
vpcName: ${name}
cidrBlock: 10.4.0.0/16
defaultSwitch:
type: alicloud:vpc:Switch
name: default
properties:
vswitchName: ${name}
cidrBlock: 10.4.0.0/24
vpcId: ${defaultNetwork.id}
zoneId: ${default.zones[0].id}
defaultEdgeKubernetes:
type: alicloud:cs:EdgeKubernetes
name: default
properties:
namePrefix: ${name}
workerVswitchIds:
- ${defaultSwitch.id}
workerInstanceTypes:
- ${defaultGetInstanceTypes.instanceTypes[0].id}
clusterSpec: ack.pro.small
workerNumber: '1'
password: Test12345
podCidr: 10.99.0.0/16
serviceCidr: 172.16.0.0/16
workerInstanceChargeType: PostPaid
newNatGateway: 'true'
nodeCidrMask: '24'
loadBalancerSpec: slb.s2.small
installCloudMonitor: 'true'
slbInternetEnabled: 'true'
isEnterpriseSecurityGroup: 'true'
workerDataDisks:
- category: cloud_ssd
size: '200'
encrypted: 'false'
variables:
default:
fn::invoke:
Function: alicloud:getZones
Arguments:
availableResourceCreation: VSwitch
defaultGetInstanceTypes:
fn::invoke:
Function: alicloud:ecs:getInstanceTypes
Arguments:
availabilityZone: ${default.zones[0].id}
cpuCoreCount: 4
memorySize: 8
kubernetesNodeRole: MasterImport
Kubernetes edge cluster can be imported using the id, e.g. Then complete the main.tf accords to the result of pulumi preview.
$ pulumi import alicloud:cs/edgeKubernetes:EdgeKubernetes main cluster-idProperties
Enable to create advanced security group. default: false. See Advanced security group.
The cluster api server load balance instance specification. For more information on how to select a LB instance specification, see SLB instance overview. ->NOTE: If you want to use Flannel as CNI network plugin, You need to specific the pod_cidr field and addons with flannel. Worker params
The runtime of containers. If you select another container runtime, see Comparison of Docker, containerd, and Sandboxed-Container. See runtime below.
Desired Kubernetes version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except you set a higher version number. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by ACK.
Worker node system disk performance level, when worker_disk_category values cloud_essd, the optional values are PL0, PL1, PL2 or PL3, but the specific performance level is related to the disk capacity. For more information, see Enhanced SSDs. Default is PL1.
Worker node system disk auto snapshot policy. Computed params You can set some file paths to save kube_config information, but this way is cumbersome. Since version 1.105.0, we've written it to tf state file. About its use,see export attribute certificate_authority. From version 1.187.0+, new DataSource alicloud.cs.getClusterCredential is recommended to manage cluster's kube_config.
Worker payment type, its valid value is PostPaid. Defaults to PostPaid. More charge details in ACK@edge charge.