kubernetes

package
v0.13.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 27, 2021 License: Apache-2.0 Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LabelManagedBy            = "pipecd.dev/managed-by"             // Always be piped.
	LabelPiped                = "pipecd.dev/piped"                  // The id of piped handling this application.
	LabelApplication          = "pipecd.dev/application"            // The application this resource belongs to.
	LabelCommitHash           = "pipecd.dev/commit-hash"            // Hash value of the deployed commit.
	LabelResourceKey          = "pipecd.dev/resource-key"           // The resource key generated by apiVersion, namespace and name. e.g. apps/v1/Deployment/namespace/demo-app
	LabelOriginalAPIVersion   = "pipecd.dev/original-api-version"   // The api version defined in git configuration. e.g. apps/v1
	LabelIgnoreDriftDirection = "pipecd.dev/ignore-drift-detection" // Whether the drift detection should ignore this resource.
	AnnotationConfigHash      = "pipecd.dev/config-hash"            // The hash value of all mouting config resources.
	ManagedByPiped            = "piped"
	IgnoreDriftDetectionTrue  = "true"
)
View Source
const (
	KindDeployment            = "Deployment"
	KindStatefulSet           = "StatefulSet"
	KindDaemonSet             = "DaemonSet"
	KindReplicaSet            = "ReplicaSet"
	KindPod                   = "Pod"
	KindJob                   = "Job"
	KindCronJob               = "CronJob"
	KindConfigMap             = "ConfigMap"
	KindSecret                = "Secret"
	KindPersistentVolume      = "PersistentVolume"
	KindPersistentVolumeClaim = "PersistentVolumeClaim"
	KindService               = "Service"
	KindIngress               = "Ingress"
	KindServiceAccount        = "ServiceAccount"
	KindRole                  = "Role"
	KindRoleBinding           = "RoleBinding"
	KindClusterRole           = "ClusterRole"
	KindClusterRoleBinding    = "ClusterRoleBinding"

	DefaultNamespace = "default"
)

Variables

View Source
var (
	ErrNotFound = errors.New("not found")
)

Functions

func Diff

func Diff(old, new Manifest, opts ...diff.Option) (*diff.Result, error)

func FindReferencingConfigMapsInDeployment added in v0.9.16

func FindReferencingConfigMapsInDeployment(d *appsv1.Deployment) []string

func FindReferencingSecretsInDeployment added in v0.9.16

func FindReferencingSecretsInDeployment(d *appsv1.Deployment) []string

func HashManifests added in v0.9.16

func HashManifests(manifests []Manifest) (string, error)

HashManifests computes the hash of a list of manifests.

func IsKubernetesBuiltInResource

func IsKubernetesBuiltInResource(apiVersion string) bool

Types

type APIVersionKind

type APIVersionKind struct {
	APIVersion string
	Kind       string
}

type AppManifestsCache

type AppManifestsCache struct {
	AppID  string
	Cache  cache.Cache
	Logger *zap.Logger
}

func (AppManifestsCache) Get

func (c AppManifestsCache) Get(commit string) ([]Manifest, bool)

func (AppManifestsCache) Put

func (c AppManifestsCache) Put(commit string, manifests []Manifest)

type Applier

type Applier interface {
	// Apply does applying application manifests by using the tool specified in Input.
	Apply(ctx context.Context) error
	// ApplyManifest does applying the given manifest.
	ApplyManifest(ctx context.Context, manifest Manifest) error
	// Delete deletes the given resource from Kubernetes cluster.
	Delete(ctx context.Context, key ResourceKey) error
}

type DiffListChange added in v0.10.3

type DiffListChange struct {
	Old  Manifest
	New  Manifest
	Diff *diff.Result
}

type DiffListResult added in v0.10.3

type DiffListResult struct {
	Adds    []Manifest
	Deletes []Manifest
	Changes []DiffListChange
}

func DiffList added in v0.10.3

func DiffList(olds, news []Manifest, opts ...diff.Option) (*DiffListResult, error)

func (*DiffListResult) NoChange added in v0.10.3

func (r *DiffListResult) NoChange() bool

func (*DiffListResult) Render added in v0.13.0

func (r *DiffListResult) Render(opt DiffRenderOptions) string

type DiffRenderOptions added in v0.13.0

type DiffRenderOptions struct {
	MaskSecret    bool
	MaskConfigMap bool
	// Maximum number of changed manifests should be shown.
	// Zero means rendering all.
	MaxChangedManifests int
	// If true, use "diff" command to render.
	UseDiffCommand bool
}

type Helm

type Helm struct {
	// contains filtered or unexported fields
}

func NewHelm

func NewHelm(version, path string, logger *zap.Logger) *Helm

func (*Helm) TemplateLocalChart added in v0.1.2

func (c *Helm) TemplateLocalChart(ctx context.Context, appName, appDir, namespace, chartPath string, opts *config.InputHelmOptions) (string, error)

func (*Helm) TemplateRemoteChart added in v0.1.2

func (c *Helm) TemplateRemoteChart(ctx context.Context, appName, appDir, namespace string, chart helmRemoteChart, opts *config.InputHelmOptions) (string, error)

func (*Helm) TemplateRemoteGitChart added in v0.1.2

func (c *Helm) TemplateRemoteGitChart(ctx context.Context, appName, appDir, namespace string, chart helmRemoteGitChart, gitClient gitClient, opts *config.InputHelmOptions) (string, error)

type Kubectl

type Kubectl struct {
	// contains filtered or unexported fields
}

func NewKubectl

