client-go icon indicating copy to clipboard operation
client-go copied to clipboard

Dynamic client apply full deploymentObject to update got out of order environment variables

Open sunxunkang opened this issue 1 year ago • 2 comments

version

k8s.io/client-go v0.27.4 apiserver:v1.20.4

code segment

        if namespaced {
            dyObj, err = cli.Dynamic.Resource(gvr).Namespace(dyObj.GetNamespace()).Apply(ctx, dyObj.GetName(), dyObj, metav1.ApplyOptions{FieldManager: knightmeta.AppName, Force: true, DryRun: cli.DryRun(dryRun)})
            //_, err = cli.Dynamic.Resource(gvr).Namespace(dyObj.GetNamespace()).Patch(ctx, dyObj.GetName(), types.ApplyPatchType, manifest, metav1.PatchOptions{FieldManager: knightmeta.AppName, Force: &forceApply, DryRun: cli.DryRun(dryRun)})
        } else {
            //_, err = cli.Dynamic.Resource(gvr).Patch(ctx, dyObj.GetName(), types.ApplyPatchType, manifest, metav1.PatchOptions{FieldManager: knightmeta.AppName, Force: &forceApply, DryRun: cli.DryRun(dryRun)})
            dyObj, err = cli.Dynamic.Resource(gvr).Apply(ctx, dyObj.GetName(), dyObj, metav1.ApplyOptions{FieldManager: knightmeta.AppName, Force: true, DryRun: cli.DryRun(dryRun)})
        }

description

I found the result deployment object's env slice is in stable order but totally out of order compared to where older obj or expected dyObj

sunxunkang avatar Sep 21 '23 12:09 sunxunkang