-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft: Enable WithIgnoreMutationWebhook #319
Conversation
Temporary image deleted. |
316ec42
to
7a57ee2
Compare
8566817
to
0c2a9be
Compare
f51ceb2
to
44de9a5
Compare
44de9a5
to
2a7a652
Compare
Mergecat's ReviewClick to read mergecats review!😼 Mergecat review of go.mod@@ -60,7 +60,8 @@ require (
k8s.io/api v0.31.3
k8s.io/apiextensions-apiserver v0.31.2
k8s.io/apimachinery v0.31.3
- k8s.io/client-go v0.31.3
+ k8s.io/client-go v1.5.2
+ k8s.io/klog/v2 v2.130.1
sigs.k8s.io/controller-runtime v0.19.3
sigs.k8s.io/yaml v1.4.0
)
@@ -295,7 +296,6 @@ require (
k8s.io/cli-runtime v0.31.3 // indirect
k8s.io/component-base v0.31.3 // indirect
k8s.io/component-helpers v0.31.3 // indirect
- k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/kube-aggregator v0.31.2 // indirect
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
k8s.io/kubectl v0.31.2 // indirect Feedback & Suggestions:
😼 Mergecat review of pkg/checks/diff/diff.go@@ -4,10 +4,6 @@ import (
"context"
"encoding/json"
"fmt"
- "io"
- "strings"
- "time"
-
cmdutil "github.com/argoproj/argo-cd/v2/cmd/util"
"github.com/argoproj/argo-cd/v2/controller"
"github.com/argoproj/argo-cd/v2/pkg/apiclient/application"
@@ -20,12 +16,18 @@ import (
"github.com/argoproj/gitops-engine/pkg/sync/hook"
"github.com/argoproj/gitops-engine/pkg/sync/ignore"
"github.com/argoproj/gitops-engine/pkg/utils/kube"
+ "github.com/argoproj/gitops-engine/pkg/utils/tracing"
"github.com/ghodss/yaml"
"github.com/go-logr/zerologr"
"github.com/pmezard/go-difflib/difflib"
"github.com/rs/zerolog/log"
+ "io"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime/schema"
+ "k8s.io/client-go/rest"
+ "k8s.io/klog/v2/textlogger"
+ "strings"
+ "time"
"github.com/zapier/kubechecks/pkg/checks"
"github.com/zapier/kubechecks/pkg/msg"
@@ -201,11 +203,33 @@ func generateDiff(ctx context.Context, request checks.Request, argoSettings *set
ignoreNormalizerOpts := normalizers.IgnoreNormalizerOpts{
JQExecutionTimeout: 1 * time.Second,
}
+ kubeCtl := &kube.KubectlCmd{
+ Tracer: tracing.NopTracer{},
+ Log: textlogger.NewLogger(textlogger.NewConfig()),
+ }
+ config, err := rest.InClusterConfig()
+ if err != nil {
+ return diff.DiffResult{}, err
+ }
+ apiRes, _, err := kubeCtl.LoadOpenAPISchema(config)
+ if err != nil {
+ return diff.DiffResult{}, err
+ }
+ resources, _, err := kubeCtl.ManageResources(config, apiRes)
+ if err != nil {
+ return diff.DiffResult{}, err
+ }
+ dryRunner := diff.NewK8sServerSideDryRunner(resources)
+
diffConfig, err := argodiff.NewDiffConfigBuilder().
WithLogger(zerologr.New(&log.Logger)).
WithDiffSettings(request.App.Spec.IgnoreDifferences, overrides, ignoreAggregatedRoles, ignoreNormalizerOpts).
WithTracking(argoSettings.AppLabelKey, argoSettings.TrackingMethod).
WithNoCache().
+ WithIgnoreMutationWebhook(false).
+ WithServerSideDiff(true).
+ WithServerSideDryRunner(dryRunner).
+ WithManager("application/apply-patch").
Build()
if err != nil {
telemetry.SetError(span, err, "Build Diff") Feedback & Suggestions:
Overall, the changes introduce valuable functionality, but attention to error handling, performance, and security will ensure robustness. 🛡️✨ Dependency ReviewClick to read mergecats review!No suggestions found |
This PR is WIP.
By setting WithIgnoreMutationWebhook in the generateDiff function we can trigger mutating webhooks. This also requires ServerSide diffing to be enabled.
This is in preparation of being able to have kubechecks determine if a resource is going to fail a kyverno policy.