Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## Unreleased

### Features

- sks: Public IP Assignment support for nodepools

## 1.89.0

### Bug fixes
Expand Down
7 changes: 7 additions & 0 deletions cmd/compute/sks/sks_nodepool_add.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)"`
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down
58 changes: 30 additions & 28 deletions cmd/compute/sks/sks_nodepool_show.go
Original file line number Diff line number Diff line change
Expand Up @@ -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" }
Expand Down Expand Up @@ -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)
Expand Down