util

package
v2.2.20 Latest Latest
Warning

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

Go to latest
Published: Oct 20, 2024 License: MIT Imports: 85 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AllContainerIsRunning

func AllContainerIsRunning(pod *corev1.Pod) bool

func CanI

func CanI(clientset *kubernetes.Clientset, sa, ns string, resource *rbacv1.PolicyRule) (allowed bool, err error)

func CheckPodStatus added in v2.2.5

func CheckPodStatus(ctx context.Context, cancelFunc context.CancelFunc, podName string, podInterface v12.PodInterface)

func CleanExtensionLib

func CleanExtensionLib()

func ConvertConfig added in v2.2.9

func ConvertConfig(factory cmdutil.Factory) ([]byte, error)

func ConvertK8sApiServerToDomain added in v2.2.5

func ConvertK8sApiServerToDomain(kubeConfigPath string) (newPath string, err error)

func ConvertToKubeConfigBytes added in v2.2.5

func ConvertToKubeConfigBytes(factory cmdutil.Factory) ([]byte, string, error)

func ConvertToTempKubeconfigFile

func ConvertToTempKubeconfigFile(kubeconfigBytes []byte) (string, error)

func CopyVolumeIntoContainer added in v2.2.5

func CopyVolumeIntoContainer(ctx context.Context, volume []mount.Mount, cli *client.Client, id string) error

func CreateCIDRPod added in v2.2.5

func CreateCIDRPod(ctx context.Context, clientset *kubernetes.Clientset, namespace string) (*v13.Pod, error)

func CreateFolder added in v2.2.5

func CreateFolder(ctx context.Context, cli *client.Client, id string, src string, target string) (string, error)

func DeleteBlockFirewallRule

func DeleteBlockFirewallRule(ctx context.Context)

func DownloadFile added in v2.2.7

func DownloadFile(uri string) (string, error)

func DownloadFileStream added in v2.2.7

func DownloadFileStream(uri string) ([]byte, error)

func DownloadFileWithName added in v2.2.7

func DownloadFileWithName(uri, name string) (string, error)

func FindContainerByName added in v2.2.2

func FindContainerByName(pod *corev1.Pod, name string) (*corev1.Container, int)

func FindContainerEnv added in v2.2.2

func FindContainerEnv(container *corev1.Container, key string) (value string, found bool)

func GetAnnotation

func GetAnnotation(f util.Factory, ns string, resources string) (map[string]string, error)

func GetAvailableTCPPortOrDie

func GetAvailableTCPPortOrDie() (int, error)

func GetAvailableUDPPortOrDie

func GetAvailableUDPPortOrDie() (int, error)

func GetCIDRByDumpClusterInfo added in v2.2.5

func GetCIDRByDumpClusterInfo(ctx context.Context, clientset *kubernetes.Clientset) ([]*net.IPNet, error)

GetCIDRByDumpClusterInfo root 22008 21846 14 Jan18 ? 6-22:53:35 kube-apiserver --advertise-address=10.56.95.185 --allow-privileged=true --anonymous-auth=True --apiserver-count=3 --authorization-mode=Node,RBAC --bind-address=0.0.0.0 --client-ca-file=/etc/kubernetes/ssl/ca.crt --default-not-ready-toleration-seconds=300 --default-unreachable-toleration-seconds=300 --enable-admission-plugins=NodeRestriction --enable-aggregator-routing=False --enable-bootstrap-token-auth=true --endpoint-reconciler-type=lease --etcd-cafile=/etc/ssl/etcd/ssl/ca.pem --etcd-certfile=/etc/ssl/etcd/ssl/node-kube-control-1.pem --etcd-keyfile=/etc/ssl/etcd/ssl/node-kube-control-1-key.pem --etcd-servers=https://10.56.95.185:2379,https://10.56.95.186:2379,https://10.56.95.187:2379 --etcd-servers-overrides=/events#https://10.56.95.185:2381;https://10.56.95.186:2381;https://10.56.95.187:2381 --event-ttl=1h0m0s --insecure-port=0 --kubelet-certificate-authority=/etc/kubernetes/ssl/kubelet/kubelet-ca.crt --kubelet-client-certificate=/etc/kubernetes/ssl/apiserver-kubelet-client.crt --kubelet-client-key=/etc/kubernetes/ssl/apiserver-kubelet-client.key --kubelet-preferred-address-types=InternalDNS,InternalIP,Hostname,ExternalDNS,ExternalIP --profiling=False --proxy-client-cert-file=/etc/kubernetes/ssl/front-proxy-client.crt --proxy-client-key-file=/etc/kubernetes/ssl/front-proxy-client.key --request-timeout=1m0s --requestheader-allowed-names=front-proxy-client --requestheader-client-ca-file=/etc/kubernetes/ssl/front-proxy-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/etc/kubernetes/ssl/sa.pub --service-account-signing-key-file=/etc/kubernetes/ssl/sa.key --service-cluster-ip-range=10.233.0.0/18 --service-node-port-range=30000-32767 --storage-backend=etcd3 --tls-cert-file=/etc/kubernetes/ssl/apiserver.crt --tls-private-key-file=/etc/kubernetes/ssl/apiserver.key ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#configure-ipv4-ipv6-dual-stack get cidr by dump cluster info

func GetCIDRElegant

func GetCIDRElegant(ctx context.Context, clientset *kubernetes.Clientset, restconfig *rest.Config, namespace string) ([]*net.IPNet, error)

GetCIDRElegant 1) dump cluster info 2) grep cmdline 3) create svc + cat *.conflist 4) create svc + get pod ip with svc mask

func GetCIDRFromCNI added in v2.2.5

func GetCIDRFromCNI(ctx context.Context, clientset *kubernetes.Clientset, restconfig *rest.Config, namespace string) ([]*net.IPNet, error)

GetCIDRFromCNI kube-controller-manager--allocate-node-cidrs=true--authentication-kubeconfig=/etc/kubernetes/controller-manager.conf--authorization-kubeconfig=/etc/kubernetes/controller-manager.conf--bind-address=0.0.0.0--client-ca-file=/etc/kubernetes/ssl/ca.crt--cluster-cidr=10.233.64.0/18--cluster-name=cluster.local--cluster-signing-cert-file=/etc/kubernetes/ssl/ca.crt--cluster-signing-key-file=/etc/kubernetes/ssl/ca.key--configure-cloud-routes=false--controllers=*,bootstrapsigner,tokencleaner--kubeconfig=/etc/kubernetes/controller-manager.conf--leader-elect=true--leader-elect-lease-duration=15s--leader-elect-renew-deadline=10s--node-cidr-mask-size=24--node-monitor-grace-period=40s--node-monitor-period=5s--port=0--profiling=False--requestheader-client-ca-file=/etc/kubernetes/ssl/front-proxy-ca.crt--root-ca-file=/etc/kubernetes/ssl/ca.crt--service-account-private-key-file=/etc/kubernetes/ssl/sa.key--service-cluster-ip-range=10.233.0.0/18--terminated-pod-gc-threshold=12500--use-service-account-credentials=true

func GetCIDRFromResourceUgly

func GetCIDRFromResourceUgly(ctx context.Context, clientset *kubernetes.Clientset, namespace string) []*net.IPNet

GetCIDRFromResourceUgly use podIP/24 and serviceIP/24 as cidr

func GetClusterID added in v2.2.7

func GetClusterID(ctx context.Context, client v12.ConfigMapInterface) (types.UID, error)

func GetClusterIDByCM added in v2.2.7

func GetClusterIDByCM(cm *v1.ConfigMap) types.UID

func GetDNS added in v2.2.5

func GetDNS(ctx context.Context, clientSet *kubernetes.Clientset, restConfig *rest.Config, ns, pod string) (*dns.ClientConfig, error)

func GetDNSIPFromDnsPod

func GetDNSIPFromDnsPod(ctx context.Context, clientset *kubernetes.Clientset) (ips []string, err error)

func GetDNSServiceIPFromPod

func GetDNSServiceIPFromPod(ctx context.Context, clientset *kubernetes.Clientset, config *rest.Config, podName, namespace string) (*dns.ClientConfig, error)

func GetEnv

func GetEnv(ctx context.Context, set *kubernetes.Clientset, config *rest.Config, ns, podName string) (map[string][]string, error)

func GetIPBaseNic

func GetIPBaseNic() (*net.IPNet, error)

func GetKubeConfigPath added in v2.2.5

func GetKubeConfigPath(f cmdutil.Factory) string

func GetKubeconfigCluster added in v2.2.5

func GetKubeconfigCluster(f cmdutil.Factory) string

func GetKubeconfigPath

func GetKubeconfigPath(factory cmdutil.Factory) (string, error)

func GetLocalTunIP

func GetLocalTunIP(tunName string) (net.IP, net.IP, error)

func GetManifest

func GetManifest(httpCli *http.Client, os string, arch string) (version string, url string, err error)

func GetNsForListPodAndSvc added in v2.2.13

func GetNsForListPodAndSvc(ctx context.Context, clientset *kubernetes.Clientset, nsList []string) (podNs string, svcNs string, err error)

func GetPodCIDRFromCNI added in v2.2.5

func GetPodCIDRFromCNI(ctx context.Context, clientset *kubernetes.Clientset, restconfig *rest.Config, namespace string) ([]*net.IPNet, error)

GetPodCIDRFromCNI

*

{
  "name": "cni0",
  "cniVersion":"0.3.1",
  "plugins":[
    {
      "datastore_type": "kubernetes",
      "nodename": "10.56.95.185",
      "type": "calico",
      "log_level": "info",
      "log_file_path": "/var/log/calico/cni/cni.log",
      "ipam": {
        "type": "calico-ipam",
        "assign_ipv4": "true",
        "ipv4_pools": ["10.233.64.0/18"]
      },
      "policy": {
        "type": "k8s"
      },
      "kubernetes": {
        "kubeconfig": "/etc/cni/net.d/calico-kubeconfig"
      }
    },
    {
      "type":"portmap",
      "capabilities": {
        "portMappings": true
      }
    }
  ]
}

func GetPodCIDRFromPod added in v2.2.5

func GetPodCIDRFromPod(ctx context.Context, clientset *kubernetes.Clientset, namespace string, svc *net.IPNet) ([]*net.IPNet, error)

func GetPodTemplateSpecPath

func GetPodTemplateSpecPath(u *unstructured.Unstructured) (*v1.PodTemplateSpec, []string, error)

func GetRunningPodList added in v2.2.5

func GetRunningPodList(ctx context.Context, clientset *kubernetes.Clientset, ns string, labelSelector string) ([]corev1.Pod, error)

func GetServiceCIDRByCreateService added in v2.2.5

func GetServiceCIDRByCreateService(ctx context.Context, serviceInterface v12.ServiceInterface) (*net.IPNet, error)

func GetTlsDomain

func GetTlsDomain(ns string) string

func GetTopOwnerReference

func GetTopOwnerReference(factory util.Factory, ns, workload string) (*resource.Info, error)

func GetTopOwnerReferenceBySelector

func GetTopOwnerReferenceBySelector(factory util.Factory, ns, selector string) (sets.Set[string], error)

GetTopOwnerReferenceBySelector assume pods, controller has same labels

func GetTunDevice

func GetTunDevice(ips ...net.IP) (*net.Interface, error)

func GetTunDeviceByConn

func GetTunDeviceByConn(tun net.Conn) (*net.Interface, error)

func GetUnstructuredObject

func GetUnstructuredObject(f util.Factory, ns string, workloads string) (*resource.Info, error)

func GetUnstructuredObjectBySelector

func GetUnstructuredObjectBySelector(f util.Factory, ns string, selector string) ([]*resource.Info, error)

func GetUnstructuredObjectList

func GetUnstructuredObjectList(f util.Factory, ns string, workloads []string) ([]*resource.Info, error)

func GetVolume added in v2.2.5

func GetVolume(ctx context.Context, f util.Factory, ns, podName string) (map[string][]mount.Mount, error)

GetVolume key format: [container name]-[volume mount name]

func InitFactory added in v2.2.5

func InitFactory(kubeconfigBytes string, ns string) cmdutil.Factory

func InitFactoryByPath added in v2.2.5

func InitFactoryByPath(kubeconfig string, ns string) cmdutil.Factory

func InitLoggerForClient added in v2.2.17

func InitLoggerForClient(debug bool)

func InitLoggerForServer added in v2.2.2

func InitLoggerForServer(debug bool)

func IsIPv4

func IsIPv4(packet []byte) bool

func IsIPv6

func IsIPv6(packet []byte) bool

func IsIPv6Enabled added in v2.2.9

func IsIPv6Enabled() (bool, error)

func IsPortListening

func IsPortListening(port int) bool

func IsSameCluster

func IsSameCluster(client v12.ConfigMapInterface, namespace string, clientB v12.ConfigMapInterface, namespaceB string) (bool, error)

func IsWindows

func IsWindows() bool

func Join added in v2.2.16

func Join(names ...string) string

func ListPod added in v2.2.13

func ListPod(ctx context.Context, lister v12.PodInterface, addRouteFunc func(resource string, ipStr string)) error

func ListService added in v2.2.13

func ListService(ctx context.Context, lister v12.ServiceInterface, addRouteFunc func(resource string, ipStr string)) error

func Merge

func Merge[K comparable, V any](fromMap, ToMap map[K]V) map[K]V

func Move added in v2.2.16

func Move(src, dst string) error

func ParseCIDRFromString added in v2.2.5

func ParseCIDRFromString(content string) (result []*net.IPNet)

ParseCIDRFromString

* kube-apiserver: --service-cluster-ip-range=<IPv4 CIDR>,<IPv6 CIDR> kube-controller-manager: --cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR> --service-cluster-ip-range=<IPv4 CIDR>,<IPv6 CIDR> --node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6 defaults to /24 for IPv4 and /64 for IPv6 kube-proxy: --cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>

func ParseDirMapping added in v2.2.11

func ParseDirMapping(dir string) (local, remote string, err error)

func ParsePort added in v2.2.3

func ParsePort(str string) v1.ContainerPort

ParsePort tcp/udp/remote:local

func Ping

func Ping(ctx context.Context, srcIP, dstIP string) (bool, error)

func PortForwardPod

func PortForwardPod(config *rest.Config, clientset *rest.RESTClient, podName, namespace string, portPair []string, readyChan chan struct{}, stopChan <-chan struct{}, out, errOut io.Writer) error

func Print

func Print(writer io.Writer, slogan string)

func PrintStatus

func PrintStatus(pod *corev1.Pod, writer io.Writer)

func PrintStatusInline

func PrintStatusInline(pod *corev1.Pod) string

func RemoveDir added in v2.2.5

func RemoveDir(volume map[string][]mount.Mount) error

func RemoveLargerOverlappingCIDRs added in v2.2.20

func RemoveLargerOverlappingCIDRs(cidrNets []*net.IPNet) []*net.IPNet

func Rollback added in v2.2.5

func Rollback(f util.Factory, ns, workload string)

func RolloutStatus

func RolloutStatus(ctx1 context.Context, factory cmdutil.Factory, ns, workloads string, timeout time.Duration) (err error)

func RunWithRollingOutWithChecker

func RunWithRollingOutWithChecker(cmd *osexec.Cmd, checker func(log string)) (string, string, error)

func RunningInContainer

func RunningInContainer() bool

RunningInContainer returns true if the current process runs from inside a docker container.

func SafeClose added in v2.2.9

func SafeClose[T any](c chan T)

func SafeRead added in v2.2.9

func SafeRead[T any](c chan T) (T, bool)

func SafeWrite added in v2.2.9

func SafeWrite[T any](c chan<- T, value T)

func Shell

func Shell(_ context.Context, clientset *kubernetes.Clientset, config *rest.Config, podName, containerName, ns string, cmd []string) (string, error)

func StartupPProf

func StartupPProf(port int)

func UnzipKubeVPNIntoFile

func UnzipKubeVPNIntoFile(zipFile, filename string) error

func UpdateImage added in v2.2.5

func UpdateImage(ctx context.Context, factory util.Factory, ns string, deployName string, image string) error

UpdateImage update to newer image

func WaitPod

func WaitPod(ctx context.Context, podInterface v12.PodInterface, list v1.ListOptions, checker func(*corev1.Pod) bool) error

func WaitPodToBeReady

func WaitPodToBeReady(ctx context.Context, podInterface v12.PodInterface, selector v1.LabelSelector) error

func WaitPortToBeFree

func WaitPortToBeFree(ctx context.Context, port int) error

func WatchPodToAddRoute added in v2.2.13

func WatchPodToAddRoute(ctx context.Context, watcher v12.PodInterface, addRouteFunc func(resource string, ipStr string)) error

func WatchServiceToAddRoute added in v2.2.13

func WatchServiceToAddRoute(ctx context.Context, watcher v12.ServiceInterface, routeFunc func(resource string, ipStr string)) error

Types

type AssetsEntity

type AssetsEntity struct {
	Url                string         `json:"url"`
	Id                 int64          `json:"id"`
	NodeId             string         `json:"node_id"`
	Name               string         `json:"name"`
	Label              string         `json:"label"`
	Uploader           UploaderEntity `json:"uploader"`
	ContentType        string         `json:"content_type"`
	State              string         `json:"state"`
	Size               int64          `json:"size"`
	DownloadCount      int64          `json:"download_count"`
	CreatedAt          string         `json:"created_at"`
	UpdatedAt          string         `json:"updated_at"`
	BrowserDownloadUrl string         `json:"browser_download_url"`
}

type AuthorEntity

