@ -23,124 +23,124 @@ package k8sapi
type Config struct {
type Config struct {
// Legacy field from pkg/api/types.go TypeMeta.
// Legacy field from pkg/api/types.go TypeMeta.
// TODO(jlowdermilk): remove this after eliminating downstream dependencies.
// TODO(jlowdermilk): remove this after eliminating downstream dependencies.
Kind string ` yaml :"kind,omitempty"`
Kind string ` json :"kind,omitempty"`
// DEPRECATED: APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc).
// DEPRECATED: APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc).
// Because a cluster can run multiple API groups and potentially multiple versions of each, it no longer makes sense to specify
// 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.
// a single value for the cluster version.
// This field isn't really needed anyway, so we are deprecating it without replacement.
// This field isn't really needed anyway, so we are deprecating it without replacement.
// It will be ignored if it is present.
// It will be ignored if it is present.
APIVersion string ` yaml :"apiVersion,omitempty"`
APIVersion string ` json :"apiVersion,omitempty"`
// Preferences holds general information to be use for cli interactions
// Preferences holds general information to be use for cli interactions
Preferences Preferences ` yaml :"preferences"`
Preferences Preferences ` json :"preferences"`
// Clusters is a map of referencable names to cluster configs
// Clusters is a map of referencable names to cluster configs
Clusters [ ] NamedCluster ` yaml :"clusters"`
Clusters [ ] NamedCluster ` json :"clusters"`
// AuthInfos is a map of referencable names to user configs
// AuthInfos is a map of referencable names to user configs
AuthInfos [ ] NamedAuthInfo ` yaml :"users"`
AuthInfos [ ] NamedAuthInfo ` json :"users"`
// Contexts is a map of referencable names to context configs
// Contexts is a map of referencable names to context configs
Contexts [ ] NamedContext ` yaml :"contexts"`
Contexts [ ] NamedContext ` json :"contexts"`
// CurrentContext is the name of the context that you would like to use by default
// CurrentContext is the name of the context that you would like to use by default
CurrentContext string ` yaml :"current-context"`
CurrentContext string ` json :"current-context"`
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
Extensions [ ] NamedExtension ` yaml :"extensions,omitempty"`
Extensions [ ] NamedExtension ` json :"extensions,omitempty"`
}
}
// Preferences contains information about the users command line experience preferences.
// Preferences contains information about the users command line experience preferences.
type Preferences struct {
type Preferences struct {
Colors bool ` yaml :"colors,omitempty"`
Colors bool ` json :"colors,omitempty"`
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
Extensions [ ] NamedExtension ` yaml :"extensions,omitempty"`
Extensions [ ] NamedExtension ` json :"extensions,omitempty"`
}
}
// Cluster contains information about how to communicate with a kubernetes cluster
// Cluster contains information about how to communicate with a kubernetes cluster
type Cluster struct {
type Cluster struct {
// Server is the address of the kubernetes cluster (https://hostname:port).
// Server is the address of the kubernetes cluster (https://hostname:port).
Server string ` yaml :"server"`
Server string ` json :"server"`
// APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc).
// APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc).
APIVersion string ` yaml :"api-version,omitempty"`
APIVersion string ` json :"api-version,omitempty"`
// InsecureSkipTLSVerify skips the validity check for the server's certificate. This will make your HTTPS connections insecure.
// InsecureSkipTLSVerify skips the validity check for the server's certificate. This will make your HTTPS connections insecure.
InsecureSkipTLSVerify bool ` yaml :"insecure-skip-tls-verify,omitempty"`
InsecureSkipTLSVerify bool ` json :"insecure-skip-tls-verify,omitempty"`
// CertificateAuthority is the path to a cert file for the certificate authority.
// CertificateAuthority is the path to a cert file for the certificate authority.
CertificateAuthority string ` yaml :"certificate-authority,omitempty"`
CertificateAuthority string ` json :"certificate-authority,omitempty"`
// CertificateAuthorityData contains PEM-encoded certificate authority certificates. Overrides CertificateAuthority
// CertificateAuthorityData contains PEM-encoded certificate authority certificates. Overrides CertificateAuthority
//
//
// NOTE(ericchiang): Our yaml parser doesn't assume []byte is a base64 encoded string.
// NOTE(ericchiang): Our yaml parser doesn't assume []byte is a base64 encoded string.
CertificateAuthorityData string ` yaml :"certificate-authority-data,omitempty"`
CertificateAuthorityData string ` json :"certificate-authority-data,omitempty"`
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
Extensions [ ] NamedExtension ` yaml :"extensions,omitempty"`
Extensions [ ] NamedExtension ` json :"extensions,omitempty"`
}
}
// AuthInfo contains information that describes identity information. This is use to tell the kubernetes cluster who you are.
// AuthInfo contains information that describes identity information. This is use to tell the kubernetes cluster who you are.
type AuthInfo struct {
type AuthInfo struct {
// ClientCertificate is the path to a client cert file for TLS.
// ClientCertificate is the path to a client cert file for TLS.
ClientCertificate string ` yaml :"client-certificate,omitempty"`
ClientCertificate string ` json :"client-certificate,omitempty"`
// ClientCertificateData contains PEM-encoded data from a client cert file for TLS. Overrides ClientCertificate
// ClientCertificateData contains PEM-encoded data from a client cert file for TLS. Overrides ClientCertificate
//
//
// NOTE(ericchiang): Our yaml parser doesn't assume []byte is a base64 encoded string.
// NOTE(ericchiang): Our yaml parser doesn't assume []byte is a base64 encoded string.
ClientCertificateData string ` yaml :"client-certificate-data,omitempty"`
ClientCertificateData string ` json :"client-certificate-data,omitempty"`
// ClientKey is the path to a client key file for TLS.
// ClientKey is the path to a client key file for TLS.
ClientKey string ` yaml :"client-key,omitempty"`
ClientKey string ` json :"client-key,omitempty"`
// ClientKeyData contains PEM-encoded data from a client key file for TLS. Overrides ClientKey
// ClientKeyData contains PEM-encoded data from a client key file for TLS. Overrides ClientKey
//
//
// NOTE(ericchiang): Our yaml parser doesn't assume []byte is a base64 encoded string.
// NOTE(ericchiang): Our yaml parser doesn't assume []byte is a base64 encoded string.
ClientKeyData string ` yaml :"client-key-data,omitempty"`
ClientKeyData string ` json :"client-key-data,omitempty"`
// Token is the bearer token for authentication to the kubernetes cluster.
// Token is the bearer token for authentication to the kubernetes cluster.
Token string ` yaml :"token,omitempty"`
Token string ` json :"token,omitempty"`
// Impersonate is the username to imperonate. The name matches the flag.
// Impersonate is the username to imperonate. The name matches the flag.
Impersonate string ` yaml :"as,omitempty"`
Impersonate string ` json :"as,omitempty"`
// Username is the username for basic authentication to the kubernetes cluster.
// Username is the username for basic authentication to the kubernetes cluster.
Username string ` yaml :"username,omitempty"`
Username string ` json :"username,omitempty"`
// Password is the password for basic authentication to the kubernetes cluster.
// Password is the password for basic authentication to the kubernetes cluster.
Password string ` yaml :"password,omitempty"`
Password string ` json :"password,omitempty"`
// AuthProvider specifies a custom authentication plugin for the kubernetes cluster.
// AuthProvider specifies a custom authentication plugin for the kubernetes cluster.
AuthProvider * AuthProviderConfig ` yaml :"auth-provider,omitempty"`
AuthProvider * AuthProviderConfig ` json :"auth-provider,omitempty"`
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
Extensions [ ] NamedExtension ` yaml :"extensions,omitempty"`
Extensions [ ] NamedExtension ` json :"extensions,omitempty"`
}
}
// 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)
// 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)
type Context struct {
type Context struct {
// Cluster is the name of the cluster for this context
// Cluster is the name of the cluster for this context
Cluster string ` yaml :"cluster"`
Cluster string ` json :"cluster"`
// AuthInfo is the name of the authInfo for this context
// AuthInfo is the name of the authInfo for this context
AuthInfo string ` yaml :"user"`
AuthInfo string ` json :"user"`
// Namespace is the default namespace to use on unspecified requests
// Namespace is the default namespace to use on unspecified requests
Namespace string ` yaml :"namespace,omitempty"`
Namespace string ` json :"namespace,omitempty"`
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
Extensions [ ] NamedExtension ` yaml :"extensions,omitempty"`
Extensions [ ] NamedExtension ` json :"extensions,omitempty"`
}
}
// NamedCluster relates nicknames to cluster information
// NamedCluster relates nicknames to cluster information
type NamedCluster struct {
type NamedCluster struct {
// Name is the nickname for this Cluster
// Name is the nickname for this Cluster
Name string ` yaml :"name"`
Name string ` json :"name"`
// Cluster holds the cluster information
// Cluster holds the cluster information
Cluster Cluster ` yaml :"cluster"`
Cluster Cluster ` json :"cluster"`
}
}
// NamedContext relates nicknames to context information
// NamedContext relates nicknames to context information
type NamedContext struct {
type NamedContext struct {
// Name is the nickname for this Context
// Name is the nickname for this Context
Name string ` yaml :"name"`
Name string ` json :"name"`
// Context holds the context information
// Context holds the context information
Context Context ` yaml :"context"`
Context Context ` json :"context"`
}
}
// NamedAuthInfo relates nicknames to auth information
// NamedAuthInfo relates nicknames to auth information
type NamedAuthInfo struct {
type NamedAuthInfo struct {
// Name is the nickname for this AuthInfo
// Name is the nickname for this AuthInfo
Name string ` yaml :"name"`
Name string ` json :"name"`
// AuthInfo holds the auth information
// AuthInfo holds the auth information
AuthInfo AuthInfo ` yaml :"user"`
AuthInfo AuthInfo ` json :"user"`
}
}
// NamedExtension relates nicknames to extension information
// NamedExtension relates nicknames to extension information
type NamedExtension struct {
type NamedExtension struct {
// Name is the nickname for this Extension
// Name is the nickname for this Extension
Name string ` yaml :"name"`
Name string ` json :"name"`
}
}
// AuthProviderConfig holds the configuration for a specified auth provider.
// AuthProviderConfig holds the configuration for a specified auth provider.
type AuthProviderConfig struct {
type AuthProviderConfig struct {
Name string ` yaml :"name"`
Name string ` json :"name"`
Config map [ string ] string ` yaml :"config"`
Config map [ string ] string ` json :"config"`
}
}