Documentation ¶
Index ¶
- func CheckOrSetKubeCluster(ctx context.Context, p KubeServicesPresence, ...) (string, error)
- func EncodeClusterName(clusterName string) string
- func GetKubeClient(configPath string) (client *kubernetes.Clientset, config *rest.Config, err error)
- func KubeClusterNames(ctx context.Context, p KubeServicesPresence) ([]string, error)
- func KubeClusters(ctx context.Context, p KubeServicesPresence) ([]types.KubeCluster, error)
- func ListKubeClustersWithFilters(ctx context.Context, p client.ListResourcesClient, ...) ([]types.KubeCluster, error)
- type KubeServicesPresence
- type Kubeconfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CheckOrSetKubeCluster ¶
func CheckOrSetKubeCluster(ctx context.Context, p KubeServicesPresence, kubeClusterName, teleportClusterName string) (string, error)
CheckOrSetKubeCluster validates kubeClusterName if it's set, or a sane default based on registered clusters.
If no clusters are registered, a NotFound error is returned.
func EncodeClusterName ¶
EncodeClusterName encodes cluster name for SNI matching
For example:
* Main cluster is main.example.com * Remote cluster is remote.example.com
After 'tsh login' the URL of the Kubernetes endpoint of 'remote.example.com' when accessed 'via main.example.com' looks like this:
'k72656d6f74652e6578616d706c652e636f6d0a.main.example.com'
For this to work, users have to add this address in public_addr section of kubernetes service to include 'main.example.com' in X509 '*.main.example.com' domain name
where part '72656d6f74652e6578616d706c652e636f6d0a' is a hex encoded remote.example.com
It is hex encoded to allow wildcard matching to work. In DNS wildcard match include only one '.'
func GetKubeClient ¶
func GetKubeClient(configPath string) (client *kubernetes.Clientset, config *rest.Config, err error)
GetKubeClient returns instance of client to the kubernetes cluster using in-cluster configuration if available and falling back to configuration file under configPath otherwise
func KubeClusterNames ¶
func KubeClusterNames(ctx context.Context, p KubeServicesPresence) ([]string, error)
KubeClusterNames returns a sorted list of unique kubernetes cluster names registered in p.
DELETE IN 11.0.0, replaced by ListKubeClustersWithFilters
func KubeClusters ¶
func KubeClusters(ctx context.Context, p KubeServicesPresence) ([]types.KubeCluster, error)
KubeClusters returns a sorted list of unique kubernetes clusters registered in p.
DELETE IN 11.0.0, replaced by ListKubeClustersWithFilters
func ListKubeClustersWithFilters ¶
func ListKubeClustersWithFilters(ctx context.Context, p client.ListResourcesClient, req proto.ListResourcesRequest) ([]types.KubeCluster, error)
ListKubeClusterWithFilters returns a sorted list of unique kubernetes clusters registered in p.
Types ¶
type KubeServicesPresence ¶
type KubeServicesPresence interface { // GetKubernetesServers returns a list of registered kubernetes servers. GetKubernetesServers(context.Context) ([]types.KubeServer, error) }
KubeServicesPresence fetches a list of registered kubernetes servers. It's a subset of services.Presence.
type Kubeconfig ¶
Kubeconfig is a parsed kubeconfig file representation.
func GetKubeConfig ¶
func GetKubeConfig(configPath string, allConfigEntries bool, clusterName string) (*Kubeconfig, error)
GetKubeConfig returns kubernetes configuration from configPath file or, by default reads in-cluster configuration. If allConfigEntries is set, the returned Kubeconfig will contain all contexts from the kubeconfig file; otherwise it only contains the current context.
TODO(awly): unit test this