client-go: k8s.io/client-go/tools/clientcmd/api Index | Examples | Files | Directories

package api

import "k8s.io/client-go/tools/clientcmd/api"

Code:

defaultConfig := NewConfig()

output, err := yaml.Marshal(defaultConfig)
if err != nil {
    fmt.Printf("Unexpected error: %v", err)
}

fmt.Printf("%v", string(output))

Output:

clusters: {}
contexts: {}
current-context: ""
preferences: {}
users: {}

Code:

certFile, _ := ioutil.TempFile("", "")
defer os.Remove(certFile.Name())
keyFile, _ := ioutil.TempFile("", "")
defer os.Remove(keyFile.Name())
caFile, _ := ioutil.TempFile("", "")
defer os.Remove(caFile.Name())

certData := "cert"
keyData := "key"
caData := "ca"

config := newMergedConfig(certFile.Name(), certData, keyFile.Name(), keyData, caFile.Name(), caData, nil)

MinifyConfig(&config)
ShortenConfig(&config)

output, _ := yaml.Marshal(config)
fmt.Printf("%s", string(output))

Output:

clusters:
  cow-cluster:
    LocationOfOrigin: ""
    certificate-authority-data: DATA+OMITTED
    server: http://cow.org:8080
contexts:
  federal-context:
    LocationOfOrigin: ""
    cluster: cow-cluster
    user: red-user
current-context: federal-context
preferences: {}
users:
  red-user:
    LocationOfOrigin: ""
    client-certificate-data: REDACTED
    client-key-data: REDACTED
    token: red-token

Code:

defaultConfig := NewConfig()
defaultConfig.Preferences.Colors = true
defaultConfig.Clusters["alfa"] = &Cluster{
    Server:                "https://alfa.org:8080",
    InsecureSkipTLSVerify: true,
    CertificateAuthority:  "path/to/my/cert-ca-filename",
}
defaultConfig.Clusters["bravo"] = &Cluster{
    Server:                "https://bravo.org:8080",
    InsecureSkipTLSVerify: false,
}
defaultConfig.AuthInfos["white-mage-via-cert"] = &AuthInfo{
    ClientCertificate: "path/to/my/client-cert-filename",
    ClientKey:         "path/to/my/client-key-filename",
}
defaultConfig.AuthInfos["red-mage-via-token"] = &AuthInfo{
    Token: "my-secret-token",
}
defaultConfig.AuthInfos["black-mage-via-auth-provider"] = &AuthInfo{
    AuthProvider: &AuthProviderConfig{
        Name: "gcp",
        Config: map[string]string{
            "foo":   "bar",
            "token": "s3cr3t-t0k3n",
        },
    },
}
defaultConfig.Contexts["bravo-as-black-mage"] = &Context{
    Cluster:   "bravo",
    AuthInfo:  "black-mage-via-auth-provider",
    Namespace: "yankee",
}
defaultConfig.Contexts["alfa-as-black-mage"] = &Context{
    Cluster:   "alfa",
    AuthInfo:  "black-mage-via-auth-provider",
    Namespace: "zulu",
}
defaultConfig.Contexts["alfa-as-white-mage"] = &Context{
    Cluster:  "alfa",
    AuthInfo: "white-mage-via-cert",
}
defaultConfig.CurrentContext = "alfa-as-white-mage"

output, err := yaml.Marshal(defaultConfig)
if err != nil {
    fmt.Printf("Unexpected error: %v", err)
}

fmt.Printf("%v", string(output))

Output:

clusters:
  alfa:
    LocationOfOrigin: ""
    certificate-authority: path/to/my/cert-ca-filename
    insecure-skip-tls-verify: true
    server: https://alfa.org:8080
  bravo:
    LocationOfOrigin: ""
    server: https://bravo.org:8080
contexts:
  alfa-as-black-mage:
    LocationOfOrigin: ""
    cluster: alfa
    namespace: zulu
    user: black-mage-via-auth-provider
  alfa-as-white-mage:
    LocationOfOrigin: ""
    cluster: alfa
    user: white-mage-via-cert
  bravo-as-black-mage:
    LocationOfOrigin: ""
    cluster: bravo
    namespace: yankee
    user: black-mage-via-auth-provider
current-context: alfa-as-white-mage
preferences:
  colors: true
users:
  black-mage-via-auth-provider:
    LocationOfOrigin: ""
    auth-provider:
      config:
        foo: bar
        token: s3cr3t-t0k3n
      name: gcp
  red-mage-via-token:
    LocationOfOrigin: ""
    token: my-secret-token
  white-mage-via-cert:
    LocationOfOrigin: ""
    client-certificate: path/to/my/client-cert-filename
    client-key: path/to/my/client-key-filename

Index

Examples

Package Files

doc.go helpers.go register.go types.go zz_generated.deepcopy.go

Variables

var (
    SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
    AddToScheme   = SchemeBuilder.AddToScheme
)
var SchemeGroupVersion = schema.GroupVersion{Group: "", Version: runtime.APIVersionInternal}

SchemeGroupVersion is group version used to register these objects TODO this should be in the "kubeconfig" group

func FlattenConfig Uses

func FlattenConfig(config *Config) error

Flatten changes the config object into a self contained config (useful for making secrets)

func FlattenContent Uses

func FlattenContent(path *string, contents *[]byte, baseDir string) error

func IsConfigEmpty Uses

func IsConfigEmpty(config *Config) bool

IsConfigEmpty returns true if the config is empty.

func MakeAbs Uses

func MakeAbs(path, base string) (string, error)

func MinifyConfig Uses

func MinifyConfig(config *Config) error

MinifyConfig read the current context and uses that to keep only the relevant pieces of config This is useful for making secrets based on kubeconfig files

func ResolvePath Uses

func ResolvePath(path string, base string) string

ResolvePath returns the path as an absolute paths, relative to the given base directory

func ShortenConfig Uses

func ShortenConfig(config *Config)

Flatten redacts raw data entries from the config object for a human-readable view.

type AuthInfo Uses

type AuthInfo struct {
    // LocationOfOrigin indicates where this object came from.  It is used for round tripping config post-merge, but never serialized.
    LocationOfOrigin string
    // ClientCertificate is the path to a client cert file for TLS.
    // +optional
    ClientCertificate string `json:"client-certificate,omitempty"`
    // ClientCertificateData contains PEM-encoded data from a client cert file for TLS. Overrides ClientCertificate
    // +optional
    ClientCertificateData []byte `json:"client-certificate-data,omitempty"`
    // ClientKey is the path to a client key file for TLS.
    // +optional
    ClientKey string `json:"client-key,omitempty"`
    // ClientKeyData contains PEM-encoded data from a client key file for TLS. Overrides ClientKey
    // +optional
    ClientKeyData []byte `json:"client-key-data,omitempty"`
    // Token is the bearer token for authentication to the kubernetes cluster.
    // +optional
    Token string `json:"token,omitempty"`
    // TokenFile is a pointer to a file that contains a bearer token (as described above).  If both Token and TokenFile are present, Token takes precedence.
    // +optional
    TokenFile string `json:"tokenFile,omitempty"`
    // Impersonate is the username to act-as.
    // +optional
    Impersonate string `json:"act-as,omitempty"`
    // ImpersonateGroups is the groups to imperonate.
    // +optional
    ImpersonateGroups []string `json:"act-as-groups,omitempty"`
    // ImpersonateUserExtra contains additional information for impersonated user.
    // +optional
    ImpersonateUserExtra map[string][]string `json:"act-as-user-extra,omitempty"`
    // Username is the username for basic authentication to the kubernetes cluster.
    // +optional
    Username string `json:"username,omitempty"`
    // Password is the password for basic authentication to the kubernetes cluster.
    // +optional
    Password string `json:"password,omitempty"`
    // AuthProvider specifies a custom authentication plugin for the kubernetes cluster.
    // +optional
    AuthProvider *AuthProviderConfig `json:"auth-provider,omitempty"`
    // Exec specifies a custom exec-based authentication plugin for the kubernetes cluster.
    // +optional
    Exec *ExecConfig `json:"exec,omitempty"`
    // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
    // +optional
    Extensions map[string]runtime.Object `json:"extensions,omitempty"`
}