func NewKubectl(version, path string) *Kubectl

func (*Kubectl) Apply

func (c *Kubectl) Apply(ctx context.Context, namespace string, manifest Manifest) (err error)

func (*Kubectl) Delete

func (c *Kubectl) Delete(ctx context.Context, namespace string, r ResourceKey) (err error)

type Kustomize

type Kustomize struct {
	// contains filtered or unexported fields
}

func NewKustomize

func NewKustomize(version, path string, logger *zap.Logger) *Kustomize

func (*Kustomize) Template added in v0.1.2

func (c *Kustomize) Template(ctx context.Context, appName, appDir string, opts map[string]string) (string, error)

type Manifest

type Manifest struct {
	Key ResourceKey
	// contains filtered or unexported fields
}

func LoadManifestsFromYAMLFile

func LoadManifestsFromYAMLFile(path string) ([]Manifest, error)

func LoadPlainYAMLManifests added in v0.1.4

func LoadPlainYAMLManifests(dir string, names []string, configFileName string) ([]Manifest, error)

func MakeManifest

func MakeManifest(key ResourceKey, u *unstructured.Unstructured) Manifest

func ParseFromStructuredObject added in v0.1.4

func ParseFromStructuredObject(s interface{}) (Manifest, error)

func ParseManifests added in v0.1.2

func ParseManifests(data string) ([]Manifest, error)

func (Manifest) AddAnnotations

func (m Manifest) AddAnnotations(annotations map[string]string)

func (Manifest) AddStringMapValues added in v0.1.5

func (m Manifest) AddStringMapValues(values map[string]string, fields ...string) error

AddStringMapValues adds or overrides the given key-values into the string map that can be found at the specified fields.

func (Manifest) ConvertToStructuredObject added in v0.1.4

func (m Manifest) ConvertToStructuredObject(o interface{}) error

func (Manifest) Duplicate

func (m Manifest) Duplicate(name string) Manifest

func (Manifest) GetAnnotations added in v0.1.5

func (m Manifest) GetAnnotations() map[string]string

func (Manifest) GetNestedMap added in v0.9.1

func (m Manifest) GetNestedMap(fields ...string) (map[string]interface{}, error)

func (Manifest) GetNestedStringMap added in v0.2.1

func (m Manifest) GetNestedStringMap(fields ...string) (map[string]string, error)

func (Manifest) GetSpec added in v0.1.5

func (m Manifest) GetSpec() (interface{}, error)

func (Manifest) MarshalJSON added in v0.1.1

func (m Manifest) MarshalJSON() ([]byte, error)

func (Manifest) SetStructuredSpec added in v0.1.5

func (m Manifest) SetStructuredSpec(spec interface{}) error

func (Manifest) YamlBytes

func (m Manifest) YamlBytes() ([]byte, error)

type ManifestLoader

type ManifestLoader interface {
	// LoadManifests renders and loads all manifests for application.
	LoadManifests(ctx context.Context) ([]Manifest, error)
}

func NewManifestLoader

func NewManifestLoader(appName, appDir, repoDir, configFileName string, input config.KubernetesDeploymentInput, logger *zap.Logger) ManifestLoader

type Provider

type Provider interface {
	ManifestLoader
	Applier
}

func NewProvider

func NewProvider(appName, appDir, repoDir, configFileName string, input config.KubernetesDeploymentInput, logger *zap.Logger) Provider

type ResourceKey

type ResourceKey struct {
	APIVersion string
	Kind       string
	Namespace  string
	Name       string
}

func DecodeResourceKey

func DecodeResourceKey(key string) (ResourceKey, error)

func MakeResourceKey

func MakeResourceKey(obj *unstructured.Unstructured) ResourceKey

func (ResourceKey) IsConfigMap

func (k ResourceKey) IsConfigMap() bool

func (ResourceKey) IsDeployment

func (k ResourceKey) IsDeployment() bool

func (ResourceKey) IsEqualWithIgnoringNamespace added in v0.1.1

func (k ResourceKey) IsEqualWithIgnoringNamespace(a ResourceKey) bool

IsEqualWithIgnoringNamespace checks whether the key is equal to the given key, but this ignores the comparation of the namesapce.

func (ResourceKey) IsLess

func (k ResourceKey) IsLess(a ResourceKey) bool

IsLess reports whether the key should sort before the given key.

func (ResourceKey) IsLessWithIgnoringNamespace added in v0.1.1

func (k ResourceKey) IsLessWithIgnoringNamespace(a ResourceKey) bool

IsLessWithIgnoringNamespace reports whether the key should sort before the given key, but this ignores the comparation of the namesapce.

func (ResourceKey) IsReplicaSet added in v0.1.1

func (k ResourceKey) IsReplicaSet() bool

func (ResourceKey) IsSecret

func (k ResourceKey) IsSecret() bool

func (ResourceKey) IsService added in v0.1.4

func (k ResourceKey) IsService() bool

func (ResourceKey) IsWorkload added in v0.1.1

func (k ResourceKey) IsWorkload() bool

func (ResourceKey) IsZero

func (k ResourceKey) IsZero() bool

func (ResourceKey) ReadableString added in v0.1.1

func (k ResourceKey) ReadableString() string

func (ResourceKey) String

func (k ResourceKey) String() string

type TemplatingMethod

type TemplatingMethod string
const (
	TemplatingMethodHelm      TemplatingMethod = "helm"
	TemplatingMethodKustomize TemplatingMethod = "kustomize"
	TemplatingMethodNone      TemplatingMethod = "none"
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL