Commit 07256cf7 authored by Brad Davidson's avatar Brad Davidson Committed by Brad Davidson

Add ServiceIPRange and ServiceNodePortRange to agent config

parent 95a1a868
...@@ -489,6 +489,14 @@ func get(envInfo *cmds.Agent, proxy proxy.Proxy) (*config.Node, error) { ...@@ -489,6 +489,14 @@ func get(envInfo *cmds.Agent, proxy proxy.Proxy) (*config.Node, error) {
nodeConfig.AgentConfig.ClusterCIDR = *controlConfig.ClusterIPRange nodeConfig.AgentConfig.ClusterCIDR = *controlConfig.ClusterIPRange
} }
if controlConfig.ServiceIPRange != nil {
nodeConfig.AgentConfig.ServiceCIDR = *controlConfig.ServiceIPRange
}
if controlConfig.ServiceNodePortRange != nil {
nodeConfig.AgentConfig.ServiceNodePortRange = *controlConfig.ServiceNodePortRange
}
nodeConfig.AgentConfig.ExtraKubeletArgs = envInfo.ExtraKubeletArgs nodeConfig.AgentConfig.ExtraKubeletArgs = envInfo.ExtraKubeletArgs
nodeConfig.AgentConfig.ExtraKubeProxyArgs = envInfo.ExtraKubeProxyArgs nodeConfig.AgentConfig.ExtraKubeProxyArgs = envInfo.ExtraKubeProxyArgs
......
...@@ -13,15 +13,16 @@ const ( ...@@ -13,15 +13,16 @@ const (
) )
type Server struct { type Server struct {
ClusterCIDR string ClusterCIDR string
AgentToken string AgentToken string
AgentTokenFile string AgentTokenFile string
Token string Token string
TokenFile string TokenFile string
ClusterSecret string ClusterSecret string
ServiceCIDR string ServiceCIDR string
ClusterDNS string ServiceNodePortRange string
ClusterDomain string ClusterDNS string
ClusterDomain string
// The port which kubectl clients can access k8s // The port which kubectl clients can access k8s
HTTPSPort int HTTPSPort int
// The port which custom k3s API runs on // The port which custom k3s API runs on
...@@ -126,6 +127,12 @@ func NewServerCommand(action func(*cli.Context) error) cli.Command { ...@@ -126,6 +127,12 @@ func NewServerCommand(action func(*cli.Context) error) cli.Command {
Value: "10.43.0.0/16", Value: "10.43.0.0/16",
}, },
cli.StringFlag{ cli.StringFlag{
Name: "service-node-port-range",
Usage: "(networking) Port range to reserve for services with NodePort visibility",
Destination: &ServerConfig.ServiceNodePortRange,
Value: "30000-32767",
},
cli.StringFlag{
Name: "cluster-dns", Name: "cluster-dns",
Usage: "(networking) Cluster IP for coredns service. Should be in your service-cidr range (default: 10.43.0.10)", Usage: "(networking) Cluster IP for coredns service. Should be in your service-cidr range (default: 10.43.0.10)",
Destination: &ServerConfig.ClusterDNS, Destination: &ServerConfig.ClusterDNS,
......
...@@ -3,7 +3,7 @@ package server ...@@ -3,7 +3,7 @@ package server
import ( import (
"context" "context"
"fmt" "fmt"
net2 "net" "net"
"os" "os"
"path/filepath" "path/filepath"
"strings" "strings"
...@@ -22,7 +22,7 @@ import ( ...@@ -22,7 +22,7 @@ import (
"github.com/rancher/wrangler/pkg/signals" "github.com/rancher/wrangler/pkg/signals"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/urfave/cli" "github.com/urfave/cli"
"k8s.io/apimachinery/pkg/util/net" utilnet "k8s.io/apimachinery/pkg/util/net"
kubeapiserverflag "k8s.io/component-base/cli/flag" kubeapiserverflag "k8s.io/component-base/cli/flag"
"k8s.io/kubernetes/pkg/controlplane" "k8s.io/kubernetes/pkg/controlplane"
...@@ -145,15 +145,20 @@ func run(app *cli.Context, cfg *cmds.Server) error { ...@@ -145,15 +145,20 @@ func run(app *cli.Context, cfg *cmds.Server) error {
serverConfig.ControlConfig.SANs = append(serverConfig.ControlConfig.SANs, serverConfig.ControlConfig.AdvertiseIP) serverConfig.ControlConfig.SANs = append(serverConfig.ControlConfig.SANs, serverConfig.ControlConfig.AdvertiseIP)
} }
_, serverConfig.ControlConfig.ClusterIPRange, err = net2.ParseCIDR(cfg.ClusterCIDR) _, serverConfig.ControlConfig.ClusterIPRange, err = net.ParseCIDR(cfg.ClusterCIDR)
if err != nil { if err != nil {
return errors.Wrapf(err, "Invalid CIDR %s: %v", cfg.ClusterCIDR, err) return errors.Wrapf(err, "Invalid CIDR %s: %v", cfg.ClusterCIDR, err)
} }
_, serverConfig.ControlConfig.ServiceIPRange, err = net2.ParseCIDR(cfg.ServiceCIDR) _, serverConfig.ControlConfig.ServiceIPRange, err = net.ParseCIDR(cfg.ServiceCIDR)
if err != nil { if err != nil {
return errors.Wrapf(err, "Invalid CIDR %s: %v", cfg.ServiceCIDR, err) return errors.Wrapf(err, "Invalid CIDR %s: %v", cfg.ServiceCIDR, err)
} }
serverConfig.ControlConfig.ServiceNodePortRange, err = utilnet.ParsePortRange(cfg.ServiceNodePortRange)
if err != nil {
return errors.Wrapf(err, "Invalid port range %s: %v", cfg.ServiceNodePortRange, err)
}
_, apiServerServiceIP, err := controlplane.ServiceIPRange(*serverConfig.ControlConfig.ServiceIPRange) _, apiServerServiceIP, err := controlplane.ServiceIPRange(*serverConfig.ControlConfig.ServiceIPRange)
if err != nil { if err != nil {
return err return err
...@@ -163,11 +168,11 @@ func run(app *cli.Context, cfg *cmds.Server) error { ...@@ -163,11 +168,11 @@ func run(app *cli.Context, cfg *cmds.Server) error {
// If cluster-dns CLI arg is not set, we set ClusterDNS address to be ServiceCIDR network + 10, // If cluster-dns CLI arg is not set, we set ClusterDNS address to be ServiceCIDR network + 10,
// i.e. when you set service-cidr to 192.168.0.0/16 and don't provide cluster-dns, it will be set to 192.168.0.10 // i.e. when you set service-cidr to 192.168.0.0/16 and don't provide cluster-dns, it will be set to 192.168.0.10
if cfg.ClusterDNS == "" { if cfg.ClusterDNS == "" {
serverConfig.ControlConfig.ClusterDNS = make(net2.IP, 4) serverConfig.ControlConfig.ClusterDNS = make(net.IP, 4)
copy(serverConfig.ControlConfig.ClusterDNS, serverConfig.ControlConfig.ServiceIPRange.IP.To4()) copy(serverConfig.ControlConfig.ClusterDNS, serverConfig.ControlConfig.ServiceIPRange.IP.To4())
serverConfig.ControlConfig.ClusterDNS[3] = 10 serverConfig.ControlConfig.ClusterDNS[3] = 10
} else { } else {
serverConfig.ControlConfig.ClusterDNS = net2.ParseIP(cfg.ClusterDNS) serverConfig.ControlConfig.ClusterDNS = net.ParseIP(cfg.ClusterDNS)
} }
if cfg.DefaultLocalStoragePath == "" { if cfg.DefaultLocalStoragePath == "" {
...@@ -287,7 +292,7 @@ func run(app *cli.Context, cfg *cmds.Server) error { ...@@ -287,7 +292,7 @@ func run(app *cli.Context, cfg *cmds.Server) error {
func knownIPs(ips []string) []string { func knownIPs(ips []string) []string {
ips = append(ips, "127.0.0.1") ips = append(ips, "127.0.0.1")
ip, err := net.ChooseHostInterface() ip, err := utilnet.ChooseHostInterface()
if err == nil { if err == nil {
ips = append(ips, ip.String()) ips = append(ips, ip.String())
} }
......
...@@ -11,6 +11,7 @@ import ( ...@@ -11,6 +11,7 @@ import (
"github.com/k3s-io/kine/pkg/endpoint" "github.com/k3s-io/kine/pkg/endpoint"
"github.com/rancher/wrangler-api/pkg/generated/controllers/core" "github.com/rancher/wrangler-api/pkg/generated/controllers/core"
utilnet "k8s.io/apimachinery/pkg/util/net"
"k8s.io/apiserver/pkg/authentication/authenticator" "k8s.io/apiserver/pkg/authentication/authenticator"
) )
...@@ -56,6 +57,8 @@ type Agent struct { ...@@ -56,6 +57,8 @@ type Agent struct {
NodeConfigPath string NodeConfigPath string
ServingKubeletCert string ServingKubeletCert string
ServingKubeletKey string ServingKubeletKey string
ServiceCIDR net.IPNet
ServiceNodePortRange utilnet.PortRange
ClusterCIDR net.IPNet ClusterCIDR net.IPNet
ClusterDNS net.IP ClusterDNS net.IP
ClusterDomain string ClusterDomain string
...@@ -102,6 +105,7 @@ type Control struct { ...@@ -102,6 +105,7 @@ type Control struct {
Token string `json:"-"` Token string `json:"-"`
ClusterIPRange *net.IPNet ClusterIPRange *net.IPNet
ServiceIPRange *net.IPNet ServiceIPRange *net.IPNet
ServiceNodePortRange *utilnet.PortRange
ClusterDNS net.IP ClusterDNS net.IP
ClusterDomain string ClusterDomain string
NoCoreDNS bool NoCoreDNS bool
......
...@@ -190,6 +190,7 @@ func apiServer(ctx context.Context, cfg *config.Control, runtime *config.Control ...@@ -190,6 +190,7 @@ func apiServer(ctx context.Context, cfg *config.Control, runtime *config.Control
argsMap["authorization-mode"] = strings.Join([]string{modes.ModeNode, modes.ModeRBAC}, ",") argsMap["authorization-mode"] = strings.Join([]string{modes.ModeNode, modes.ModeRBAC}, ",")
argsMap["service-account-signing-key-file"] = runtime.ServiceKey argsMap["service-account-signing-key-file"] = runtime.ServiceKey
argsMap["service-cluster-ip-range"] = cfg.ServiceIPRange.String() argsMap["service-cluster-ip-range"] = cfg.ServiceIPRange.String()
argsMap["service-node-port-range"] = cfg.ServiceNodePortRange.String()
argsMap["advertise-port"] = strconv.Itoa(cfg.AdvertisePort) argsMap["advertise-port"] = strconv.Itoa(cfg.AdvertisePort)
if cfg.AdvertiseIP != "" { if cfg.AdvertiseIP != "" {
argsMap["advertise-address"] = cfg.AdvertiseIP argsMap["advertise-address"] = cfg.AdvertiseIP
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment