util

package
v0.0.0-...-f4dfa5d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 16, 2024 License: Apache-2.0 Imports: 43 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MasterRoleLabelKey       = "node-role.kubernetes.io/master"
	ControlPlaneRoleLabelKey = "node-role.kubernetes.io/control-plane"
	ETCDRoleLabelKey         = "node-role.kubernetes.io/etcd"
)
View Source
const DefaultAPIServerReadyTimeout = 15 * time.Minute

This sets a default duration to wait for the apiserver to become ready. This is primarily used to block startup of agent supervisor controllers until the apiserver is ready to serve requests, in the same way that the apiReady channel is used in the server packages, so it can be fairly long. It must be at least long enough for downstream projects like RKE2 to start the apiserver in the background.

Variables

View Source
var ErrCommandNoArgs = errors.New("this command does not take any arguments")
View Source
var ErrUnsupportedPlatform = errors.New("unsupported platform")

Functions

func AddFeatureGate

func AddFeatureGate(current, new string) string

AddFeatureGate correctly appends a feature gate key pair to the feature gates CLI switch.

func AtomicWrite

func AtomicWrite(fileName string, data []byte, perm os.FileMode) error

AtomicWrite firsts writes data to a temp file, then renames to the destination file. This ensures that the destination file is never partially written.

func BuildControllerEventRecorder

func BuildControllerEventRecorder(k8s clientset.Interface, controllerName, namespace string) record.EventRecorder

func EncodeCertsPEM

func EncodeCertsPEM(cert *x509.Certificate, caCerts []*x509.Certificate) []byte

EncodeCertsPEM is a wrapper around the EncodeCertPEM function to return the PEM encoding of a cert and chain, instead of just a single cert.

func ExecCommand

func ExecCommand(command string, args []string) (string, error)

ExecCommand executes a command using the VPN binary In case of error != nil, the string returned var will have more information

func GetAddresses

func GetAddresses(endpoint *v1.Endpoints) []string

func GetClientSet

func GetClientSet(file string) (clientset.Interface, error)

GetClientSet creates a Kubernetes client from the kubeconfig at the provided path.

func GetDefaultAddresses

func GetDefaultAddresses(nodeIP net.IP) (string, string, string, error)

GetFirstIP checks what is the IPFamily of the first item. Based on that, returns a set of values

func GetFirst4String

func GetFirst4String(elems []string) (string, error)

GetFirst4String returns the first IPv4 address from a list of IP address strings. If no IPv4 addresses are found, an error is raised.

func GetFirst6String

func GetFirst6String(elems []string) (string, error)

GetFirst6String returns the first IPv6 address from a list of IP address strings. If no IPv6 addresses are found, an error is raised.

func GetFirstString

func GetFirstString(elems []string) (string, bool, error)

GetFirstString returns the first IP4 address from a list of IP address strings. If no IPv4 addresses are found, returns the first IPv6 address if neither of IPv4 or IPv6 are found an error is raised.

func GetFirstValidIPString

func GetFirstValidIPString(s cli.StringSlice) string

GetFirstValidIPString returns the first valid address from a list of IP address strings, without preference for IP family. If no address are found, an empty string is returned.

func GetFunctionName

func GetFunctionName(i interface{}) string

func GetHostnameAndIPs

func GetHostnameAndIPs(name string, nodeIPs cli.StringSlice) (string, []net.IP, error)

GetHostnameAndIPs takes a node name and list of IPs, usually from CLI args. If set, these are used to return the node's name and addresses. If not set, the system hostname and primary interface addresses are returned instead.

func GetIPFromInterface

func GetIPFromInterface(ifaceName string) (string, error)

GetIPFromInterface is the public function that returns the IP of an interface

func GetKubeConfigPath

func GetKubeConfigPath(file string) string

GetKubeConfigPath can be used to search for a kubeconfig in standard locations if an empty string is passed. If a non-empty string is passed, that path is used.

func GetTokenHash

func GetTokenHash(config *config.Control) (string, error)

func GetUserAgent

func GetUserAgent(controllerName string) string

GetUserAgent builds a complete UserAgent string for a given controller, including the node name if possible.

func IPStringToIPNet

func IPStringToIPNet(address string) (*net.IPNet, error)

IPStringToIPNet converts an IP string to an IPNet, using a fully filled mask appropriate for the address family.

func IPToIPNet

func IPToIPNet(ip net.IP) (*net.IPNet, error)

IPToIPNet converts an IP to an IPNet, using a fully filled mask appropriate for the address family.

func JoinIP4Nets

func JoinIP4Nets(elems []*net.IPNet) string

JoinIP4Nets stringifies and joins a list of IPv4 networks with commas.

func JoinIP6Nets

func JoinIP6Nets(elems []*net.IPNet) string

JoinIP6Nets stringifies and joins a list of IPv6 networks with commas.

func JoinIPNets

func JoinIPNets(elems []*net.IPNet) string

JoinIPNets stringifies and joins a list of IP networks with commas.

func JoinIPs

func JoinIPs(elems []net.IP) string

JoinIPs stringifies and joins a list of IP addresses with commas.

func NormalizeToken

func NormalizeToken(token string) (string, error)

NormalizeToken will normalize the token read from file or passed as a cli flag

func ParseStringSliceToIPs

func ParseStringSliceToIPs(s cli.StringSlice) ([]net.IP, error)

ParseStringSliceToIPs converts slice of strings that in turn can be lists of comma separated unparsed IP addresses into a single slice of net.IP, it returns error if at any point parsing failed

func Random

func Random(size int) (string, error)

func ReadFile

func ReadFile(path string) (string, error)

ReadFile reads from a file

func ReadTokenFromFile

func ReadTokenFromFile(serverToken, certs, dataDir string) (string, error)

ReadTokenFromFile will attempt to get the token from <data-dir>/token if it the file not found in case of fresh installation it will try to use the runtime serverToken saved in memory after stripping it from any additional information like the username or cahash, if the file found then it will still strip the token from any additional info

func SetFileModeForFile

func SetFileModeForFile(file *os.File, mode os.FileMode) error

func SetFileModeForPath

func SetFileModeForPath(name string, mode os.FileMode) error

func ShortHash

func ShortHash(s string, i int) string

func SplitStringSlice

func SplitStringSlice(ss []string) []string

SplitStringSlice is a helper function to handle StringSliceFlag containing multiple values By default, StringSliceFlag only supports repeated values, not multiple values e.g. --foo="bar,car" --foo=baz will result in []string{"bar", "car". "baz"}

func WaitForAPIServerReady

func WaitForAPIServerReady(ctx context.Context, kubeconfigPath string, timeout time.Duration) error

WaitForAPIServerReady waits for the API Server's /readyz endpoint to report "ok" with timeout. This is modified from WaitForAPIServer from the Kubernetes controller-manager app, but checks the readyz endpoint instead of the deprecated healthz endpoint, and supports context.

func WaitForRBACReady

func WaitForRBACReady(ctx context.Context, kubeconfigPath string, timeout time.Duration, ra authorizationv1.ResourceAttributes, user string, groups ...string) error

WaitForRBACReady polls an AccessReview request until it returns an allowed response. If the user and group are empty, it uses SelfSubjectAccessReview, otherwise SubjectAccessReview is used. It will return an error if the timeout expires, or nil if the SubjectAccessReviewStatus indicates the access would be allowed.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL