Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
26604eb
feat(repo-server): Declare custom trust anchors to use by repo-server…
olivergondza Nov 20, 2025
f4cfdd4
feat(repo-server): Use custom trust anchors to use by repo-server or …
olivergondza Oct 27, 2025
36a6588
feat(repo-server): Refactor trust cert injection
olivergondza Sep 21, 2025
b8609a4
feat(repo-server): Update generated code
olivergondza Oct 27, 2025
d024820
feat(repo-server): Address linting errors
olivergondza Sep 22, 2025
2edbacc
feat(repo-server): Please gosec
olivergondza Sep 22, 2025
eae35ec
feat(repo-server): Use more generic test name
olivergondza Sep 22, 2025
6de7ea7
feat(repo-server): Reflect master changes
olivergondza Sep 22, 2025
e4ef6b9
fix: Fix tests, the cluster-wide resource likely do not exist
olivergondza Sep 22, 2025
5f4f1cd
docs: Document spec.repo.systemCATrust
olivergondza Oct 27, 2025
9992db2
feat(ci-build): Run tests with the feature flags on
olivergondza Dec 4, 2025
ebd6f7b
feat(repo-server): Update tests to verify on clusters with or without…
olivergondza Sep 30, 2025
ab55405
feat(repo-server): Use reconciler hooks
olivergondza Sep 30, 2025
5ce053d
Unify tests with downstream
olivergondza Oct 10, 2025
a8de331
feat(repo-server): Propagate changes from Secrets/ConfigMaps/ClusterT…
olivergondza Oct 23, 2025
33ee5f3
feat(repo-server): Unify systemCATrust init-container setup with the …
olivergondza Nov 4, 2025
5266b79
feat(repo-server): Detect effective name for `/tmp`
olivergondza Nov 10, 2025
2f08689
feat(repo-server): Minor review comments
olivergondza Nov 21, 2025
8d9328d
feat(repo-server): Unify certificates version to use beta
olivergondza Nov 24, 2025
e36109d
typos
olivergondza Dec 4, 2025
1c494e4
tests(repo-server): Improve E2E tests
olivergondza Jan 5, 2026
ec3ebf2
chore: Generate code after rebase
olivergondza Jan 6, 2026
761c828
Review comments
olivergondza Jan 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 17 additions & 6 deletions .github/workflows/ci-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,9 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
k3s-version: [v1.27.1]
# k3s-version: [v1.20.2, v1.19.2, v1.18.9, v1.17.11, v1.16.15]
k3s-version:
- v1.27.1-k3s1
- v1.33.5-k3s1
steps:
- name: Download kuttl plugin
env:
Expand All @@ -68,13 +69,23 @@ jobs:
curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash
sudo mkdir -p $HOME/.kube && sudo chown -R runner $HOME/.kube

feature_flags=()
case "${{ matrix.k3s-version }}" in
v1.3[3456789]*)
# Enable ClusterTrustBundle and ClusterTrustBundleProjection until it is enabled by default in kubernetes
feature_flags+=(
"--k3s-arg" "--kube-apiserver-arg=feature-gates=ClusterTrustBundle=true,ClusterTrustBundleProjection=true@server:*"
"--k3s-arg" "--kube-apiserver-arg=runtime-config=certificates.k8s.io/v1beta1/clustertrustbundles=true@server:*"
"--k3s-arg" "--kubelet-arg=feature-gates=ClusterTrustBundle=true,ClusterTrustBundleProjection=true@agent:*"
)
;;
esac

# preserved for future use:
# - limit logs to 4Mi, to avoid overwhelming GitHub's small runner storage (14Gi)
# - k3d cluster create --servers 3 --image rancher/k3s:${{ matrix.k3s-version }}-k3s1 --k3s-arg '--kubelet-arg=container-log-max-files=2@server:*' --k3s-arg '--kubelet-arg=container-log-max-size=2Mi@server:*'
# - k3d cluster create --servers 3 --image "rancher/k3s:${{ matrix.k3s-version }}" --k3s-arg '--kubelet-arg=container-log-max-files=2@server:*' --k3s-arg '--kubelet-arg=container-log-max-size=2Mi@server:*'
# - I tried this, to reduce the the amount of GitHub Runner disk space used by k3d. These params did not appear to affect disk space usage.

# create k3d cluster
k3d cluster create --servers 3 --image rancher/k3s:${{ matrix.k3s-version }}-k3s1
k3d cluster create --servers 3 --image "rancher/k3s:${{ matrix.k3s-version }}" "${feature_flags[@]}"
kubectl version
k3d version
- name: Checkout code
Expand Down
15 changes: 15 additions & 0 deletions api/v1beta1/argocd_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -591,6 +591,9 @@ type ArgoCDRepoSpec struct {

// Custom labels to pods deployed by the operator
Labels map[string]string `json:"labels,omitempty"`

// Custom certificates to inject into the repo server container and its plugins to trust source hosting sites
SystemCATrust *ArgoCDSystemCATrustSpec `json:"systemCATrust,omitempty"`
}

func (a *ArgoCDRepoSpec) IsEnabled() bool {
Expand All @@ -601,6 +604,18 @@ func (a *ArgoCDRepoSpec) IsRemote() bool {
return a.Remote != nil && *a.Remote != ""
}

// ArgoCDSystemCATrustSpec defines custom certificates to inject into the repo server container and its plugins to trust source hosting sites
type ArgoCDSystemCATrustSpec struct {
// DropImageCertificates will remove all certs that are present in the image, leaving only those explicitly configured here.
DropImageCertificates bool `json:"dropImageCertificates,omitempty"`
// ClusterTrustBundles is a list of projected ClusterTrustBundle volume definitions from where to take the trust certs.
ClusterTrustBundles []corev1.ClusterTrustBundleProjection `json:"clusterTrustBundles,omitempty"`
// Secrets is a list of projected Secret volume definitions from where to take the trust certs.
Secrets []corev1.SecretProjection `json:"secrets,omitempty"`
// ConfigMaps is a list of projected ConfigMap volume definitions from where to take the trust certs.
ConfigMaps []corev1.ConfigMapProjection `json:"configMaps,omitempty"`
}

// ArgoCDRouteSpec defines the desired state for an OpenShift Route.
type ArgoCDRouteSpec struct {
// Annotations is the map of annotations to use for the Route resource.
Expand Down
41 changes: 41 additions & 0 deletions api/v1beta1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 9 additions & 1 deletion bundle/manifests/argocd-operator.clusterserviceversion.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ metadata:
capabilities: Deep Insights
categories: Integration & Delivery
certified: "false"
createdAt: "2025-12-17T12:19:06Z"
createdAt: "2026-01-21T10:11:54Z"
description: Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.
operators.operatorframework.io/builder: operator-sdk-v1.35.0
operators.operatorframework.io/project_layout: go.kubebuilder.io/v4
Expand Down Expand Up @@ -1826,6 +1826,14 @@ spec:
- jobs
verbs:
- '*'
- apiGroups:
- certificates.k8s.io
resources:
- clustertrustbundles
verbs:
- get
- list
- watch
- apiGroups:
- config.openshift.io
resources:
Expand Down
Loading