2016-07-25 20:00:28 +00:00
/ *
Copyright 2014 The Kubernetes Authors All rights reserved .
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
package k8sapi
// Where possible, json tags match the cli argument names.
// Top level config objects and all values required for proper functioning are not "omitempty". Any truly optional piece of config is allowed to be omitted.
2021-01-15 15:22:38 +00:00
// Config holds the information needed to build connect to remote kubernetes clusters as a given user.
2016-07-25 20:00:28 +00:00
type Config struct {
// Legacy field from pkg/api/types.go TypeMeta.
// TODO(jlowdermilk): remove this after eliminating downstream dependencies.
2016-11-03 21:32:23 +00:00
Kind string ` json:"kind,omitempty" `
2020-10-17 21:54:27 +00:00
// Deprecated: APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc).
2016-07-25 20:00:28 +00:00
// Because a cluster can run multiple API groups and potentially multiple versions of each, it no longer makes sense to specify
// a single value for the cluster version.
// This field isn't really needed anyway, so we are deprecating it without replacement.
// It will be ignored if it is present.
2016-11-03 21:32:23 +00:00
APIVersion string ` json:"apiVersion,omitempty" `
2016-07-25 20:00:28 +00:00
// Preferences holds general information to be use for cli interactions
2016-11-03 21:32:23 +00:00
Preferences Preferences ` json:"preferences" `
2020-12-20 03:01:51 +00:00
// Clusters is a map of referenceable names to cluster configs
2016-11-03 21:32:23 +00:00
Clusters [ ] NamedCluster ` json:"clusters" `
2020-12-20 03:01:51 +00:00
// AuthInfos is a map of referenceable names to user configs
2016-11-03 21:32:23 +00:00
AuthInfos [ ] NamedAuthInfo ` json:"users" `
2020-12-20 03:01:51 +00:00
// Contexts is a map of referenceable names to context configs
2016-11-03 21:32:23 +00:00
Contexts [ ] NamedContext ` json:"contexts" `
2016-07-25 20:00:28 +00:00
// CurrentContext is the name of the context that you would like to use by default
2016-11-03 21:32:23 +00:00
CurrentContext string ` json:"current-context" `
2016-07-25 20:00:28 +00:00
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
2016-11-03 21:32:23 +00:00
Extensions [ ] NamedExtension ` json:"extensions,omitempty" `
2016-07-25 20:00:28 +00:00
}
// Preferences contains information about the users command line experience preferences.
type Preferences struct {
2016-11-03 21:32:23 +00:00
Colors bool ` json:"colors,omitempty" `
2016-07-25 20:00:28 +00:00
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
2016-11-03 21:32:23 +00:00
Extensions [ ] NamedExtension ` json:"extensions,omitempty" `
2016-07-25 20:00:28 +00:00
}
2021-01-15 15:22:38 +00:00
// Cluster contains information about how to communicate with a kubernetes cluster.
2016-07-25 20:00:28 +00:00
type Cluster struct {
// Server is the address of the kubernetes cluster (https://hostname:port).
2016-11-03 21:32:23 +00:00
Server string ` json:"server" `
2016-07-25 20:00:28 +00:00
// APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc).
2016-11-03 21:32:23 +00:00
APIVersion string ` json:"api-version,omitempty" `
2016-07-25 20:00:28 +00:00
// InsecureSkipTLSVerify skips the validity check for the server's certificate. This will make your HTTPS connections insecure.
2016-11-03 21:32:23 +00:00
InsecureSkipTLSVerify bool ` json:"insecure-skip-tls-verify,omitempty" `
2016-07-25 20:00:28 +00:00
// CertificateAuthority is the path to a cert file for the certificate authority.
2016-11-03 21:32:23 +00:00
CertificateAuthority string ` json:"certificate-authority,omitempty" `
2016-07-25 20:00:28 +00:00
// CertificateAuthorityData contains PEM-encoded certificate authority certificates. Overrides CertificateAuthority
2016-10-05 23:04:48 +00:00
//
// NOTE(ericchiang): Our yaml parser doesn't assume []byte is a base64 encoded string.
2016-11-03 21:32:23 +00:00
CertificateAuthorityData string ` json:"certificate-authority-data,omitempty" `
2016-07-25 20:00:28 +00:00
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
2016-11-03 21:32:23 +00:00
Extensions [ ] NamedExtension ` json:"extensions,omitempty" `
2016-07-25 20:00:28 +00:00
}
// AuthInfo contains information that describes identity information. This is use to tell the kubernetes cluster who you are.
type AuthInfo struct {
// ClientCertificate is the path to a client cert file for TLS.
2016-11-03 21:32:23 +00:00
ClientCertificate string ` json:"client-certificate,omitempty" `
2016-07-25 20:00:28 +00:00
// ClientCertificateData contains PEM-encoded data from a client cert file for TLS. Overrides ClientCertificate
2016-10-05 23:04:48 +00:00
//
// NOTE(ericchiang): Our yaml parser doesn't assume []byte is a base64 encoded string.
2016-11-03 21:32:23 +00:00
ClientCertificateData string ` json:"client-certificate-data,omitempty" `
2016-07-25 20:00:28 +00:00
// ClientKey is the path to a client key file for TLS.
2016-11-03 21:32:23 +00:00
ClientKey string ` json:"client-key,omitempty" `
2016-07-25 20:00:28 +00:00
// ClientKeyData contains PEM-encoded data from a client key file for TLS. Overrides ClientKey
2016-10-05 23:04:48 +00:00
//
// NOTE(ericchiang): Our yaml parser doesn't assume []byte is a base64 encoded string.
2016-11-03 21:32:23 +00:00
ClientKeyData string ` json:"client-key-data,omitempty" `
2016-07-25 20:00:28 +00:00
// Token is the bearer token for authentication to the kubernetes cluster.
2016-11-03 21:32:23 +00:00
Token string ` json:"token,omitempty" `
2020-12-20 03:01:47 +00:00
// Impersonate is the username to impersonate. The name matches the flag.
2016-11-03 21:32:23 +00:00
Impersonate string ` json:"as,omitempty" `
2016-07-25 20:00:28 +00:00
// Username is the username for basic authentication to the kubernetes cluster.
2016-11-03 21:32:23 +00:00
Username string ` json:"username,omitempty" `
2016-07-25 20:00:28 +00:00
// Password is the password for basic authentication to the kubernetes cluster.
2016-11-03 21:32:23 +00:00
Password string ` json:"password,omitempty" `
2016-07-25 20:00:28 +00:00
// AuthProvider specifies a custom authentication plugin for the kubernetes cluster.
2016-11-03 21:32:23 +00:00
AuthProvider * AuthProviderConfig ` json:"auth-provider,omitempty" `
2016-07-25 20:00:28 +00:00
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
2016-11-03 21:32:23 +00:00
Extensions [ ] NamedExtension ` json:"extensions,omitempty" `
2016-07-25 20:00:28 +00:00
}
2021-01-15 15:22:38 +00:00
// Context is a tuple of references to a cluster (how do I communicate with a kubernetes cluster),
// a user (how do I identify myself), and a namespace (what subset of resources do I want to work with).
2016-07-25 20:00:28 +00:00
type Context struct {
// Cluster is the name of the cluster for this context
2016-11-03 21:32:23 +00:00
Cluster string ` json:"cluster" `
2016-07-25 20:00:28 +00:00
// AuthInfo is the name of the authInfo for this context
2016-11-03 21:32:23 +00:00
AuthInfo string ` json:"user" `
2016-07-25 20:00:28 +00:00
// Namespace is the default namespace to use on unspecified requests
2016-11-03 21:32:23 +00:00
Namespace string ` json:"namespace,omitempty" `
2016-07-25 20:00:28 +00:00
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
2016-11-03 21:32:23 +00:00
Extensions [ ] NamedExtension ` json:"extensions,omitempty" `
2016-07-25 20:00:28 +00:00
}
// NamedCluster relates nicknames to cluster information
type NamedCluster struct {
// Name is the nickname for this Cluster
2016-11-03 21:32:23 +00:00
Name string ` json:"name" `
2016-07-25 20:00:28 +00:00
// Cluster holds the cluster information
2016-11-03 21:32:23 +00:00
Cluster Cluster ` json:"cluster" `
2016-07-25 20:00:28 +00:00
}
// NamedContext relates nicknames to context information
type NamedContext struct {
// Name is the nickname for this Context
2016-11-03 21:32:23 +00:00
Name string ` json:"name" `
2016-07-25 20:00:28 +00:00
// Context holds the context information
2016-11-03 21:32:23 +00:00
Context Context ` json:"context" `
2016-07-25 20:00:28 +00:00
}
// NamedAuthInfo relates nicknames to auth information
type NamedAuthInfo struct {
// Name is the nickname for this AuthInfo
2016-11-03 21:32:23 +00:00
Name string ` json:"name" `
2016-07-25 20:00:28 +00:00
// AuthInfo holds the auth information
2016-11-03 21:32:23 +00:00
AuthInfo AuthInfo ` json:"user" `
2016-07-25 20:00:28 +00:00
}
// NamedExtension relates nicknames to extension information
type NamedExtension struct {
// Name is the nickname for this Extension
2016-11-03 21:32:23 +00:00
Name string ` json:"name" `
2016-07-25 20:00:28 +00:00
}
// AuthProviderConfig holds the configuration for a specified auth provider.
type AuthProviderConfig struct {
2016-11-03 21:32:23 +00:00
Name string ` json:"name" `
Config map [ string ] string ` json:"config" `
2016-07-25 20:00:28 +00:00
}