AuthInfo contains information that describes identity information. This is use to tell the kubernetes cluster who you are.

func NewAuthInfo Uses

func NewAuthInfo() *AuthInfo

NewAuthInfo is a convenience function that returns a new AuthInfo object with non-nil maps

func (*AuthInfo) DeepCopy Uses

func (in *AuthInfo) DeepCopy() *AuthInfo

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthInfo.

func (*AuthInfo) DeepCopyInto Uses

func (in *AuthInfo) DeepCopyInto(out *AuthInfo)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AuthProviderConfig Uses

type AuthProviderConfig struct {
    Name string `json:"name"`
    // +optional
    Config map[string]string `json:"config,omitempty"`
}

AuthProviderConfig holds the configuration for a specified auth provider.

func (*AuthProviderConfig) DeepCopy Uses

func (in *AuthProviderConfig) DeepCopy() *AuthProviderConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthProviderConfig.

func (*AuthProviderConfig) DeepCopyInto Uses

func (in *AuthProviderConfig) DeepCopyInto(out *AuthProviderConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Cluster Uses

type Cluster struct {
    // LocationOfOrigin indicates where this object came from.  It is used for round tripping config post-merge, but never serialized.
    LocationOfOrigin string
    // Server is the address of the kubernetes cluster (https://hostname:port).
    Server string `json:"server"`
    // InsecureSkipTLSVerify skips the validity check for the server's certificate. This will make your HTTPS connections insecure.
    // +optional
    InsecureSkipTLSVerify bool `json:"insecure-skip-tls-verify,omitempty"`
    // CertificateAuthority is the path to a cert file for the certificate authority.
    // +optional
    CertificateAuthority string `json:"certificate-authority,omitempty"`
    // CertificateAuthorityData contains PEM-encoded certificate authority certificates. Overrides CertificateAuthority
    // +optional
    CertificateAuthorityData []byte `json:"certificate-authority-data,omitempty"`
    // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
    // +optional
    Extensions map[string]runtime.Object `json:"extensions,omitempty"`
}

Cluster contains information about how to communicate with a kubernetes cluster

func NewCluster Uses

func NewCluster() *Cluster

NewCluster is a convenience function that returns a new Cluster object with non-nil maps

func (*Cluster) DeepCopy Uses

func (in *Cluster) DeepCopy() *Cluster

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.

func (*Cluster) DeepCopyInto Uses

func (in *Cluster) DeepCopyInto(out *Cluster)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Config Uses

type Config struct {
    // Legacy field from pkg/api/types.go TypeMeta.
    // TODO(jlowdermilk): remove this after eliminating downstream dependencies.
    // +optional
    Kind string `json:"kind,omitempty"`
    // Legacy field from pkg/api/types.go TypeMeta.
    // TODO(jlowdermilk): remove this after eliminating downstream dependencies.
    // +optional
    APIVersion string `json:"apiVersion,omitempty"`
    // Preferences holds general information to be use for cli interactions
    Preferences Preferences `json:"preferences"`
    // Clusters is a map of referencable names to cluster configs
    Clusters map[string]*Cluster `json:"clusters"`
    // AuthInfos is a map of referencable names to user configs
    AuthInfos map[string]*AuthInfo `json:"users"`
    // Contexts is a map of referencable names to context configs
    Contexts map[string]*Context `json:"contexts"`
    // CurrentContext is the name of the context that you would like to use by default
    CurrentContext string `json:"current-context"`
    // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
    // +optional
    Extensions map[string]runtime.Object `json:"extensions,omitempty"`
}

Config holds the information needed to build connect to remote kubernetes clusters as a given user IMPORTANT if you add fields to this struct, please update IsConfigEmpty() +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

func NewConfig Uses

func NewConfig() *Config

NewConfig is a convenience function that returns a new Config object with non-nil maps

func (*Config) DeepCopy Uses

func (in *Config) DeepCopy() *Config

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Config.

func (*Config) DeepCopyInto Uses

func (in *Config) DeepCopyInto(out *Config)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Config) DeepCopyObject Uses

func (in *Config) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Config) GetObjectKind Uses

func (obj *Config) GetObjectKind() schema.ObjectKind

func (*Config) GroupVersionKind Uses

func (obj *Config) GroupVersionKind() schema.GroupVersionKind

func (*Config) SetGroupVersionKind Uses

func (obj *Config) SetGroupVersionKind(gvk schema.GroupVersionKind)

type Context Uses

type Context struct {
    // LocationOfOrigin indicates where this object came from.  It is used for round tripping config post-merge, but never serialized.
    LocationOfOrigin string
    // Cluster is the name of the cluster for this context
    Cluster string `json:"cluster"`
    // AuthInfo is the name of the authInfo for this context
    AuthInfo string `json:"user"`
    // Namespace is the default namespace to use on unspecified requests
    // +optional
    Namespace string `json:"namespace,omitempty"`
    // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
    // +optional
    Extensions map[string]runtime.Object `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)

func NewContext Uses

func NewContext() *Context

NewContext is a convenience function that returns a new Context object with non-nil maps

func (*Context) DeepCopy Uses

func (in *Context) DeepCopy() *Context

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Context.

func (*Context) DeepCopyInto Uses

func (in *Context) DeepCopyInto(out *Context)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExecConfig Uses

type ExecConfig struct {
    // Command to execute.
    Command string `json:"command"`
    // Arguments to pass to the command when executing it.
    // +optional
    Args []string `json:"args"`
    // Env defines additional environment variables to expose to the process. These
    // are unioned with the host's environment, as well as variables client-go uses
    // to pass argument to the plugin.
    // +optional
    Env []ExecEnvVar `json:"env"`

    // Preferred input version of the ExecInfo. The returned ExecCredentials MUST use
    // the same encoding version as the input.
    APIVersion string `json:"apiVersion,omitempty"`
}

ExecConfig specifies a command to provide client credentials. The command is exec'd and outputs structured stdout holding credentials.

See the client.authentiction.k8s.io API group for specifications of the exact input and output format

func (*ExecConfig) DeepCopy Uses

func (in *ExecConfig) DeepCopy() *ExecConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecConfig.

func (*ExecConfig) DeepCopyInto Uses

func (in *ExecConfig) DeepCopyInto(out *ExecConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExecEnvVar Uses

type ExecEnvVar struct {
    Name  string `json:"name"`
    Value string `json:"value"`
}

ExecEnvVar is used for setting environment variables when executing an exec-based credential plugin.

func (*ExecEnvVar) DeepCopy Uses

func (in *ExecEnvVar) DeepCopy() *ExecEnvVar

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecEnvVar.

func (*ExecEnvVar) DeepCopyInto Uses

func (in *ExecEnvVar) DeepCopyInto(out *ExecEnvVar)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Preferences Uses

type Preferences struct {
    // +optional
    Colors bool `json:"colors,omitempty"`
    // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
    // +optional
    Extensions map[string]runtime.Object `json:"extensions,omitempty"`
}

IMPORTANT if you add fields to this struct, please update IsConfigEmpty()

func NewPreferences Uses

func NewPreferences() *Preferences

NewPreferences is a convenience function that returns a new Preferences object with non-nil maps

func (*Preferences) DeepCopy Uses

func (in *Preferences) DeepCopy() *Preferences

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Preferences.

func (*Preferences) DeepCopyInto Uses

func (in *Preferences) DeepCopyInto(out *Preferences)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Directories

PathSynopsis
latest
v1

Package api imports 9 packages (graph) and is imported by 306 packages. Updated 2018-09-26. Refresh now. Tools for package owners.