Skip to content

Commit

Permalink
Add e2e test for adding configMap to allow defining parameters for SS…
Browse files Browse the repository at this point in the history
…H client (#873)

Signed-off-by: Cheng Fang <[email protected]>
  • Loading branch information
chengfang authored Oct 1, 2024
1 parent 5403b3e commit 720f495
Show file tree
Hide file tree
Showing 7 changed files with 126 additions and 0 deletions.
35 changes: 35 additions & 0 deletions test/e2e/suite/103-ssh-client-config/01-assert.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-image-updater-ssh-config
data:
config: |-
Host *
PubkeyAcceptedAlgorithms +ssh-rsa
HostkeyAlgorithms +ssh-rsa
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: argocd-image-updater
spec:
selector:
matchLabels:
app.kubernetes.io/name: argocd-image-updater
template:
spec:
containers:
- name: argocd-image-updater
volumeMounts:
- mountPath: /app/config
name: image-updater-conf
- mountPath: /app/config/ssh
name: ssh-known-hosts
- mountPath: /app/.ssh
name: ssh-config
- mountPath: /tmp
name: tmp
- mountPath: /app/ssh-keys/id_rsa
name: ssh-signing-key
readOnly: true
subPath: sshPrivateKey
5 changes: 5 additions & 0 deletions test/e2e/suite/103-ssh-client-config/01-install.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- command: kubectl -n argocd-image-updater-e2e apply -k .
- command: sleep 5
5 changes: 5 additions & 0 deletions test/e2e/suite/103-ssh-client-config/99-delete.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: kuttl.dev/v1beta1
kind: TestStep
commands:
- command: kubectl -n argocd-image-updater-e2e delete -k .
- command: sleep 5
55 changes: 55 additions & 0 deletions test/e2e/suite/103-ssh-client-config/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
This test case verifies the support for configuring ssh client via the config map `argocd-image-updater-ssh-config`.

This test case performs the following steps:
* kustomize the default argocd-image-updater installation by adding custom ssh config data to the config map `argocd-image-updater-ssh-config`
* install the customized argocd-image-updater to the test cluster
* verify that the customized ssh config (config map and volume mount) are present
* uninstall argocd-image-updater from the test cluster

To run this individual test case,

* make sure both docker daemon and k8s cluster is running
* `cd $HOME/go/src/image-updater/test/e2e`
* `SRC_DIR=$HOME/go/src/image-updater kubectl kuttl test --namespace argocd-image-updater-e2e --timeout 120 --test 103-ssh-client-config`

Test output:
```bash
harness.go:278: Successful connection to cluster at: https://0.0.0.0:58961
harness.go:363: running tests
harness.go:75: going to run test suite with timeout of 120 seconds for each step
harness.go:375: testsuite: ./suite has 8 tests
=== RUN kuttl/harness
=== RUN kuttl/harness/103-ssh-client-config
=== PAUSE kuttl/harness/103-ssh-client-config
=== CONT kuttl/harness/103-ssh-client-config
logger.go:42: 19:47:52 | 103-ssh-client-config/1-install | starting test step 1-install
logger.go:42: 19:47:52 | 103-ssh-client-config/1-install | running command: [kubectl -n argocd-image-updater-e2e apply -k .]
logger.go:42: 19:47:53 | 103-ssh-client-config/1-install | serviceaccount/argocd-image-updater created
logger.go:42: 19:47:53 | 103-ssh-client-config/1-install | role.rbac.authorization.k8s.io/argocd-image-updater created
logger.go:42: 19:47:53 | 103-ssh-client-config/1-install | rolebinding.rbac.authorization.k8s.io/argocd-image-updater created
logger.go:42: 19:47:53 | 103-ssh-client-config/1-install | configmap/argocd-image-updater-config created
logger.go:42: 19:47:53 | 103-ssh-client-config/1-install | configmap/argocd-image-updater-ssh-config created
logger.go:42: 19:47:53 | 103-ssh-client-config/1-install | secret/argocd-image-updater-secret created
logger.go:42: 19:47:53 | 103-ssh-client-config/1-install | deployment.apps/argocd-image-updater created
logger.go:42: 19:47:53 | 103-ssh-client-config/1-install | running command: [sleep 5]
logger.go:42: 19:47:58 | 103-ssh-client-config/1-install | test step completed 1-install
logger.go:42: 19:47:58 | 103-ssh-client-config/99-delete | starting test step 99-delete
logger.go:42: 19:47:58 | 103-ssh-client-config/99-delete | running command: [kubectl -n argocd-image-updater-e2e delete -k .]
logger.go:42: 19:47:59 | 103-ssh-client-config/99-delete | serviceaccount "argocd-image-updater" deleted
logger.go:42: 19:47:59 | 103-ssh-client-config/99-delete | role.rbac.authorization.k8s.io "argocd-image-updater" deleted
logger.go:42: 19:47:59 | 103-ssh-client-config/99-delete | rolebinding.rbac.authorization.k8s.io "argocd-image-updater" deleted
logger.go:42: 19:47:59 | 103-ssh-client-config/99-delete | configmap "argocd-image-updater-config" deleted
logger.go:42: 19:47:59 | 103-ssh-client-config/99-delete | configmap "argocd-image-updater-ssh-config" deleted
logger.go:42: 19:47:59 | 103-ssh-client-config/99-delete | secret "argocd-image-updater-secret" deleted
logger.go:42: 19:47:59 | 103-ssh-client-config/99-delete | deployment.apps "argocd-image-updater" deleted
logger.go:42: 19:47:59 | 103-ssh-client-config/99-delete | running command: [sleep 5]
logger.go:42: 19:48:04 | 103-ssh-client-config/99-delete | test step completed 99-delete
logger.go:42: 19:48:04 | 103-ssh-client-config | skipping kubernetes event logging
=== NAME kuttl
harness.go:407: run tests finished
harness.go:515: cleaning up
harness.go:572: removing temp folder: ""
--- PASS: kuttl (12.08s)
--- PASS: kuttl/harness (0.00s)
--- PASS: kuttl/harness/103-ssh-client-config (12.07s)
```
7 changes: 7 additions & 0 deletions test/e2e/suite/103-ssh-client-config/clusterrolebinding.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[
{
"op": "replace",
"path": "/subjects/0/namespace",
"value": "argocd-image-updater-e2e"
}
]
3 changes: 3 additions & 0 deletions test/e2e/suite/103-ssh-client-config/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Host *
PubkeyAcceptedAlgorithms +ssh-rsa
HostkeyAlgorithms +ssh-rsa
16 changes: 16 additions & 0 deletions test/e2e/suite/103-ssh-client-config/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
resources:
- https://github.com/argoproj-labs/argocd-image-updater/manifests/base?ref=stable

configMapGenerator:
- name: argocd-image-updater-ssh-config
behavior: merge
files:
- config

patches:
- path: clusterrolebinding.json
target:
group: rbac.authorization.k8s.io
version: v1
kind: ClusterRoleBinding
name: argocd-image-updater

0 comments on commit 720f495

Please sign in to comment.