diff --git a/CHANGELOG.md b/CHANGELOG.md index 538adecf..dc9bdf22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Features + +- sks: Public IP Assignment support for nodepools + ## 1.89.0 ### Bug fixes diff --git a/cmd/compute/sks/sks_nodepool_add.go b/cmd/compute/sks/sks_nodepool_add.go index d99eb328..cc628917 100644 --- a/cmd/compute/sks/sks_nodepool_add.go +++ b/cmd/compute/sks/sks_nodepool_add.go @@ -39,6 +39,7 @@ type sksNodepoolAddCmd struct { Labels []string `cli-flag:"label" cli-usage:"Nodepool label (format: key=value)"` PrivateNetworks []string `cli-flag:"private-network" cli-usage:"Nodepool Private Network NAME|ID (can be specified multiple times)"` SecurityGroups []string `cli-flag:"security-group" cli-usage:"Nodepool Security Group NAME|ID (can be specified multiple times)"` + PublicIPAssignment string `cli-usage:"Configures public IP assignment of the Instances (inet4|dual). (default: inet4)"` Size int64 `cli-usage:"Nodepool size"` StorageLvm bool `cli-usage:"Create nodes with non-standard partitioning for persistent storage"` Taints []string `cli-flag:"taint" cli-usage:"Kubernetes taint to apply to Nodepool Nodes (format: KEY=VALUE:EFFECT, can be specified multiple times)"` @@ -88,6 +89,11 @@ func (c *sksNodepoolAddCmd) CmdRun(_ *cobra.Command, _ []string) error { } } + publicIP := v3.PublicIPAssignment(c.PublicIPAssignment) + if publicIP == "" { + publicIP = v3.PublicIPAssignmentInet4 // default + } + opts := CreateNodepoolOpts{ Name: c.Name, Description: c.Description, @@ -100,6 +106,7 @@ func (c *sksNodepoolAddCmd) CmdRun(_ *cobra.Command, _ []string) error { DeployTarget: c.DeployTarget, PrivateNetworks: c.PrivateNetworks, SecurityGroups: c.SecurityGroups, + PublicIPAssignment: &publicIP, Taints: c.Taints, KubeletImageGC: &v3.KubeletImageGC{ MinAge: c.ImageGcMinAge, diff --git a/cmd/compute/sks/sks_nodepool_show.go b/cmd/compute/sks/sks_nodepool_show.go index 21b2cc2f..84570f83 100644 --- a/cmd/compute/sks/sks_nodepool_show.go +++ b/cmd/compute/sks/sks_nodepool_show.go @@ -15,28 +15,29 @@ import ( ) type sksNodepoolShowOutput struct { - ID v3.UUID `json:"id"` - Name string `json:"name"` - Description string `json:"description"` - CreationDate string `json:"creation_date"` - InstancePoolID v3.UUID `json:"instance_pool_id"` - InstancePrefix string `json:"instance_prefix"` - InstanceType string `json:"instance_type"` - Template string `json:"template"` - DiskSize int64 `json:"disk_size"` - IPv6 bool `json:"ipv6_enabled" outputLabel:"IPv6"` - AntiAffinityGroups []string `json:"anti_affinity_groups"` - SecurityGroups []string `json:"security_groups"` - PrivateNetworks []string `json:"private_networks"` - Version string `json:"version"` - Size int64 `json:"size"` - State string `json:"state"` - Taints []string `json:"taints"` - Labels map[string]string `json:"labels"` - AddOns []string `json:"addons"` - ImageGCMin string `json:"image_gc_min_age"` - ImageGcLowThreshold int64 `json:"image_gc_low_threshold"` - ImageGcHighThreshold int64 `json:"image_gc_high_threshold"` + ID v3.UUID `json:"id"` + Name string `json:"name"` + Description string `json:"description"` + PublicIPAssignment v3.PublicIPAssignment `json:"public_ip_assignment"` + CreationDate string `json:"creation_date"` + InstancePoolID v3.UUID `json:"instance_pool_id"` + InstancePrefix string `json:"instance_prefix"` + InstanceType string `json:"instance_type"` + Template string `json:"template"` + DiskSize int64 `json:"disk_size"` + IPv6 bool `json:"ipv6_enabled" outputLabel:"IPv6"` + AntiAffinityGroups []string `json:"anti_affinity_groups"` + SecurityGroups []string `json:"security_groups"` + PrivateNetworks []string `json:"private_networks"` + Version string `json:"version"` + Size int64 `json:"size"` + State string `json:"state"` + Taints []string `json:"taints"` + Labels map[string]string `json:"labels"` + AddOns []string `json:"addons"` + ImageGCMin string `json:"image_gc_min_age"` + ImageGcLowThreshold int64 `json:"image_gc_low_threshold"` + ImageGcHighThreshold int64 `json:"image_gc_high_threshold"` } func (o *sksNodepoolShowOutput) Type() string { return "SKS Nodepool" } @@ -125,12 +126,13 @@ func (c *sksNodepoolShowCmd) CmdRun(_ *cobra.Command, _ []string) error { } return }(), - Name: nodepool.Name, - SecurityGroups: make([]string, 0), - PrivateNetworks: make([]string, 0), - Size: nodepool.Size, - State: string(nodepool.State), - IPv6: ipv6Enabled, + Name: nodepool.Name, + SecurityGroups: make([]string, 0), + PrivateNetworks: make([]string, 0), + Size: nodepool.Size, + State: string(nodepool.State), + PublicIPAssignment: v3.PublicIPAssignment(nodepool.PublicIPAssignment), + IPv6: ipv6Enabled, Taints: func() (v []string) { if nodepool.Taints != nil { v = make([]string, 0)