Documentation ¶
Overview ¶
Package apis contains typed structs from fluxcd/helm-controller and fluxcd/source-controller. Because we cannot solve dependency inconsistencies between KubeVela and fluxcd/gotk, so we pick up those APIs used in KubeVela to install helm resources.
Index ¶
- Constants
- Variables
- type CrossNamespaceObjectReference
- type HelmChartTemplate
- type HelmChartTemplateSpec
- type HelmReleaseSpec
- type HelmRepositorySpec
- type HelmSpec
- type Install
- type InstallRemediation
- type RemediationStrategy
- type Rollback
- type Test
- type Uninstall
- type Upgrade
- type UpgradeRemediation
- type ValuesReference
Constants ¶
const (
// HelmRepositoryKind is the kind name of fluxcd/helmrepository
HelmRepositoryKind = "HelmRepository"
)
Variables ¶
var ( // HelmReleaseGVK refers to GVK of fluxcd/helmrelease HelmReleaseGVK = schema.GroupVersionKind{ Group: "helm.toolkit.fluxcd.io", Version: "v2beta1", Kind: "HelmRelease", } // HelmRepositoryGVK refers to GVK of fluxcd/helmrepository HelmRepositoryGVK = schema.GroupVersionKind{ Group: "source.toolkit.fluxcd.io", Version: "v1beta1", Kind: "HelmRepository", } // HelmChartNamePath indicates the field to path in HelmRelease to get the chart name HelmChartNamePath = []string{"spec", "chart", "spec", "chart"} )
Functions ¶
This section is empty.
Types ¶
type CrossNamespaceObjectReference ¶
type CrossNamespaceObjectReference struct { // APIVersion of the referent. // +optional APIVersion string `json:"apiVersion,omitempty"` // Kind of the referent. // +kubebuilder:validation:Enum=HelmRepository;GitRepository;Bucket // +required Kind string `json:"kind,omitempty"` // Name of the referent. // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=253 // +required Name string `json:"name"` // Namespace of the referent. // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=63 // +kubebuilder:validation:Optional // +optional Namespace string `json:"namespace,omitempty"` }
CrossNamespaceObjectReference contains enough information to let you locate the typed referenced object at cluster level.
type HelmChartTemplate ¶
type HelmChartTemplate struct { // Spec holds the template for the v1beta1.HelmChartSpec for this HelmRelease. // +required Spec HelmChartTemplateSpec `json:"spec"` }
HelmChartTemplate defines the template from which the controller will generate a v1beta1.HelmChart object in the same namespace as the referenced v1beta1.Source.
type HelmChartTemplateSpec ¶
type HelmChartTemplateSpec struct { // The name or path the Helm chart is available at in the SourceRef. // +required Chart string `json:"chart"` // Version semver expression, ignored for charts from v1beta1.GitRepository and // v1beta1.Bucket sources. Defaults to latest when omitted. // +kubebuilder:default:=* // +optional Version string `json:"version,omitempty"` // The name and namespace of the v1beta1.Source the chart is available at. // +required SourceRef CrossNamespaceObjectReference `json:"sourceRef"` // Interval at which to check the v1beta1.Source for updates. Defaults to // 'HelmReleaseSpec.Interval'. // +optional Interval *metav1.Duration `json:"interval,omitempty"` // Alternative values file to use as the default chart values, expected to be a // relative path in the SourceRef. Ignored when omitted. // +optional ValuesFile string `json:"valuesFile,omitempty"` }
HelmChartTemplateSpec defines the template from which the controller will generate a v1beta1.HelmChartSpec object.
type HelmReleaseSpec ¶
type HelmReleaseSpec struct { // Chart defines the template of the v1beta1.HelmChart that should be created // for this HelmRelease. // +required Chart HelmChartTemplate `json:"chart"` // Interval at which to reconcile the Helm release. // make it optional in KubeVela // +optional Interval *metav1.Duration `json:"interval,omitempty"` // Suspend tells the controller to suspend reconciliation for this HelmRelease, // it does not apply to already started reconciliations. Defaults to false. // +optional Suspend bool `json:"suspend,omitempty"` // ReleaseName used for the Helm release. Defaults to a composition of // '[TargetNamespace-]Name'. // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=53 // +kubebuilder:validation:Optional // +optional ReleaseName string `json:"releaseName,omitempty"` // TargetNamespace to target when performing operations for the HelmRelease. // Defaults to the namespace of the HelmRelease. // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=63 // +kubebuilder:validation:Optional // +optional TargetNamespace string `json:"targetNamespace,omitempty"` // StorageNamespace used for the Helm storage. // Defaults to the namespace of the HelmRelease. // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=63 // +kubebuilder:validation:Optional // +optional StorageNamespace string `json:"storageNamespace,omitempty"` // Timeout is the time to wait for any individual Kubernetes operation (like Jobs // for hooks) during the performance of a Helm action. Defaults to '5m0s'. // +optional Timeout *metav1.Duration `json:"timeout,omitempty"` // MaxHistory is the number of revisions saved by Helm for this HelmRelease. // Use '0' for an unlimited number of revisions; defaults to '10'. // +optional MaxHistory *int `json:"maxHistory,omitempty"` // The name of the Kubernetes service account to impersonate // when reconciling this HelmRelease. // +optional ServiceAccountName string `json:"serviceAccountName,omitempty"` // Install holds the configuration for Helm install actions for this HelmRelease. // +optional Install *Install `json:"install,omitempty"` // Upgrade holds the configuration for Helm upgrade actions for this HelmRelease. // +optional Upgrade *Upgrade `json:"upgrade,omitempty"` // Test holds the configuration for Helm test actions for this HelmRelease. // +optional Test *Test `json:"test,omitempty"` // Rollback holds the configuration for Helm rollback actions for this HelmRelease. // +optional Rollback *Rollback `json:"rollback,omitempty"` // Uninstall holds the configuration for Helm uninstall actions for this HelmRelease. // +optional Uninstall *Uninstall `json:"uninstall,omitempty"` // Values holds the values for this Helm release. // +optional Values *apiextensionsv1.JSON `json:"values,omitempty"` }
HelmReleaseSpec defines the desired state of a Helm release.
type HelmRepositorySpec ¶
type HelmRepositorySpec struct { // The Helm repository URL, a valid URL contains at least a protocol and host. // +required URL string `json:"url"` // The interval at which to check the upstream for updates. // make it optional in KubeVela // +optional Interval *metav1.Duration `json:"interval,omitempty"` // The timeout of index downloading, defaults to 60s. // +kubebuilder:default:="60s" // +optional Timeout *metav1.Duration `json:"timeout,omitempty"` // This flag tells the controller to suspend the reconciliation of this source. // +optional Suspend bool `json:"suspend,omitempty"` }
HelmRepositorySpec defines the reference to a Helm repository.
type HelmSpec ¶
type HelmSpec struct { HelmReleaseSpec `json:"release"` HelmRepositorySpec `json:"repository"` }
HelmSpec includes information to install a Helm chart
type Install ¶
type Install struct { // Timeout is the time to wait for any individual Kubernetes operation (like // Jobs for hooks) during the performance of a Helm install action. Defaults to // 'HelmReleaseSpec.Timeout'. // +optional Timeout *metav1.Duration `json:"timeout,omitempty"` // Remediation holds the remediation configuration for when the Helm install // action for the HelmRelease fails. The default is to not perform any action. // +optional Remediation *InstallRemediation `json:"remediation,omitempty"` // DisableWait disables the waiting for resources to be ready after a Helm // install has been performed. // +optional DisableWait bool `json:"disableWait,omitempty"` // DisableHooks prevents hooks from running during the Helm install action. // +optional DisableHooks bool `json:"disableHooks,omitempty"` // DisableOpenAPIValidation prevents the Helm install action from validating // rendered templates against the Kubernetes OpenAPI Schema. // +optional DisableOpenAPIValidation bool `json:"disableOpenAPIValidation,omitempty"` // Replace tells the Helm install action to re-use the 'ReleaseName', but only // if that name is a deleted release which remains in the history. // +optional Replace bool `json:"replace,omitempty"` // SkipCRDs tells the Helm install action to not install any CRDs. By default, // CRDs are installed if not already present. // +optional SkipCRDs bool `json:"skipCRDs,omitempty"` // CreateNamespace tells the Helm install action to create the // HelmReleaseSpec.TargetNamespace if it does not exist yet. // On uninstall, the namespace will not be garbage collected. // +optional CreateNamespace bool `json:"createNamespace,omitempty"` }
Install holds the configuration for Helm install actions performed for this HelmRelease.
type InstallRemediation ¶
type InstallRemediation struct { // Retries is the number of retries that should be attempted on failures before // bailing. Remediation, using an uninstall, is performed between each attempt. // Defaults to '0', a negative integer equals to unlimited retries. // +optional Retries int `json:"retries,omitempty"` // IgnoreTestFailures tells the controller to skip remediation when the Helm // tests are run after an install action but fail. Defaults to // 'Test.IgnoreFailures'. // +optional IgnoreTestFailures *bool `json:"ignoreTestFailures,omitempty"` // RemediateLastFailure tells the controller to remediate the last failure, when // no retries remain. Defaults to 'false'. // +optional RemediateLastFailure *bool `json:"remediateLastFailure,omitempty"` }
InstallRemediation holds the configuration for Helm install remediation.
type RemediationStrategy ¶
type RemediationStrategy string
RemediationStrategy returns the strategy to use to remediate a failed install or upgrade.
const ( // RollbackRemediationStrategy represents a Helm remediation strategy of Helm // rollback. RollbackRemediationStrategy RemediationStrategy = "rollback" // UninstallRemediationStrategy represents a Helm remediation strategy of Helm // uninstall. UninstallRemediationStrategy RemediationStrategy = "uninstall" )
type Rollback ¶
type Rollback struct { // Timeout is the time to wait for any individual Kubernetes operation (like // Jobs for hooks) during the performance of a Helm rollback action. Defaults to // 'HelmReleaseSpec.Timeout'. // +optional Timeout *metav1.Duration `json:"timeout,omitempty"` // DisableWait disables the waiting for resources to be ready after a Helm // rollback has been performed. // +optional DisableWait bool `json:"disableWait,omitempty"` // DisableHooks prevents hooks from running during the Helm rollback action. // +optional DisableHooks bool `json:"disableHooks,omitempty"` // Recreate performs pod restarts for the resource if applicable. // +optional Recreate bool `json:"recreate,omitempty"` // Force forces resource updates through a replacement strategy. // +optional Force bool `json:"force,omitempty"` // CleanupOnFail allows deletion of new resources created during the Helm // rollback action when it fails. // +optional CleanupOnFail bool `json:"cleanupOnFail,omitempty"` }
Rollback holds the configuration for Helm rollback actions for this HelmRelease.
type Test ¶
type Test struct { // Enable enables Helm test actions for this HelmRelease after an Helm install // or upgrade action has been performed. // +optional Enable bool `json:"enable,omitempty"` // Timeout is the time to wait for any individual Kubernetes operation during // the performance of a Helm test action. Defaults to 'HelmReleaseSpec.Timeout'. // +optional Timeout *metav1.Duration `json:"timeout,omitempty"` // IgnoreFailures tells the controller to skip remediation when the Helm tests // are run but fail. Can be overwritten for tests run after install or upgrade // actions in 'Install.IgnoreTestFailures' and 'Upgrade.IgnoreTestFailures'. // +optional IgnoreFailures bool `json:"ignoreFailures,omitempty"` }
Test holds the configuration for Helm test actions for this HelmRelease.
type Uninstall ¶
type Uninstall struct { // Timeout is the time to wait for any individual Kubernetes operation (like // Jobs for hooks) during the performance of a Helm uninstall action. Defaults // to 'HelmReleaseSpec.Timeout'. // +optional Timeout *metav1.Duration `json:"timeout,omitempty"` // DisableHooks prevents hooks from running during the Helm rollback action. // +optional DisableHooks bool `json:"disableHooks,omitempty"` // KeepHistory tells Helm to remove all associated resources and mark the // release as deleted, but retain the release history. // +optional KeepHistory bool `json:"keepHistory,omitempty"` }
Uninstall holds the configuration for Helm uninstall actions for this HelmRelease.
type Upgrade ¶
type Upgrade struct { // Timeout is the time to wait for any individual Kubernetes operation (like // Jobs for hooks) during the performance of a Helm upgrade action. Defaults to // 'HelmReleaseSpec.Timeout'. // +optional Timeout *metav1.Duration `json:"timeout,omitempty"` // Remediation holds the remediation configuration for when the Helm upgrade // action for the HelmRelease fails. The default is to not perform any action. // +optional Remediation *UpgradeRemediation `json:"remediation,omitempty"` // DisableWait disables the waiting for resources to be ready after a Helm // upgrade has been performed. // +optional DisableWait bool `json:"disableWait,omitempty"` // DisableHooks prevents hooks from running during the Helm upgrade action. // +optional DisableHooks bool `json:"disableHooks,omitempty"` // DisableOpenAPIValidation prevents the Helm upgrade action from validating // rendered templates against the Kubernetes OpenAPI Schema. // +optional DisableOpenAPIValidation bool `json:"disableOpenAPIValidation,omitempty"` // Force forces resource updates through a replacement strategy. // +optional Force bool `json:"force,omitempty"` // PreserveValues will make Helm reuse the last release's values and merge in // overrides from 'Values'. Setting this flag makes the HelmRelease // non-declarative. // +optional PreserveValues bool `json:"preserveValues,omitempty"` // CleanupOnFail allows deletion of new resources created during the Helm // upgrade action when it fails. // +optional CleanupOnFail bool `json:"cleanupOnFail,omitempty"` }
Upgrade holds the configuration for Helm upgrade actions for this HelmRelease.
type UpgradeRemediation ¶
type UpgradeRemediation struct { // Retries is the number of retries that should be attempted on failures before // bailing. Remediation, using 'Strategy', is performed between each attempt. // Defaults to '0', a negative integer equals to unlimited retries. // +optional Retries int `json:"retries,omitempty"` // IgnoreTestFailures tells the controller to skip remediation when the Helm // tests are run after an upgrade action but fail. // Defaults to 'Test.IgnoreFailures'. // +optional IgnoreTestFailures *bool `json:"ignoreTestFailures,omitempty"` // RemediateLastFailure tells the controller to remediate the last failure, when // no retries remain. Defaults to 'false' unless 'Retries' is greater than 0. // +optional RemediateLastFailure *bool `json:"remediateLastFailure,omitempty"` // Strategy to use for failure remediation. Defaults to 'rollback'. // +kubebuilder:validation:Enum=rollback;uninstall // +optional Strategy *RemediationStrategy `json:"strategy,omitempty"` }
UpgradeRemediation holds the configuration for Helm upgrade remediation.
type ValuesReference ¶
type ValuesReference struct { // Kind of the values referent, valid values are ('Secret', 'ConfigMap'). // +kubebuilder:validation:Enum=Secret;ConfigMap // +required Kind string `json:"kind"` // Name of the values referent. Should reside in the same namespace as the // referring resource. // +kubebuilder:validation:MinLength=1 // +kubebuilder:validation:MaxLength=253 // +required Name string `json:"name"` // ValuesKey is the data key where the values.yaml or a specific value can be // found at. Defaults to 'values.yaml'. // +optional ValuesKey string `json:"valuesKey,omitempty"` // TargetPath is the YAML dot notation path the value should be merged at. When // set, the ValuesKey is expected to be a single flat value. Defaults to 'None', // which results in the values getting merged at the root. // +optional TargetPath string `json:"targetPath,omitempty"` // Optional marks this ValuesReference as optional. When set, a not found error // for the values reference is ignored, but any ValuesKey, TargetPath or // transient error will still result in a reconciliation failure. // +optional Optional bool `json:"optional,omitempty"` }
ValuesReference contains a reference to a resource containing Helm values, and optionally the key they can be found at.