Documentation
¶
Index ¶
- Constants
- Variables
- func AggregatorCacheFunc(newCache cache.NewCacheFunc, ...) cache.NewCacheFunc
- func ApplyClientConnectionConfigurationToRESTConfig(clientConnection *componentbaseconfigv1alpha1.ClientConnectionConfiguration, ...)
- func CheckForwardPodPort(fw PortForwarder) error
- func DefaultCreateOptions() metav1.CreateOptions
- func DefaultGetOptions() metav1.GetOptions
- func DefaultUpdateOptions() metav1.UpdateOptions
- func NewRuntimeCache(config *rest.Config, options cache.Options) (cache.Cache, error)
- func RESTConfigFromClientConnectionConfiguration(cfg *componentbaseconfigv1alpha1.ClientConnectionConfiguration, ...) (*rest.Config, error)
- func RESTConfigFromKubeconfig(kubeconfig []byte, allowedFields ...string) (*rest.Config, error)
- func RESTConfigFromKubeconfigFile(kubeconfigFile string, allowedFields ...string) (*rest.Config, error)
- func SingleObjectCacheFunc(log logr.Logger, scheme *runtime.Scheme, obj client.Object) cache.NewCacheFunc
- func ValidateConfig(config clientcmdapi.Config) error
- func ValidateConfigWithAllowList(config clientcmdapi.Config, allowedFields []string) error
- type Applier
- type ApplyOption
- type ApplyOptions
- type ChartApplier
- type Config
- type ConfigFunc
- func WithAllowedUserFields(allowedUserFields []string) ConfigFunc
- func WithCacheSyncPeriod(sync time.Duration) ConfigFunc
- func WithClientConfig(clientConfig clientcmd.ClientConfig) ConfigFunc
- func WithClientConnectionOptions(cfg componentbaseconfigv1alpha1.ClientConnectionConfiguration) ConfigFunc
- func WithClientOptions(opt client.Options) ConfigFunc
- func WithDisabledCachedClient() ConfigFunc
- func WithNewCacheFunc(fn cache.NewCacheFunc) ConfigFunc
- func WithRESTConfig(restConfig *rest.Config) ConfigFunc
- func WithRuntimeAPIReader(runtimeAPIReader client.Reader) ConfigFunc
- func WithRuntimeCache(runtimeCache cache.Cache) ConfigFunc
- func WithRuntimeClient(runtimeClient client.Client) ConfigFunc
- type DeleteManifestOption
- type DeleteManifestOptions
- type DeleteOption
- type DeleteOptions
- type FallbackClient
- type Interface
- func NewClientFromBytes(kubeconfig []byte, fns ...ConfigFunc) (Interface, error)
- func NewClientFromFile(masterURL, kubeconfigPath string, fns ...ConfigFunc) (Interface, error)
- func NewClientFromSecret(ctx context.Context, c client.Client, namespace, secretName string, ...) (Interface, error)
- func NewClientFromSecretObject(secret *corev1.Secret, fns ...ConfigFunc) (Interface, error)
- func NewWithConfig(fns ...ConfigFunc) (Interface, error)
- type MergeFunc
- type MergeFuncs
- type PodExecutor
- type PortForwarder
- type TolerateErrorFunc
- type UnstructuredReader
- type ValueOption
Constants ¶
const ( // KubeConfig is the key to the kubeconfig KubeConfig = "kubeconfig" // AuthClientCertificate references the AuthInfo.ClientCertificate field of a kubeconfig AuthClientCertificate = "client-certificate" // AuthClientKey references the AuthInfo.ClientKey field of a kubeconfig AuthClientKey = "client-key" // AuthTokenFile references the AuthInfo.Tokenfile field of a kubeconfig AuthTokenFile = "tokenFile" // AuthImpersonate references the AuthInfo.Impersonate field of a kubeconfig AuthImpersonate = "act-as" // AuthProvider references the AuthInfo.AuthProvider field of a kubeconfig AuthProvider = "auth-provider" // AuthExec references the AuthInfo.Exec field of a kubeconfig AuthExec = "exec" )
Variables ¶
var ( DefaultMergeFuncs = MergeFuncs{ corev1.SchemeGroupVersion.WithKind("Service").GroupKind(): func(newObj, oldObj *unstructured.Unstructured) { newSvcType, found, _ := unstructured.NestedString(newObj.Object, "spec", "type") if !found { newSvcType = string(corev1.ServiceTypeClusterIP) _ = unstructured.SetNestedField(newObj.Object, newSvcType, "spec", "type") } oldSvcType, found, _ := unstructured.NestedString(oldObj.Object, "spec", "type") if !found { oldSvcType = string(corev1.ServiceTypeClusterIP) } annotations, found, _ := unstructured.NestedMap(oldObj.Object, "metadata", "annotations") if found { mergedAnnotations := make(map[string]any) for key, value := range annotations { annotation := key annotationValue := value.(string) for _, keepAnnotation := range keepServiceAnnotations() { if strings.HasPrefix(annotation, keepAnnotation) { mergedAnnotations[annotation] = annotationValue } } } newAnnotations, found, _ := unstructured.NestedMap(newObj.Object, "metadata", "annotations") if found { for key, value := range newAnnotations { mergedAnnotations[key] = value.(string) } } _ = unstructured.SetNestedMap(newObj.Object, mergedAnnotations, "metadata", "annotations") } switch newSvcType { case string(corev1.ServiceTypeLoadBalancer), string(corev1.ServiceTypeNodePort): oldPorts, found, _ := unstructured.NestedSlice(oldObj.Object, "spec", "ports") if !found { break } newPorts, found, _ := unstructured.NestedSlice(newObj.Object, "spec", "ports") if !found { break } ports := make([]any, 0, len(newPorts)) for _, newPort := range newPorts { np := newPort.(map[string]any) npName, _, _ := unstructured.NestedString(np, "name") npPort, _ := nestedFloat64OrInt64(np, "port") nodePort, ok := nestedFloat64OrInt64(np, "nodePort") for _, oldPortObj := range oldPorts { op := oldPortObj.(map[string]any) opName, _, _ := unstructured.NestedString(op, "name") opPort, _ := nestedFloat64OrInt64(op, "port") if (opName == npName || opPort == npPort) && (!ok || nodePort == 0) { np["nodePort"] = op["nodePort"] } } ports = append(ports, np) } _ = unstructured.SetNestedSlice(newObj.Object, ports, "spec", "ports") case string(corev1.ServiceTypeExternalName): return } if oldSvcType != string(corev1.ServiceTypeExternalName) { newClusterIP, _, _ := unstructured.NestedString(newObj.Object, "spec", "clusterIP") if newClusterIP != corev1.ClusterIPNone || newSvcType != string(corev1.ServiceTypeClusterIP) { oldClusterIP, _, _ := unstructured.NestedString(oldObj.Object, "spec", "clusterIP") _ = unstructured.SetNestedField(newObj.Object, oldClusterIP, "spec", "clusterIP") } } newETP, _, _ := unstructured.NestedString(newObj.Object, "spec", "externalTrafficPolicy") oldETP, _, _ := unstructured.NestedString(oldObj.Object, "spec", "externalTrafficPolicy") if oldSvcType == string(corev1.ServiceTypeLoadBalancer) && newSvcType == string(corev1.ServiceTypeLoadBalancer) && newETP == string(corev1.ServiceExternalTrafficPolicyLocal) && oldETP == string(corev1.ServiceExternalTrafficPolicyLocal) { newHealthCheckPort, _ := nestedFloat64OrInt64(newObj.Object, "spec", "healthCheckNodePort") if newHealthCheckPort == 0 { oldHealthCheckPort, _ := nestedFloat64OrInt64(oldObj.Object, "spec", "healthCheckNodePort") _ = unstructured.SetNestedField(newObj.Object, oldHealthCheckPort, "spec", "healthCheckNodePort") } } }, corev1.SchemeGroupVersion.WithKind("ServiceAccount").GroupKind(): func(newObj, oldObj *unstructured.Unstructured) { newObj.Object["secrets"] = oldObj.Object["secrets"] newObj.Object["imagePullSecrets"] = oldObj.Object["imagePullSecrets"] }, {Group: "autoscaling.k8s.io", Kind: "VerticalPodAutoscaler"}: func(newObj, oldObj *unstructured.Unstructured) { if oldStatus := oldObj.Object["status"]; oldStatus != nil { newObj.Object["status"] = oldStatus } }, } DeploymentKeepReplicasMergeFunc = MergeFunc(func(newObj, oldObj *unstructured.Unstructured) { oldReplicas, ok := nestedFloat64OrInt64(oldObj.Object, "spec", "replicas") if !ok { return } _ = unstructured.SetNestedField(newObj.Object, oldReplicas, "spec", "replicas") }) )
DefaultMergeFuncs contains options for common k8s objects, e.g. Service, ServiceAccount.
var ( // GardenScheme is the scheme used in the Garden cluster. GardenScheme = runtime.NewScheme() // SeedScheme is the scheme used in the Seed cluster. SeedScheme = runtime.NewScheme() // ShootScheme is the scheme used in the Shoot cluster. ShootScheme = runtime.NewScheme() // DefaultDeleteOptions use foreground propagation policy and grace period of 60 seconds. DefaultDeleteOptions = []client.DeleteOption{ client.PropagationPolicy(metav1.DeletePropagationForeground), client.GracePeriodSeconds(60), } // GardenSerializer is a YAML serializer using the Garden scheme. GardenSerializer = json.NewSerializerWithOptions(json.DefaultMetaFactory, GardenScheme, GardenScheme, json.SerializerOptions{Yaml: true, Pretty: false, Strict: false}) // GardenCodec is a codec factory using the Garden scheme. GardenCodec = serializer.NewCodecFactory(GardenScheme) // SeedSerializer is a YAML serializer using the Seed scheme. SeedSerializer = json.NewSerializerWithOptions(json.DefaultMetaFactory, SeedScheme, SeedScheme, json.SerializerOptions{Yaml: true, Pretty: false, Strict: false}) // SeedCodec is a codec factory using the Seed scheme. SeedCodec = serializer.NewCodecFactory(SeedScheme) // ShootSerializer is a YAML serializer using the Shoot scheme. ShootSerializer = json.NewSerializerWithOptions(json.DefaultMetaFactory, ShootScheme, ShootScheme, json.SerializerOptions{Yaml: true, Pretty: false, Strict: false}) // ShootCodec is a codec factory using the Shoot scheme. ShootCodec = serializer.NewCodecFactory(ShootScheme) )
var ( // AddGardenSchemeToScheme adds all object kinds used in the Garden cluster into the given scheme. AddGardenSchemeToScheme = gardenSchemeBuilder.AddToScheme // AddSeedSchemeToScheme adds all object kinds used in the Seed cluster into the given scheme. AddSeedSchemeToScheme = seedSchemeBuilder.AddToScheme // AddShootSchemeToScheme adds all object kinds used in the Shoot cluster into the given scheme. AddShootSchemeToScheme = shootSchemeBuilder.AddToScheme )
var ForceNamespace = forceNamespace{}
ForceNamespace can be used for native chart objects do not come with a Release.Namespace option and leave the namespace field empty.
var Values = func(values any) ValueOption { return &withValue{values} }
Values applies values to ApplyOptions or DeleteOptions.
Functions ¶
func AggregatorCacheFunc ¶ added in v1.20.0
func AggregatorCacheFunc(newCache cache.NewCacheFunc, typeToNewCache map[client.Object]cache.NewCacheFunc, scheme *runtime.Scheme) cache.NewCacheFunc
AggregatorCacheFunc returns a `cache.NewCacheFunc` which creates a cache that holds different cache implementations depending on the objects' GVKs.
func ApplyClientConnectionConfigurationToRESTConfig ¶ added in v1.110.0
func ApplyClientConnectionConfigurationToRESTConfig(clientConnection *componentbaseconfigv1alpha1.ClientConnectionConfiguration, rest *rest.Config)
ApplyClientConnectionConfigurationToRESTConfig applies the given client connection configurations to the given REST config.
func CheckForwardPodPort ¶ added in v1.32.0
func CheckForwardPodPort(fw PortForwarder) error
CheckForwardPodPort tries to open a portForward connection with the passed PortForwarder. It returns nil if the port forward connection has been established successfully or an error otherwise.
func DefaultCreateOptions ¶ added in v1.11.0
func DefaultCreateOptions() metav1.CreateOptions
DefaultCreateOptions are the default options for CREATE requests.
func DefaultGetOptions ¶ added in v1.11.0
func DefaultGetOptions() metav1.GetOptions
DefaultGetOptions are the default options for GET requests.
func DefaultUpdateOptions ¶ added in v1.11.0
func DefaultUpdateOptions() metav1.UpdateOptions
DefaultUpdateOptions are the default options for UPDATE requests.
func NewRuntimeCache ¶ added in v1.7.0
NewRuntimeCache creates a new cache.Cache with the given config and options. It can be used for creating new controller-runtime clients with caches.
func RESTConfigFromClientConnectionConfiguration ¶ added in v0.33.0
func RESTConfigFromClientConnectionConfiguration(cfg *componentbaseconfigv1alpha1.ClientConnectionConfiguration, kubeconfig []byte, allowedFields ...string) (*rest.Config, error)
RESTConfigFromClientConnectionConfiguration creates a *rest.Config from a componentbaseconfigv1alpha1.ClientConnectionConfiguration and the configured kubeconfig. It takes an optional list of additionally allowed kubeconfig fields.
func RESTConfigFromKubeconfig ¶ added in v1.10.0
RESTConfigFromKubeconfig returns a rest.Config from the bytes of a kubeconfig. It takes an optional list of additionally allowed kubeconfig fields.
func RESTConfigFromKubeconfigFile ¶ added in v1.75.0
func RESTConfigFromKubeconfigFile(kubeconfigFile string, allowedFields ...string) (*rest.Config, error)
RESTConfigFromKubeconfigFile returns a rest.Config from the bytes of a kubeconfig file. It takes an optional list of additionally allowed kubeconfig fields.
func SingleObjectCacheFunc ¶ added in v1.67.0
func SingleObjectCacheFunc(log logr.Logger, scheme *runtime.Scheme, obj client.Object) cache.NewCacheFunc
SingleObjectCacheFunc returns a cache.NewCacheFunc for the SingleObject implementation.
func ValidateConfig ¶ added in v0.33.0
func ValidateConfig(config clientcmdapi.Config) error
ValidateConfig validates that the auth info of a given kubeconfig doesn't have unsupported fields.
func ValidateConfigWithAllowList ¶ added in v1.38.0
func ValidateConfigWithAllowList(config clientcmdapi.Config, allowedFields []string) error
ValidateConfigWithAllowList validates that the auth info of a given kubeconfig doesn't have unsupported fields. It takes an additional list of allowed fields.
Types ¶
type Applier ¶
type Applier interface { ApplyManifest(ctx context.Context, unstructured UnstructuredReader, options MergeFuncs) error DeleteManifest(ctx context.Context, unstructured UnstructuredReader, opts ...DeleteManifestOption) error }
Applier is an interface which describes declarative operations to apply multiple Kubernetes objects.
func NewApplier ¶ added in v1.6.0
func NewApplier(c client.Client, restMapper meta.RESTMapper) Applier
NewApplier constructs a new Applier from the given client.
type ApplyOption ¶ added in v1.2.0
type ApplyOption interface { // MutateApplyOptions applies this configuration to the given apply options. MutateApplyOptions(opts *ApplyOptions) }
ApplyOption is some configuration that modifies options for a apply request.
type ApplyOptions ¶ added in v1.2.0
type ApplyOptions struct { // Values to pass to chart. Values any // Additional MergeFunctions. MergeFuncs MergeFuncs // Forces the namespace for chart objects when applying the chart, this is because sometimes native chart // objects do not come with a Release.Namespace option and leave the namespace field empty ForceNamespace bool }
ApplyOptions contains options for apply requests
type ChartApplier ¶
type ChartApplier interface { chartrenderer.Interface ApplyFromEmbeddedFS(ctx context.Context, embeddedFS embed.FS, chartPath, namespace, name string, opts ...ApplyOption) error DeleteFromEmbeddedFS(ctx context.Context, embeddedFS embed.FS, chartPath, namespace, name string, opts ...DeleteOption) error ApplyFromArchive(ctx context.Context, archive []byte, namespace, name string, opts ...ApplyOption) error DeleteFromArchive(ctx context.Context, archive []byte, namespace, name string, opts ...DeleteOption) error }
ChartApplier is an interface that describes needed methods that render and apply Helm charts in Kubernetes clusters.
func NewChartApplier ¶
func NewChartApplier(renderer chartrenderer.Interface, applier Applier) ChartApplier
NewChartApplier returns a new chart applier.
func NewChartApplierForConfig ¶
func NewChartApplierForConfig(config *rest.Config) (ChartApplier, error)
NewChartApplierForConfig returns a new chart applier based on the given REST config.
type Config ¶ added in v1.11.0
type Config struct {
// contains filtered or unexported fields
}
Config carries options for new ClientSets.
type ConfigFunc ¶
ConfigFunc is a function that mutates a Config struct. It implements the functional options pattern. See https://github.com/tmrts/go-patterns/blob/master/idiom/functional-options.md.
func WithAllowedUserFields ¶ added in v1.38.0
func WithAllowedUserFields(allowedUserFields []string) ConfigFunc
WithAllowedUserFields allows to specify additional kubeconfig.user fields allowed during validation.
func WithCacheSyncPeriod ¶ added in v1.79.0
func WithCacheSyncPeriod(sync time.Duration) ConfigFunc
WithCacheSyncPeriod returns a ConfigFunc that set the client's cache's sync period to the given duration.
func WithClientConfig ¶ added in v1.38.0
func WithClientConfig(clientConfig clientcmd.ClientConfig) ConfigFunc
WithClientConfig adds a ClientConfig for validation at a later stage.
func WithClientConnectionOptions ¶
func WithClientConnectionOptions(cfg componentbaseconfigv1alpha1.ClientConnectionConfiguration) ConfigFunc
WithClientConnectionOptions returns a ConfigFunc that transfers settings from the passed ClientConnectionConfiguration. The kubeconfig location in ClientConnectionConfiguration is disregarded, though!
func WithClientOptions ¶
func WithClientOptions(opt client.Options) ConfigFunc
WithClientOptions returns a ConfigFunc that sets the passed Options on the Config object.
func WithDisabledCachedClient ¶ added in v1.8.0
func WithDisabledCachedClient() ConfigFunc
WithDisabledCachedClient disables the cache in the controller-runtime client, so Client() will talk directly to the API server.
func WithNewCacheFunc ¶ added in v1.20.0
func WithNewCacheFunc(fn cache.NewCacheFunc) ConfigFunc
WithNewCacheFunc allows to set the function which is used to create a new cache.
func WithRESTConfig ¶
func WithRESTConfig(restConfig *rest.Config) ConfigFunc
WithRESTConfig returns a ConfigFunc that sets the passed rest.Config on the Config object.
func WithRuntimeAPIReader ¶ added in v1.57.0
func WithRuntimeAPIReader(runtimeAPIReader client.Reader) ConfigFunc
WithRuntimeAPIReader returns a ConfigFunc that sets the passed runtimeAPIReader on the Config object.
func WithRuntimeCache ¶ added in v1.57.0
func WithRuntimeCache(runtimeCache cache.Cache) ConfigFunc
WithRuntimeCache returns a ConfigFunc that sets the passed runtimeCache on the Config object.
func WithRuntimeClient ¶ added in v1.57.0
func WithRuntimeClient(runtimeClient client.Client) ConfigFunc
WithRuntimeClient returns a ConfigFunc that sets the passed runtimeClient on the Config object.
type DeleteManifestOption ¶ added in v1.7.0
type DeleteManifestOption interface { // MutateDeleteManifestOptions applies this configuration to the given delete options. MutateDeleteManifestOptions(opts *DeleteManifestOptions) }
DeleteManifestOption is some configuration that modifies options for a delete request.
type DeleteManifestOptions ¶ added in v1.7.0
type DeleteManifestOptions struct { // TolerateErrorFuncs are functions for which errors are tolerated. TolerateErrorFuncs []TolerateErrorFunc }
DeleteManifestOptions contains options for delete requests.
type DeleteOption ¶ added in v1.2.0
type DeleteOption interface { // MutateDeleteOptions applies this configuration to the given delete options. MutateDeleteOptions(opts *DeleteOptions) }
DeleteOption is some configuration that modifies options for a delete request.
type DeleteOptions ¶ added in v1.2.0
type DeleteOptions struct { // Values to pass to chart. Values any // Forces the namespace for chart objects when applying the chart, this is because sometimes native chart // objects do not come with a Release.Namespace option and leave the namespace field empty ForceNamespace bool // TolerateErrorFuncs are functions for which errors are tolerated. TolerateErrorFuncs []TolerateErrorFunc }
DeleteOptions contains options for delete requests
type FallbackClient ¶ added in v1.57.0
type FallbackClient struct { client.Client Reader client.Reader KindToNamespaces map[string]sets.Set[string] }
FallbackClient holds a `client.Client` and a `client.Reader` which is meant as a fallback in case the kind of an object is configured in `KindToNamespaces` but the namespace isn't.
func (*FallbackClient) Get ¶ added in v1.57.0
func (d *FallbackClient) Get(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error
Get retrieves an obj for a given object key from the Kubernetes Cluster. `client.Reader` is used in case the kind of an object is configured in `KindToNamespaces` but the namespace isn't.
func (*FallbackClient) List ¶ added in v1.57.0
func (d *FallbackClient) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error
List retrieves list of objects for a given namespace and list options.
type Interface ¶
type Interface interface { RESTConfig() *rest.Config RESTClient() rest.Interface // Client returns the ClientSet's controller-runtime client. This client should be used by default, as it carries // a cache, which uses SharedIndexInformers to keep up-to-date. Client() client.Client // APIReader returns a client.Reader that directly reads from the API server. // Wherever possible, try to avoid reading directly from the API server and instead rely on the cache. Some ideas: // If you want to avoid conflicts, try using patch requests that don't require optimistic locking instead of reading // from the APIReader. If you need to make sure, that you're not reading stale data (e.g. a previous update is // observed), use some mechanism that can detect/tolerate stale reads (e.g. add a timestamp annotation during the // write operation and wait until you see it in the cache). APIReader() client.Reader // Cache returns the ClientSet's controller-runtime cache. It can be used to get Informers for arbitrary objects. Cache() cache.Cache // Applier returns an Applier which uses the ClientSet's client. Applier() Applier // ChartRenderer returns a ChartRenderer populated with the cluster's Capabilities. ChartRenderer() chartrenderer.Interface // ChartApplier returns a ChartApplier using the ClientSet's ChartRenderer and Applier. ChartApplier() ChartApplier // PodExecutor returns a PodExecutor for executing into pods. PodExecutor() PodExecutor Kubernetes() kubernetesclientset.Interface // Version returns the server version of the targeted Kubernetes cluster. Version() string // DiscoverVersion tries to retrieve the server version of the targeted Kubernetes cluster and updates the // ClientSet's saved version accordingly. Use Version if you only want to retrieve the kubernetes version instead // of refreshing the ClientSet's saved version. DiscoverVersion() (*version.Info, error) // Start starts the cache of the ClientSet's controller-runtime client and returns immediately. // It must be called first before using the client to retrieve objects from the API server. Start(ctx context.Context) // WaitForCacheSync waits for the cache of the ClientSet's controller-runtime client to be synced. WaitForCacheSync(ctx context.Context) bool }
Interface is used to wrap the interactions with a Kubernetes cluster (which are performed with the help of kubernetes/client-go) in order to allow the implementation of several Kubernetes versions.
func NewClientFromBytes ¶
func NewClientFromBytes(kubeconfig []byte, fns ...ConfigFunc) (Interface, error)
NewClientFromBytes creates a new Client struct for a given kubeconfig byte slice.
func NewClientFromFile ¶
func NewClientFromFile(masterURL, kubeconfigPath string, fns ...ConfigFunc) (Interface, error)
NewClientFromFile creates a new Client struct for a given kubeconfig. The kubeconfig will be read from the filesystem at location <kubeconfigPath>. If given, <masterURL> overrides the master URL in the kubeconfig. If no filepath is given, the in-cluster configuration will be taken into account.
func NewClientFromSecret ¶
func NewClientFromSecret(ctx context.Context, c client.Client, namespace, secretName string, fns ...ConfigFunc) (Interface, error)
NewClientFromSecret creates a new Client struct for a given kubeconfig stored as a Secret in an existing Kubernetes cluster. This cluster will be accessed by the <k8sClient>. It will read the Secret <secretName> in <namespace>. The Secret must contain a field "kubeconfig" which will be used.
func NewClientFromSecretObject ¶
func NewClientFromSecretObject(secret *corev1.Secret, fns ...ConfigFunc) (Interface, error)
NewClientFromSecretObject creates a new Client struct for a given Kubernetes Secret object. The Secret must contain a field "kubeconfig" which will be used.
func NewWithConfig ¶
func NewWithConfig(fns ...ConfigFunc) (Interface, error)
NewWithConfig returns a new Kubernetes base client.
type MergeFunc ¶
type MergeFunc func(newObj, oldObj *unstructured.Unstructured)
MergeFunc determines how oldOj is merged into new oldObj.
type MergeFuncs ¶ added in v1.2.0
MergeFuncs can be used modify the default merge functions for ApplyOptions:
Apply(ctx, "chart", "my-ns", "my-release", MergeFuncs{ corev1.SchemeGroupVersion.WithKind("Service").GroupKind(): func(newObj, oldObj *unstructured.Unstructured) { newObj.SetAnnotations(map[string]string{"foo":"bar"}) } })
func CopyApplierOptions ¶
func CopyApplierOptions(in MergeFuncs) MergeFuncs
CopyApplierOptions returns a copies of the provided applier options.
func (MergeFuncs) MutateApplyOptions ¶ added in v1.2.0
func (m MergeFuncs) MutateApplyOptions(opts *ApplyOptions)
MutateApplyOptions applies this configuration to the given apply options.
type PodExecutor ¶
type PodExecutor interface { Execute(ctx context.Context, namespace, name, containerName string, command ...string) (io.Reader, io.Reader, error) ExecuteWithStreams(ctx context.Context, namespace, name, containerName string, stdin io.Reader, stdout, stderr io.Writer, command ...string) error }
PodExecutor is the pod executor interface
func NewPodExecutor ¶
func NewPodExecutor(config *rest.Config) PodExecutor
NewPodExecutor returns a podExecutor
type PortForwarder ¶ added in v1.32.0
type PortForwarder interface { ForwardPorts() error Ready() chan struct{} }
PortForwarder knows how to forward a port connection Ready channel is expected to be closed once the connection becomes ready
func SetupPortForwarder ¶ added in v1.32.0
func SetupPortForwarder(ctx context.Context, config *rest.Config, namespace, name string, local, remote int) (PortForwarder, error)
SetupPortForwarder sets up a PortForwarder which forwards the <remote> port of the pod with name <name> in namespace <namespace> to the <local> port. If <local> equals zero, a free port will be chosen randomly. When calling ForwardPorts on the returned PortForwarder, it will run until the given context is cancelled. Hence, the given context should carry a timeout and should be cancelled once the forwarding is no longer needed.
type TolerateErrorFunc ¶ added in v1.7.0
TolerateErrorFunc is a function for which err is tolerated.
func (TolerateErrorFunc) MutateDeleteManifestOptions ¶ added in v1.7.0
func (t TolerateErrorFunc) MutateDeleteManifestOptions(opts *DeleteManifestOptions)
MutateDeleteManifestOptions applies this configuration to the given delete manifest options.
func (TolerateErrorFunc) MutateDeleteOptions ¶ added in v1.7.0
func (t TolerateErrorFunc) MutateDeleteOptions(opts *DeleteOptions)
MutateDeleteOptions applies this configuration to the given delete options.
type UnstructuredReader ¶
type UnstructuredReader interface {
Read() (*unstructured.Unstructured, error)
}
UnstructuredReader an interface that all manifest readers should implement
func NewManifestReader ¶
func NewManifestReader(manifest []byte) UnstructuredReader
NewManifestReader initializes a reader for yaml manifests
func NewNamespaceSettingReader ¶
func NewNamespaceSettingReader(mReader UnstructuredReader, namespace string) UnstructuredReader
NewNamespaceSettingReader initializes a reader for yaml manifests with support for setting the namespace
func NewObjectReferenceReader ¶
func NewObjectReferenceReader(objectReference *corev1.ObjectReference) UnstructuredReader
NewObjectReferenceReader initializes a reader from ObjectReference
type ValueOption ¶ added in v1.2.0
type ValueOption interface { ApplyOption DeleteOption }
ValueOption contains value options for Apply and Delete.