type AuthorEntity struct {
	Login             string `json:"login"`
	Id                int64  `json:"id"`
	NodeId            string `json:"node_id"`
	AvatarUrl         string `json:"avatar_url"`
	GravatarId        string `json:"gravatar_id"`
	Url               string `json:"url"`
	HtmlUrl           string `json:"html_url"`
	FollowersUrl      string `json:"followers_url"`
	FollowingUrl      string `json:"following_url"`
	GistsUrl          string `json:"gists_url"`
	StarredUrl        string `json:"starred_url"`
	SubscriptionsUrl  string `json:"subscriptions_url"`
	OrganizationsUrl  string `json:"organizations_url"`
	ReposUrl          string `json:"repos_url"`
	EventsUrl         string `json:"events_url"`
	ReceivedEventsUrl string `json:"received_events_url"`
	Type              string `json:"type"`
	SiteAdmin         bool   `json:"site_admin"`
}

type ForwardedPort

type ForwardedPort struct {
	Local  uint16
	Remote uint16
}

ForwardedPort contains a Local:Remote port pairing.

type PodRouteConfig

type PodRouteConfig struct {
	LocalTunIPv4 string
	LocalTunIPv6 string
}

type PortForwarder

type PortForwarder struct {
	Ready chan struct{}
	// contains filtered or unexported fields
}

PortForwarder knows how to listen for local connections and forward them to a remote pod via an upgraded HTTP request.

func NewOnAddresses

func NewOnAddresses(dialer httpstream.Dialer, addresses []string, ports []string, stopChan <-chan struct{}, readyChan chan struct{}, out, errOut io.Writer) (*PortForwarder, error)

NewOnAddresses creates a new PortForwarder with custom listen addresses.

func (*PortForwarder) Close

func (pf *PortForwarder) Close()

Close stops all listeners of PortForwarder.

func (*PortForwarder) ForwardPorts

func (pf *PortForwarder) ForwardPorts() error

ForwardPorts formats and executes a port forwarding request. The connection will remain open until stopChan is closed.

func (*PortForwarder) GetPorts

func (pf *PortForwarder) GetPorts() ([]ForwardedPort, error)

GetPorts will return the ports that were forwarded; this can be used to retrieve the locally-bound port in cases where the input was port 0. This function will signal an error if the Ready channel is nil or if the listeners are not ready yet; this function will succeed after the Ready channel has been closed.

type ReactionsEntity

type ReactionsEntity struct {
	Url        string `json:"url"`
	TotalCount int64  `json:"total_count"`
	Normal1    int64  `json:"+1"`
	Normal11   int64  `json:"-1"`
	Laugh      int64  `json:"laugh"`
	Hooray     int64  `json:"hooray"`
	Confused   int64  `json:"confused"`
	Heart      int64  `json:"heart"`
	Rocket     int64  `json:"rocket"`
	Eyes       int64  `json:"eyes"`
}

type RootEntity

type RootEntity struct {
	Url             string          `json:"url"`
	AssetsUrl       string          `json:"assets_url"`
	UploadUrl       string          `json:"upload_url"`
	HtmlUrl         string          `json:"html_url"`
	Id              int64           `json:"id"`
	NodeId          string          `json:"node_id"`
	TagName         string          `json:"tag_name"`
	TargetCommitish string          `json:"target_commitish"`
	Name            string          `json:"name"`
	Draft           bool            `json:"draft"`
	Prerelease      bool            `json:"prerelease"`
	CreatedAt       string          `json:"created_at"`
	PublishedAt     string          `json:"published_at"`
	Assets          []AssetsEntity  `json:"assets"`
	TarballUrl      string          `json:"tarball_url"`
	ZipballUrl      string          `json:"zipball_url"`
	Body            string          `json:"body"`
	Reactions       ReactionsEntity `json:"reactions"`
}

type UploaderEntity

type UploaderEntity struct {
	Login             string `json:"login"`
	Id                int64  `json:"id"`
	NodeId            string `json:"node_id"`
	AvatarUrl         string `json:"avatar_url"`
	GravatarId        string `json:"gravatar_id"`
	Url               string `json:"url"`
	HtmlUrl           string `json:"html_url"`
	FollowersUrl      string `json:"followers_url"`
	FollowingUrl      string `json:"following_url"`
	GistsUrl          string `json:"gists_url"`
	StarredUrl        string `json:"starred_url"`
	SubscriptionsUrl  string `json:"subscriptions_url"`
	OrganizationsUrl  string `json:"organizations_url"`
	ReposUrl          string `json:"repos_url"`
	EventsUrl         string `json:"events_url"`
	ReceivedEventsUrl string `json:"received_events_url"`
	Type              string `json:"type"`
	SiteAdmin         bool   `json:"site_admin"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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