Documentation
¶
Index ¶
- Variables
- func WithMultiCluster(ctx context.Context, clt Interface) context.Context
- type AuthInfo
- type Cluster
- type ClusterCondition
- type ClusterConditionType
- type ClusterRegistryClient
- func (m *ClusterRegistryClient) GetClient(ctx context.Context, clusterRef *corev1.ObjectReference, ...) (clt client.Client, err error)
- func (m *ClusterRegistryClient) GetConfig(ctx context.Context, clusterRef *corev1.ObjectReference) (config *rest.Config, err error)
- func (m *ClusterRegistryClient) GetConfigFromCluster(ctx context.Context, cluster *unstructured.Unstructured) (config *rest.Config, err error)
- func (m *ClusterRegistryClient) GetDynamic(ctx context.Context, clusterRef *corev1.ObjectReference) (dyn dynamic.Interface, err error)
- func (m *ClusterRegistryClient) ListClustersNamespaces(ctx context.Context, namespace string) (clusterNamespaces map[*corev1.ObjectReference][]corev1.Namespace, err error)
- type ClusterSpec
- type ClusterStatus
- type Interface
- type KubernetesAPIEndpoints
- type ObjectReference
- type ServerAddressByClientCIDR
Constants ¶
This section is empty.
Variables ¶
var ClusterRegistryGVK = ClusterRegistryGroupVersion.WithKind("Cluster")
var ClusterRegistryGroupVersion = schema.GroupVersion{Group: "clusterregistry.k8s.io", Version: "v1alpha1"}
var ErrDoesNotHaveEndpoints = errors.New("cluster object does not have spec.kubernetesApiEndpoints.serverEndpoints")
var ErrDoesNotHaveServerAddress = errors.New("cluster object does not have spec.kubernetesApiEndpoints.serverEndpoints.serverAddress")
var ErrDoesNotHaveToken = errors.New("secret does not have data.token")
var ErrNilReference = errors.New("nil reference for clusterRef object")
var ErrNoNameProvided = errors.New("name must be provided")
var ErrNoNamespaceProvided = errors.New("namespace must be provided")
Functions ¶
Types ¶
type AuthInfo ¶
type AuthInfo struct {
// User references an object that contains implementation-specific details
// about how a user should authenticate against this cluster.
// +optional
User *ObjectReference `json:"user,omitempty" protobuf:"bytes,1,opt,name=user"`
// Controller references an object that contains implementation-specific
// details about how a controller should authenticate. A simple use case for
// this would be to reference a secret in another namespace that stores a
// bearer token that can be used to authenticate against this cluster's API
// server.
Controller *ObjectReference `json:"controller,omitempty" protobuf:"bytes,2,opt,name=controller"`
}
AuthInfo holds information that describes how a client can get credentials to access the cluster. For example, OAuth2 client registration endpoints and supported flows, or Kerberos server locations.
type Cluster ¶
type Cluster struct {
metav1.TypeMeta `json:",inline"`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
// +optional
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Spec is the specification of the cluster. This may or may not be
// reconciled by an active controller.
// +optional
Spec ClusterSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
// Status is the status of the cluster.
// +optional
Status ClusterStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
}
+k8s:deepcopy-gen=false
type ClusterCondition ¶
type ClusterCondition struct {
// Type is the type of the cluster condition.
Type ClusterConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=ClusterConditionType"`
// Status is the status of the condition. One of True, False, Unknown.
Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"`
// LastHeartbeatTime is the last time this condition was updated.
// +optional
LastHeartbeatTime metav1.Time `json:"lastHeartbeatTime,omitempty" protobuf:"bytes,3,opt,name=lastHeartbeatTime"`
// LastTransitionTime is the last time the condition changed from one status to another.
// +optional
LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"`
// Reason is a (brief) reason for the condition's last status change.
// +optional
Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"`
// Message is a human-readable message indicating details about the last status change.
// +optional
Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"`
}
ClusterCondition contains condition information for a cluster.
type ClusterConditionType ¶
type ClusterConditionType string
ClusterConditionType marks the kind of cluster condition being reported.
const ( // ClusterOK means that the cluster is "OK". // // Since the cluster registry does not have a standard status controller, the // meaning of this condition is defined by the environment in which the // cluster is running. It is expected to mean that the cluster is reachable by // a controller that is reporting on its status, and that the cluster is ready // to have workloads scheduled. ClusterOK ClusterConditionType = "OK" )
type ClusterRegistryClient ¶
ClusterRegistryClient implements the deprecated cluster registry cluster resource multi cluster client https://github.com/kubernetes-retired/cluster-registry/blob/master/pkg/apis/clusterregistry/v1alpha1/types.go
func (*ClusterRegistryClient) GetClient ¶
func (m *ClusterRegistryClient) GetClient(ctx context.Context, clusterRef *corev1.ObjectReference, scheme *runtime.Scheme) (clt client.Client, err error)
GetClient returns a client using the cluster configuration
func (*ClusterRegistryClient) GetConfig ¶
func (m *ClusterRegistryClient) GetConfig(ctx context.Context, clusterRef *corev1.ObjectReference) (config *rest.Config, err error)
GetConfig returns the configuration based on the Cluster
func (*ClusterRegistryClient) GetConfigFromCluster ¶
func (m *ClusterRegistryClient) GetConfigFromCluster(ctx context.Context, cluster *unstructured.Unstructured) (config *rest.Config, err error)
func (*ClusterRegistryClient) GetDynamic ¶
func (m *ClusterRegistryClient) GetDynamic(ctx context.Context, clusterRef *corev1.ObjectReference) (dyn dynamic.Interface, err error)
GetDynamic returns a dynamic client using the cluster configuration
func (*ClusterRegistryClient) ListClustersNamespaces ¶
func (m *ClusterRegistryClient) ListClustersNamespaces(ctx context.Context, namespace string) (clusterNamespaces map[*corev1.ObjectReference][]corev1.Namespace, err error)
type ClusterSpec ¶
type ClusterSpec struct {
// KubernetesAPIEndpoints represents the endpoints of the API server for this
// cluster.
// +optional
KubernetesAPIEndpoints KubernetesAPIEndpoints `json:"kubernetesApiEndpoints,omitempty" protobuf:"bytes,1,opt,name=kubernetesApiEndpoints"`
// AuthInfo contains public information that can be used to authenticate
// to and authorize with this cluster. It is not meant to store private
// information (e.g., tokens or client certificates) and cluster registry
// implementations are not expected to provide hardened storage for
// secrets.
// +optional
AuthInfo AuthInfo `json:"authInfo,omitempty" protobuf:"bytes,2,opt,name=authInfo"`
}
ClusterSpec contains the specification of a cluster.
type ClusterStatus ¶
type ClusterStatus struct {
// Conditions contains the different condition statuses for this cluster.
Conditions []ClusterCondition `json:"conditions,omitempty" protobuf:"bytes,1,rep,name=conditions"`
}
ClusterStatus contains the status of a cluster.
type Interface ¶
type Interface interface {
GetConfig(ctx context.Context, clusterRef *corev1.ObjectReference) (config *rest.Config, err error)
GetClient(ctx context.Context, clusterRef *corev1.ObjectReference, scheme *runtime.Scheme) (clt client.Client, err error)
GetDynamic(ctx context.Context, clusterRef *corev1.ObjectReference) (dyn dynamic.Interface, err error)
GetConfigFromCluster(ctx context.Context, cluster *unstructured.Unstructured) (config *rest.Config, err error)
// TODO: add this method to the interface and implementation
ListClustersNamespaces(ctx context.Context, namespace string) (clusterNamespaces map[*corev1.ObjectReference][]corev1.Namespace, err error)
}
Interface interface for a multi-cluster functionality
func MultiCluster ¶
MultiCluster returns a multicluster client in context
func NewClusterRegistryClient ¶
NewClusterRegistryClient initiates a ClusterRegistryClient
func NewClusterRegistryClientOrDie ¶
NewClusterRegistryClientOrDie initiates a ClusterRegistryClient and panics if it fails
type KubernetesAPIEndpoints ¶
type KubernetesAPIEndpoints struct {
// ServerEndpoints specifies the address(es) of the Kubernetes API server’s
// network identity or identities.
// +optional
ServerEndpoints []ServerAddressByClientCIDR `json:"serverEndpoints,omitempty" protobuf:"bytes,1,rep,name=serverEndpoints"`
// CABundle contains the certificate authority information.
// +optional
CABundle []byte `json:"caBundle,omitempty" protobuf:"bytes,2,opt,name=caBundle"`
}
KubernetesAPIEndpoints represents the endpoints for one and only one Kubernetes API server.
type ObjectReference ¶
type ObjectReference struct {
// Kind contains the kind of the referent, e.g., Secret or ConfigMap
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
// +optional
Kind string `json:"kind,omitempty" protobuf:"bytes,1,opt,name=kind"`
// Name contains the name of the referent.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
// +optional
Name string `json:"name,omitempty" protobuf:"bytes,2,opt,name=name"`
// Namespace contains the namespace of the referent.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
// +optional
Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"`
}
ObjectReference contains enough information to let you inspect or modify the referred object.
type ServerAddressByClientCIDR ¶
type ServerAddressByClientCIDR struct {
// The CIDR with which clients can match their IP to figure out if they should
// use the corresponding server address.
// +optional
ClientCIDR string `json:"clientCIDR,omitempty" protobuf:"bytes,1,opt,name=clientCIDR"`
// Address of this server, suitable for a client that matches the above CIDR.
// This can be a hostname, hostname:port, IP or IP:port.
// +optional
ServerAddress string `json:"serverAddress,omitempty" protobuf:"bytes,2,opt,name=serverAddress"`
}
ServerAddressByClientCIDR helps clients determine the server address that they should use, depending on the ClientCIDR that they match.