Skip to content

Commit e2fc9a6

Browse files
authored
Merge branch 'argoproj-labs:release-0.18' into release-0.18
2 parents 093d922 + ab2d147 commit e2fc9a6

12 files changed

Lines changed: 35066 additions & 23 deletions

File tree

api/v1alpha1/argocd_types.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -694,7 +694,6 @@ type ArgoCDNetworkPolicySpec struct {
694694
// Enabled defines whether NetworkPolicy resources should be created for this Argo CD instance.
695695
// When enabled, the operator will reconcile NetworkPolicies for Argo CD components.
696696
// When disabled, the operator will remove any previously-created NetworkPolicies.
697-
// +kubebuilder:default=true
698697
Enabled *bool `json:"enabled,omitempty"`
699698
}
700699

api/v1beta1/argocd_types.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -867,7 +867,6 @@ type ArgoCDNetworkPolicySpec struct {
867867
// Enabled defines whether NetworkPolicy resources are created for this Argo CD instance.
868868
// When enabled, the operator will reconcile NetworkPolicies for Argo CD components.
869869
// When disabled, the operator will remove any previously-created NetworkPolicies.
870-
// +kubebuilder:default=true
871870
Enabled *bool `json:"enabled,omitempty"`
872871
}
873872

build/util/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# Argo CD v3.3.9
2-
FROM quay.io/argoproj/argocd@sha256:fd8a938f3ec64bfa272d17c20a56b548a97711b92bd5b0a80a485e81bc724969 as argocd
1+
# Argo CD v3.3.10
2+
FROM quay.io/argoproj/argocd@sha256:05d68bf224df7cd39713012c19226a33c374f2f3bd65df7b9088349e4ac3e6a2 as argocd
33

44
# Final Image
55
FROM docker.io/library/ubuntu:24.04

bundle/manifests/argoproj.io_argocds.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1905,7 +1905,6 @@ spec:
19051905
NetworkPolicy resources for this Argo CD instance.
19061906
properties:
19071907
enabled:
1908-
default: true
19091908
description: |-
19101909
Enabled defines whether NetworkPolicy resources should be created for this Argo CD instance.
19111910
When enabled, the operator will reconcile NetworkPolicies for Argo CD components.
@@ -18031,7 +18030,6 @@ spec:
1803118030
NetworkPolicy resources for this Argo CD instance.
1803218031
properties:
1803318032
enabled:
18034-
default: true
1803518033
description: |-
1803618034
Enabled defines whether NetworkPolicy resources are created for this Argo CD instance.
1803718035
When enabled, the operator will reconcile NetworkPolicies for Argo CD components.

common/defaults.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ const (
7070
ArgoCDDefaultArgoImage = "quay.io/argoproj/argocd"
7171

7272
// ArgoCDDefaultArgoVersion is the Argo CD container image digest to use when version not specified.
73-
ArgoCDDefaultArgoVersion = "sha256:fd8a938f3ec64bfa272d17c20a56b548a97711b92bd5b0a80a485e81bc724969" // v3.3.9
73+
ArgoCDDefaultArgoVersion = "sha256:05d68bf224df7cd39713012c19226a33c374f2f3bd65df7b9088349e4ac3e6a2" // v3.3.10
7474

7575
// ArgoCDDefaultBackupKeyLength is the length of the generated default backup key.
7676
ArgoCDDefaultBackupKeyLength = 32

config/crd/bases/argoproj.io_argocds.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1894,7 +1894,6 @@ spec:
18941894
NetworkPolicy resources for this Argo CD instance.
18951895
properties:
18961896
enabled:
1897-
default: true
18981897
description: |-
18991898
Enabled defines whether NetworkPolicy resources should be created for this Argo CD instance.
19001899
When enabled, the operator will reconcile NetworkPolicies for Argo CD components.
@@ -18020,7 +18019,6 @@ spec:
1802018019
NetworkPolicy resources for this Argo CD instance.
1802118020
properties:
1802218021
enabled:
18023-
default: true
1802418022
description: |-
1802518023
Enabled defines whether NetworkPolicy resources are created for this Argo CD instance.
1802618024
When enabled, the operator will reconcile NetworkPolicies for Argo CD components.

controllers/argocd/dex.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,22 @@ func (r *ReconcileArgoCD) reconcileDexDeployment(cr *argoproj.ArgoCD) error {
485485
explanation += "container volume mounts"
486486
changed = true
487487
}
488+
if !reflect.DeepEqual(deploy.Spec.Template.Spec.InitContainers[0].VolumeMounts, existing.Spec.Template.Spec.InitContainers[0].VolumeMounts) {
489+
existing.Spec.Template.Spec.InitContainers[0].VolumeMounts = deploy.Spec.Template.Spec.InitContainers[0].VolumeMounts
490+
if changed {
491+
explanation += ", "
492+
}
493+
explanation += "init container volume mounts"
494+
changed = true
495+
}
496+
if !reflect.DeepEqual(deploy.Spec.Template.Spec.InitContainers[0].Resources, existing.Spec.Template.Spec.InitContainers[0].Resources) {
497+
existing.Spec.Template.Spec.InitContainers[0].Resources = deploy.Spec.Template.Spec.InitContainers[0].Resources
498+
if changed {
499+
explanation += ", "
500+
}
501+
explanation += "init container resources"
502+
changed = true
503+
}
488504
if !reflect.DeepEqual(deploy.Spec.Template.Spec.Volumes, existing.Spec.Template.Spec.Volumes) {
489505
existing.Spec.Template.Spec.Volumes = deploy.Spec.Template.Spec.Volumes
490506
if changed {

controllers/argocd/dex_test.go

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,149 @@ func TestReconcileArgoCD_reconcileDexDeployment_withUpdate(t *testing.T) {
680680
}
681681
}
682682

683+
func TestReconcileArgoCD_reconcileDexDeployment_updatesInitContainerFields(t *testing.T) {
684+
logf.SetLogger(ZapLogger(true))
685+
686+
// staleDeployment simulates a Dex Deployment created by an old operator version (e.g., v1.13)
687+
// that only has the "static-files" volumeMount in the copyutil initContainer and no dexconfig volume.
688+
staleDeployment := func(namespace string) *appsv1.Deployment {
689+
return &appsv1.Deployment{
690+
ObjectMeta: metav1.ObjectMeta{
691+
Name: "argocd-dex-server",
692+
Namespace: namespace,
693+
},
694+
Spec: appsv1.DeploymentSpec{
695+
Selector: &metav1.LabelSelector{
696+
MatchLabels: map[string]string{
697+
"app.kubernetes.io/name": "argocd-dex-server",
698+
},
699+
},
700+
Template: corev1.PodTemplateSpec{
701+
ObjectMeta: metav1.ObjectMeta{
702+
Labels: map[string]string{
703+
"app.kubernetes.io/name": "argocd-dex-server",
704+
},
705+
},
706+
Spec: corev1.PodSpec{
707+
InitContainers: []corev1.Container{
708+
{
709+
Name: "copyutil",
710+
// Old state: only static-files, dexconfig mount is absent
711+
VolumeMounts: []corev1.VolumeMount{
712+
{Name: "static-files", MountPath: "/shared"},
713+
},
714+
Resources: corev1.ResourceRequirements{
715+
Limits: corev1.ResourceList{
716+
corev1.ResourceMemory: resourcev1.MustParse("128Mi"),
717+
},
718+
Requests: corev1.ResourceList{
719+
corev1.ResourceCPU: resourcev1.MustParse("15m"),
720+
corev1.ResourceMemory: resourcev1.MustParse("128Mi"),
721+
},
722+
},
723+
},
724+
},
725+
Containers: []corev1.Container{
726+
{Name: "dex"},
727+
},
728+
Volumes: []corev1.Volume{
729+
{
730+
Name: "static-files",
731+
VolumeSource: corev1.VolumeSource{EmptyDir: &corev1.EmptyDirVolumeSource{}},
732+
},
733+
},
734+
},
735+
},
736+
},
737+
}
738+
}
739+
740+
tests := []struct {
741+
name string
742+
argoCD *argoproj.ArgoCD
743+
wantInitVolumeMounts []corev1.VolumeMount
744+
wantInitResources corev1.ResourceRequirements
745+
}{
746+
{
747+
name: "reconciler adds missing dexconfig volumeMount to copyutil initContainer on upgrade",
748+
argoCD: makeTestArgoCD(func(cr *argoproj.ArgoCD) {
749+
cr.Spec.SSO = &argoproj.ArgoCDSSOSpec{
750+
Provider: argoproj.SSOProviderTypeDex,
751+
}
752+
}),
753+
wantInitVolumeMounts: []corev1.VolumeMount{
754+
{Name: "static-files", MountPath: "/shared"},
755+
{Name: "dexconfig", MountPath: "/tmp"},
756+
},
757+
wantInitResources: corev1.ResourceRequirements{},
758+
},
759+
{
760+
name: "reconciler updates stale resources in copyutil initContainer on upgrade",
761+
argoCD: makeTestArgoCD(func(cr *argoproj.ArgoCD) {
762+
cr.Spec.SSO = &argoproj.ArgoCDSSOSpec{
763+
Provider: argoproj.SSOProviderTypeDex,
764+
Dex: &argoproj.ArgoCDDexSpec{
765+
Resources: &corev1.ResourceRequirements{
766+
Requests: corev1.ResourceList{
767+
corev1.ResourceMemory: resourcev1.MustParse("128Mi"),
768+
corev1.ResourceCPU: resourcev1.MustParse("250m"),
769+
},
770+
Limits: corev1.ResourceList{
771+
corev1.ResourceMemory: resourcev1.MustParse("256Mi"),
772+
corev1.ResourceCPU: resourcev1.MustParse("500m"),
773+
},
774+
},
775+
},
776+
}
777+
}),
778+
wantInitVolumeMounts: []corev1.VolumeMount{
779+
{Name: "static-files", MountPath: "/shared"},
780+
{Name: "dexconfig", MountPath: "/tmp"},
781+
},
782+
wantInitResources: corev1.ResourceRequirements{
783+
Requests: corev1.ResourceList{
784+
corev1.ResourceMemory: resourcev1.MustParse("128Mi"),
785+
corev1.ResourceCPU: resourcev1.MustParse("250m"),
786+
},
787+
Limits: corev1.ResourceList{
788+
corev1.ResourceMemory: resourcev1.MustParse("256Mi"),
789+
corev1.ResourceCPU: resourcev1.MustParse("500m"),
790+
},
791+
},
792+
},
793+
}
794+
795+
for _, test := range tests {
796+
t.Run(test.name, func(t *testing.T) {
797+
existingDeploy := staleDeployment(test.argoCD.Namespace)
798+
resObjs := []client.Object{test.argoCD, existingDeploy}
799+
subresObjs := []client.Object{test.argoCD}
800+
runtimeObjs := []runtime.Object{}
801+
sch := makeTestReconcilerScheme(argoproj.AddToScheme)
802+
cl := makeTestReconcilerClient(sch, resObjs, subresObjs, runtimeObjs)
803+
r := makeTestReconciler(cl, sch, testclient.NewSimpleClientset())
804+
805+
assert.NoError(t, r.reconcileDexDeployment(test.argoCD))
806+
807+
deployment := &appsv1.Deployment{}
808+
assert.NoError(t, r.Get(
809+
context.TODO(),
810+
types.NamespacedName{
811+
Name: "argocd-dex-server",
812+
Namespace: test.argoCD.Namespace,
813+
},
814+
deployment))
815+
816+
assert.Equal(t, test.wantInitVolumeMounts,
817+
deployment.Spec.Template.Spec.InitContainers[0].VolumeMounts,
818+
"copyutil initContainer VolumeMounts should be updated by reconciler")
819+
assert.Equal(t, test.wantInitResources,
820+
deployment.Spec.Template.Spec.InitContainers[0].Resources,
821+
"copyutil initContainer Resources should be updated by reconciler")
822+
})
823+
}
824+
}
825+
683826
// When Dex is enabled dex service should be created, when disabled the Dex service should be removed
684827
func TestReconcileArgoCD_reconcileDexService_removes_dex_when_disabled(t *testing.T) {
685828
logf.SetLogger(ZapLogger(true))

0 commit comments

Comments
 (0)