mirror of
https://github.com/kubevela/kubevela.git
synced 2026-02-14 18:10:21 +00:00
Some checks failed
Webhook Upgrade Validation / webhook-upgrade-check (push) Failing after 1m46s
* exploring context data passing Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * adds output status fetch logic Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * fix: standardize import in dispatcher. Signed-off-by: Chaitanyareddy0702 <chaitanyareddy0702@gmail.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * feat: Allow traits to access workload output status in CUE context Signed-off-by: Chaitanyareddy0702 <chaitanyareddy0702@gmail.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * feat: Implement PostDispatch traits that apply after component health is confirmed. Signed-off-by: Chaitanyareddy0702 <chaitanyareddy0702@gmail.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * feat: Refactor trait handling and status propagation in application dispatch. Signed-off-by: Chaitanyareddy0702 <chaitanyareddy0702@gmail.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * fix: run make reviewable Signed-off-by: Chaitanyareddy0702 <chaitanyareddy0702@gmail.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * feat: Implement and document PostDispatch traits, applying them after component health is confirmed and guarded by a feature flag, along with new example applications. Signed-off-by: Chaitanyareddy0702 <chaitanyareddy0702@gmail.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * feat: Add comments Signed-off-by: Chaitanyareddy0702 <chaitanyareddy0702@gmail.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * Fix: Restore the status field in ctx. Signed-off-by: Vaibhav Agrawal <vaibhav.agrawal0096@gmail.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * Fix: Error for evaluating the status of the trait Signed-off-by: Chaitanyareddy0702 <chaitanyareddy0702@gmail.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * refactor: removes minor unnecessary changes Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * refactor: minor linter changes Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * test: Add comprehensive tests for PostDispatch traits and their status handling Signed-off-by: Reetika Malhotra <malhotra.reetika25@gmail.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * Fix: Increase multi-cluster test time Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * Chore: Add focus and print the application status Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * Chore: print deployment status in the multicluster test Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * Chore: add labels for the deployment Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * debugging test failure Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * debugging test failure by updating multi cluster ctx Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * undoes multi cluster ctx change Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * Feat: enable MultiStageComponentApply feature by default Signed-off-by: Chaitanya Reddy Onteddu <chaitanyareddy0702@gmail.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * Feat: implement post-dispatch traits application in workflow states Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * Chore: remove unnecessary blank lines in application_controller.go Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * Feat: enhance output readiness handling in health checks Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * Feat: add logic to determine need for post-dispatch outputs in workload processing Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * Feat: enhance output extraction and dependency checking for post-dispatch traits Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * fix code to exclude validation of post dispatch trait in webhook Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * fix code to exclude validation of post dispatch trait in webhook Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * commit for running the test again Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * commit for running the test again Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * commit for running the test again Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * triggering checks Signed-off-by: Amit Singh <singhamitch@outlook.com> * chore: adds explanation comments Signed-off-by: Amit Singh <singhamitch@outlook.com> * chore: adds errors to context Signed-off-by: Amit Singh <singhamitch@outlook.com> * chore: minor improvements Signed-off-by: Amit Singh <singhamitch@outlook.com> * fix: update output handling for pending PostDispatch traits Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * fix: improve output handling for PostDispatch traits in deploy process Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * fix: streamline output handling in PostDispatch process Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * chore: commit to re run the pipeline Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * chore: commit to re run the pipeline Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * chore: commit to re run the pipeline Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * fix: enhance output status handling in PostDispatch context for multi-stage support Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * chore: commit to re run the pipeline Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * fix: increase timeout for PostDispatch trait verification in tests Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * fix: enhance output status handling in PostDispatch context for multi-stage support Signed-off-by: Vishal Kumar <vishal210893@gmail.com> * chore: commit to re run the pipeline Signed-off-by: Vishal Kumar <vishal210893@gmail.com> --------- Signed-off-by: Amit Singh <singhamitch@outlook.com> Signed-off-by: semmet95 <singhamitch@outlook.com> Signed-off-by: Vishal Kumar <vishal210893@gmail.com> Signed-off-by: Chaitanyareddy0702 <chaitanyareddy0702@gmail.com> Signed-off-by: Vaibhav Agrawal <vaibhav.agrawal0096@gmail.com> Signed-off-by: Reetika Malhotra <malhotra.reetika25@gmail.com> Signed-off-by: Chaitanya Reddy Onteddu <chaitanyareddy0702@gmail.com> Co-authored-by: Chitanya Reddy Onteddu <chaitanyareddy0702@gmail.com> Co-authored-by: Vishal Kumar <vishal210893@gmail.com>
159 lines
9.6 KiB
Go
159 lines
9.6 KiB
Go
/*
|
|
Copyright 2021 The KubeVela Authors.
|
|
|
|
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 features
|
|
|
|
import (
|
|
"k8s.io/apimachinery/pkg/util/runtime"
|
|
"k8s.io/apiserver/pkg/util/feature"
|
|
"k8s.io/component-base/featuregate"
|
|
)
|
|
|
|
const (
|
|
// Compatibility Features
|
|
|
|
// DeprecatedPolicySpec enable the use of deprecated policy spec
|
|
DeprecatedPolicySpec featuregate.Feature = "DeprecatedPolicySpec"
|
|
// LegacyObjectTypeIdentifier enable the use of legacy object type identifier for selecting ref-object
|
|
LegacyObjectTypeIdentifier featuregate.Feature = "LegacyObjectTypeIdentifier"
|
|
// DeprecatedObjectLabelSelector enable the use of deprecated object label selector for selecting ref-object
|
|
DeprecatedObjectLabelSelector featuregate.Feature = "DeprecatedObjectLabelSelector"
|
|
// LegacyResourceTrackerGC enable the gc of legacy resource tracker in managed clusters
|
|
LegacyResourceTrackerGC featuregate.Feature = "LegacyResourceTrackerGC"
|
|
// LegacyResourceOwnerValidation if enabled, the resource dispatch will allow existing resource not to have owner
|
|
// application and the current application will take over it
|
|
LegacyResourceOwnerValidation featuregate.Feature = "LegacyResourceOwnerValidation"
|
|
// DisableReferObjectsFromURL if set, the url ref objects will be disallowed
|
|
DisableReferObjectsFromURL featuregate.Feature = "DisableReferObjectsFromURL"
|
|
|
|
// ApplyResourceByReplace enforces the modification of resource through PUT requests.
|
|
// If not set, the resource modification will use patch requests (three-way-strategy-merge-patch).
|
|
// The side effect of enabling this feature is that the request traffic will increase due to
|
|
// the increase of bytes transferred and the more frequent resource mutation failure due to the
|
|
// potential conflicts.
|
|
// If set, KubeVela controller will enforce strong restriction on the managed resource that external
|
|
// system would be unable to make modifications to the KubeVela managed resource. In other words,
|
|
// no merge for modifications from multiple sources. Only KubeVela keeps the Source-of-Truth for the
|
|
// resource.
|
|
ApplyResourceByReplace featuregate.Feature = "ApplyResourceByReplace"
|
|
|
|
// Edge Features
|
|
|
|
// AuthenticateApplication enable the authentication for application
|
|
AuthenticateApplication featuregate.Feature = "AuthenticateApplication"
|
|
// ValidateDefinitionPermissions enables RBAC validation for definition access in applications
|
|
ValidateDefinitionPermissions featuregate.Feature = "ValidateDefinitionPermissions"
|
|
// GzipResourceTracker enables the gzip compression for ResourceTracker. It can be useful if you have large
|
|
// application that needs to dispatch lots of resources or large resources (like CRD or huge ConfigMap),
|
|
// which at the cost of slower processing speed due to the extra overhead for compression and decompression.
|
|
GzipResourceTracker featuregate.Feature = "GzipResourceTracker"
|
|
// ZstdResourceTracker enables the zstd compression for ResourceTracker.
|
|
// Refer to GzipResourceTracker for its use-cases. It is much faster and more
|
|
// efficient than gzip, about 2x faster and compresses to smaller size.
|
|
// If you are dealing with very large ResourceTrackers (1MB or so), it should
|
|
// have almost NO performance penalties compared to no compression at all.
|
|
// If dealing with smaller ResourceTrackers (10KB - 1MB), the performance
|
|
// penalties are minimal.
|
|
ZstdResourceTracker featuregate.Feature = "ZstdResourceTracker"
|
|
|
|
// GzipApplicationRevision serves the same purpose as GzipResourceTracker,
|
|
// but for ApplicationRevision.
|
|
GzipApplicationRevision featuregate.Feature = "GzipApplicationRevision"
|
|
// ZstdApplicationRevision serves the same purpose as ZstdResourceTracker,
|
|
// but for ApplicationRevision.
|
|
ZstdApplicationRevision featuregate.Feature = "ZstdApplicationRevision"
|
|
|
|
// ApplyOnce enable the apply-once feature for all applications
|
|
// If enabled, no StateKeep will be run, ResourceTracker will also disable the storage of all resource data, only
|
|
// metadata will be kept
|
|
ApplyOnce featuregate.Feature = "ApplyOnce"
|
|
|
|
// MultiStageComponentApply enable multi-stage feature for component
|
|
// If enabled, the dispatch of manifests is performed in batches according to the stage
|
|
MultiStageComponentApply featuregate.Feature = "MultiStageComponentApply"
|
|
|
|
// PreDispatchDryRun enable dryrun before dispatching resources
|
|
// Enable this flag can help prevent unsuccessful dispatch resources entering resourcetracker and improve the
|
|
// user experiences of gc but at the cost of increasing network requests.
|
|
PreDispatchDryRun featuregate.Feature = "PreDispatchDryRun"
|
|
|
|
// ValidateComponentWhenSharding validate component in sharding mode
|
|
// In sharding mode, since ApplicationRevision will not be cached for webhook, the validation of component
|
|
// need to call Kubernetes APIServer which can be slow and take up some network traffic. So by default, the
|
|
// validation of component will be disabled.
|
|
ValidateComponentWhenSharding = "ValidateComponentWhenSharding"
|
|
|
|
// DisableWebhookAutoSchedule disable auto schedule for application mutating webhook when sharding enabled
|
|
// If set to true, the webhook will not make auto schedule for applications and users can make customized
|
|
// scheduler for assigning shards to applications
|
|
DisableWebhookAutoSchedule = "DisableWebhookAutoSchedule"
|
|
|
|
// DisableBootstrapClusterInfo disable the cluster info bootstrap at the starting of the controller
|
|
DisableBootstrapClusterInfo = "DisableBootstrapClusterInfo"
|
|
|
|
// InformerCacheFilterUnnecessaryFields filter unnecessary fields for informer cache
|
|
InformerCacheFilterUnnecessaryFields = "InformerCacheFilterUnnecessaryFields"
|
|
|
|
// SharedDefinitionStorageForApplicationRevision use definition cache to reduce duplicated definition storage
|
|
// for application revision, must be used with InformerCacheFilterUnnecessaryFields
|
|
SharedDefinitionStorageForApplicationRevision = "SharedDefinitionStorageForApplicationRevision"
|
|
|
|
// DisableWorkflowContextConfigMapCache disable the workflow context's configmap informer cache
|
|
DisableWorkflowContextConfigMapCache = "DisableWorkflowContextConfigMapCache"
|
|
|
|
// EnableCueValidation enable strict cue validation fields for the required parameter field verification
|
|
EnableCueValidation = "EnableCueValidation"
|
|
|
|
// EnableApplicationStatusMetrics enable the collection and export of application status metrics and structured logging
|
|
EnableApplicationStatusMetrics = "EnableApplicationStatusMetrics"
|
|
|
|
// ValidateResourcesExist enables webhook validation to check if resource types referenced in
|
|
// ComponentDefinition/TraitDefinition/WorkflowStepDefinition/PolicyDefinition CUE templates exist in the cluster
|
|
ValidateResourcesExist = "ValidateResourcesExist"
|
|
)
|
|
|
|
var defaultFeatureGates = map[featuregate.Feature]featuregate.FeatureSpec{
|
|
DeprecatedPolicySpec: {Default: false, PreRelease: featuregate.Alpha},
|
|
LegacyObjectTypeIdentifier: {Default: false, PreRelease: featuregate.Alpha},
|
|
DeprecatedObjectLabelSelector: {Default: false, PreRelease: featuregate.Alpha},
|
|
LegacyResourceTrackerGC: {Default: false, PreRelease: featuregate.Beta},
|
|
LegacyResourceOwnerValidation: {Default: false, PreRelease: featuregate.Alpha},
|
|
DisableReferObjectsFromURL: {Default: false, PreRelease: featuregate.Alpha},
|
|
ApplyResourceByReplace: {Default: false, PreRelease: featuregate.Alpha},
|
|
AuthenticateApplication: {Default: false, PreRelease: featuregate.Alpha},
|
|
ValidateDefinitionPermissions: {Default: false, PreRelease: featuregate.Alpha},
|
|
GzipResourceTracker: {Default: false, PreRelease: featuregate.Alpha},
|
|
ZstdResourceTracker: {Default: false, PreRelease: featuregate.Alpha},
|
|
ApplyOnce: {Default: false, PreRelease: featuregate.Alpha},
|
|
MultiStageComponentApply: {Default: true, PreRelease: featuregate.Alpha},
|
|
GzipApplicationRevision: {Default: false, PreRelease: featuregate.Alpha},
|
|
ZstdApplicationRevision: {Default: false, PreRelease: featuregate.Alpha},
|
|
PreDispatchDryRun: {Default: true, PreRelease: featuregate.Alpha},
|
|
ValidateComponentWhenSharding: {Default: false, PreRelease: featuregate.Alpha},
|
|
DisableWebhookAutoSchedule: {Default: false, PreRelease: featuregate.Alpha},
|
|
DisableBootstrapClusterInfo: {Default: false, PreRelease: featuregate.Alpha},
|
|
InformerCacheFilterUnnecessaryFields: {Default: true, PreRelease: featuregate.Alpha},
|
|
SharedDefinitionStorageForApplicationRevision: {Default: true, PreRelease: featuregate.Alpha},
|
|
DisableWorkflowContextConfigMapCache: {Default: true, PreRelease: featuregate.Alpha},
|
|
EnableCueValidation: {Default: false, PreRelease: featuregate.Beta},
|
|
EnableApplicationStatusMetrics: {Default: false, PreRelease: featuregate.Alpha},
|
|
ValidateResourcesExist: {Default: false, PreRelease: featuregate.Alpha},
|
|
}
|
|
|
|
func init() {
|
|
runtime.Must(feature.DefaultMutableFeatureGate.Add(defaultFeatureGates))
|
|
}
|