Skip to content

Commit 141e97e

Browse files
committed
fixed e2e tests (via refactoring of image registry setup)
Signed-off-by: Joe Lanford <[email protected]>
1 parent 7bf9b64 commit 141e97e

33 files changed

+232
-256
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,6 @@ E2E_REGISTRY_IMAGE=localhost/e2e-test-registry:devel
244244
image-registry: export GOOS=linux
245245
image-registry: export GOARCH=amd64
246246
image-registry: ## Build the testdata catalog used for e2e tests and push it to the image registry
247-
go build $(GO_BUILD_FLAGS) $(GO_BUILD_EXTRA_FLAGS) -tags '$(GO_BUILD_TAGS)' -ldflags '$(GO_BUILD_LDFLAGS)' -gcflags '$(GO_BUILD_GCFLAGS)' -asmflags '$(GO_BUILD_ASMFLAGS)' -o ./testdata/registry/bin/registry ./testdata/registry/registry.go
248247
go build $(GO_BUILD_FLAGS) $(GO_BUILD_EXTRA_FLAGS) -tags '$(GO_BUILD_TAGS)' -ldflags '$(GO_BUILD_LDFLAGS)' -gcflags '$(GO_BUILD_GCFLAGS)' -asmflags '$(GO_BUILD_ASMFLAGS)' -o ./testdata/push/bin/push ./testdata/push/push.go
249248
$(CONTAINER_RUNTIME) build -f ./testdata/Dockerfile -t $(E2E_REGISTRY_IMAGE) ./testdata
250249
$(CONTAINER_RUNTIME) save $(E2E_REGISTRY_IMAGE) | $(KIND) load image-archive /dev/stdin --name $(KIND_CLUSTER_NAME)
@@ -263,6 +262,7 @@ test-e2e: run image-registry e2e e2e-coverage kind-clean #HELP Run e2e test suit
263262

264263
.PHONY: extension-developer-e2e
265264
extension-developer-e2e: KIND_CLUSTER_NAME := operator-controller-ext-dev-e2e
265+
extension-developer-e2e: KUSTOMIZE_BUILD_DIR := config-new/overlays/community-e2e
266266
extension-developer-e2e: export INSTALL_DEFAULT_CATALOGS := false
267267
extension-developer-e2e: run image-registry test-ext-dev-e2e kind-clean #EXHELP Run extension-developer e2e on local kind cluster
268268

@@ -356,7 +356,7 @@ run: docker-build kind-cluster kind-load kind-deploy wait #HELP Build the operat
356356
CATD_NAMESPACE := olmv1-system
357357
wait:
358358
kubectl wait --for=condition=Available --namespace=$(CATD_NAMESPACE) deployment/catalogd-controller-manager --timeout=60s
359-
kubectl wait --for=condition=Ready --namespace=$(CATD_NAMESPACE) certificate/catalogd-service-cert # Avoid upgrade test flakes when reissuing cert
359+
kubectl wait --for=condition=Ready --namespace=$(CATD_NAMESPACE) certificate/catalogd-cert # Avoid upgrade test flakes when reissuing cert
360360

361361
.PHONY: docker-build
362362
docker-build: build-linux #EXHELP Build docker image for operator-controller and catalog with GOOS=linux and local GOARCH.

cmd/catalogd/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ func run(ctx context.Context) error {
199199
}
200200
cfg.externalAddr = protocol + cfg.externalAddr
201201

202+
setupLog.Info("server certificate", "cert", cfg.certFile, "key", cfg.keyFile)
202203
cw, err := certwatcher.New(cfg.certFile, cfg.keyFile)
203204
if err != nil {
204205
setupLog.Error(err, "failed to initialize certificate watcher")

config-new/components/cert-manager/catalogd_certificate.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
apiVersion: cert-manager.io/v1
22
kind: Certificate
33
metadata:
4-
name: catalogd-service-cert
4+
name: catalogd-cert
55
namespace: __NAMESPACE_PLACEHOLDER__
66
spec:
7-
secretName: catalogd-service-cert-${VERSION}
7+
secretName: catalogd-cert-${VERSION}
88
dnsNames:
99
- catalogd-service.__NAMESPACE_PLACEHOLDER__.svc
1010
- catalogd-service.__NAMESPACE_PLACEHOLDER__.svc.cluster.local

config-new/components/cert-manager/operator_controller_certificate.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
apiVersion: cert-manager.io/v1
22
kind: Certificate
33
metadata:
4-
name: olmv1-cert
4+
name: operator-controller-cert
55
spec:
6-
secretName: olmv1-cert
6+
secretName: operator-controller-cert
77
dnsNames:
88
- operator-controller-service.__NAMESPACE_PLACEHOLDER__.svc
99
- operator-controller-service.__NAMESPACE_PLACEHOLDER__.svc.cluster.local
Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,13 @@
1+
# operator-controller's server cert (e.g. for serving the catalogd API and prometheus metrics)
12
- op: add
23
path: /spec/template/spec/volumes/-
3-
value: {"name":"olmv1-certificate", "secret":{"secretName":"catalogd-service-cert-${VERSION}", "optional": false, "items": [{"key": "ca.crt", "path": "olm-ca.crt"}]}}
4+
value: {"name":"server-cert","secret":{"secretName":"catalogd-cert-${VERSION}","optional":false,"items":[{"key":"tls.crt","path":"tls.crt"},{"key":"tls.key","path":"tls.key"}]}}
45
- op: add
56
path: /spec/template/spec/containers/0/volumeMounts/-
6-
value: {"name":"olmv1-certificate", "readOnly": true, "mountPath":"/var/ca-certs/"}
7+
value: {"name":"server-cert","mountPath":"/var/server-cert"}
78
- op: add
89
path: /spec/template/spec/containers/0/args/-
9-
value: "--pull-cas-dir=/var/ca-certs"
10-
- op: add
11-
path: /spec/template/spec/volumes/-
12-
value: {"name":"catalogserver-certs", "secret":{"secretName":"catalogd-service-cert-${VERSION}"}}
13-
- op: add
14-
path: /spec/template/spec/containers/0/volumeMounts/-
15-
value: {"name":"catalogserver-certs", "mountPath":"/var/certs"}
16-
- op: add
17-
path: /spec/template/spec/containers/0/args/-
18-
value: "--tls-cert=/var/certs/tls.crt"
10+
value: "--tls-cert=/var/server-cert/tls.crt"
1911
- op: add
2012
path: /spec/template/spec/containers/0/args/-
21-
value: "--tls-key=/var/certs/tls.key"
13+
value: "--tls-key=/var/server-cert/tls.key"
Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
1+
# operator-controller's server cert (e.g. for serving prometheus metrics)
12
- op: add
23
path: /spec/template/spec/volumes/-
3-
value: {"name":"olmv1-certificate", "secret":{"secretName":"olmv1-cert", "optional": false, "items": [{"key": "ca.crt", "path": "olm-ca.crt"}, {"key": "tls.crt", "path": "tls.cert"}, {"key": "tls.key", "path": "tls.key"}]}}
4+
value: {"name":"server-cert", "secret":{"secretName":"operator-controller-cert", "optional": false, "items": [{"key": "tls.crt", "path": "tls.cert"}, {"key": "tls.key", "path": "tls.key"}]}}
45
- op: add
56
path: /spec/template/spec/containers/0/volumeMounts/-
6-
value: {"name":"olmv1-certificate", "readOnly": true, "mountPath":"/var/certs/"}
7+
value: {"name":"server-cert", "readOnly": true, "mountPath":"/var/certs/server-cert"}
78
- op: add
89
path: /spec/template/spec/containers/0/args/-
9-
value: "--catalogd-cas-dir=/var/certs"
10+
value: "--tls-cert=/var/certs/server-cert/tls.cert"
1011
- op: add
1112
path: /spec/template/spec/containers/0/args/-
12-
value: "--pull-cas-dir=/var/certs"
13+
value: "--tls-key=/var/certs/server-cert/tls.key"
14+
15+
# catalogd CA, so that operator-controller's http client can verify catalogd's server cert
1316
- op: add
14-
path: /spec/template/spec/containers/0/args/-
15-
value: "--tls-cert=/var/certs/tls.cert"
17+
path: /spec/template/spec/volumes/-
18+
value: {"name":"catalogd-ca", "secret":{"secretName":"catalogd-cert-${VERSION}", "optional": false, "items":[{"key": "ca.crt", "path": "ca.crt"}]}}
19+
- op: add
20+
path: /spec/template/spec/containers/0/volumeMounts/-
21+
value: {"name":"catalogd-ca", "readOnly": true, "mountPath":"/var/certs/catalogd-ca"}
1622
- op: add
1723
path: /spec/template/spec/containers/0/args/-
18-
value: "--tls-key=/var/certs/tls.key"
24+
value: "--catalogd-cas-dir=/var/certs/catalogd-ca"
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
apiVersion: cert-manager.io/v1
2+
kind: Issuer
3+
metadata:
4+
name: e2e-self-sign-issuer
5+
namespace: cert-manager
6+
spec:
7+
selfSigned: {}
8+
---
9+
apiVersion: cert-manager.io/v1
10+
kind: Certificate
11+
metadata:
12+
name: e2e-ca
13+
namespace: cert-manager
14+
spec:
15+
isCA: true
16+
commonName: e2e-ca
17+
secretName: e2e-ca
18+
secretTemplate:
19+
annotations:
20+
cert-manager.io/allow-direct-injection: "true"
21+
privateKey:
22+
algorithm: ECDSA
23+
size: 256
24+
issuerRef:
25+
name: e2e-self-sign-issuer
26+
kind: Issuer
27+
group: cert-manager.io
28+
---
29+
apiVersion: cert-manager.io/v1
30+
kind: ClusterIssuer
31+
metadata:
32+
name: e2e-ca
33+
spec:
34+
ca:
35+
secretName: e2e-ca
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: kustomize.config.k8s.io/v1alpha1
2+
kind: Component
3+
4+
resources:
5+
- e2e_cluster_issuer.yaml

config-new/components/e2e/coverage_copy_pod.yaml renamed to config-new/components/e2e/install-namespace/coverage_copy_pod.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: v1
22
kind: Pod
33
metadata:
44
name: e2e-coverage-copy-pod
5+
namespace: olmv1-system
56
spec:
67
restartPolicy: Never
78
securityContext:

config-new/components/e2e/coverage_pvc.yaml renamed to config-new/components/e2e/install-namespace/coverage_pvc.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ apiVersion: v1
22
kind: PersistentVolumeClaim
33
metadata:
44
name: e2e-coverage
5+
namespace: olmv1-system
56
spec:
67
accessModes:
78
- ReadWriteOnce
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: cert-manager.io/v1
2+
kind: Certificate
3+
metadata:
4+
name: e2e-dummy-cert
5+
namespace: olmv1-system
6+
spec:
7+
secretName: e2e-dummy-cert
8+
commonName: e2e-dummy-cert
9+
privateKey:
10+
algorithm: ECDSA
11+
size: 256
12+
issuerRef:
13+
kind: ClusterIssuer
14+
group: cert-manager.io
15+
name: e2e-ca
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
apiVersion: kustomize.config.k8s.io/v1alpha1
2+
kind: Component
3+
4+
resources:
5+
- coverage_pvc.yaml
6+
- coverage_copy_pod.yaml
7+
- registries_conf_configmap.yaml
8+
- e2e_dummy_cert.yaml
9+
10+
patches:
11+
- target:
12+
group: apps
13+
version: v1
14+
kind: Deployment
15+
labelSelector: control-plane=operator-controller-controller-manager
16+
path: patches/operator_controller_deployment.yaml
17+
18+
- target:
19+
group: apps
20+
version: v1
21+
kind: Deployment
22+
labelSelector: control-plane=catalogd-controller-manager
23+
path: patches/catalogd_deployment.yaml
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Use the e2e-ca so that catalogd can communicate with the e2e registry.
2+
- op: add
3+
path: /spec/template/spec/volumes/-
4+
value: {"name":"e2e-registry-ca", "secret":{"secretName":"e2e-dummy-cert", "optional": false, "items":[{"key": "ca.crt", "path": "ca.crt"}]}}
5+
- op: add
6+
path: /spec/template/spec/containers/0/volumeMounts/-
7+
value: {"name":"e2e-registry-ca", "readOnly": true, "mountPath":"/var/certs/e2e-registry-ca"}
8+
- op: add
9+
path: /spec/template/spec/containers/0/args/-
10+
value: "--pull-cas-dir=/var/certs/e2e-registry-ca"
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Use the e2e-ca so that operator-controller can communicate with the e2e registry.
2+
- op: add
3+
path: /spec/template/spec/volumes/-
4+
value: {"name":"e2e-registry-ca", "secret":{"secretName":"e2e-dummy-cert", "optional": false, "items":[{"key": "ca.crt", "path": "ca.crt"}]}}
5+
- op: add
6+
path: /spec/template/spec/containers/0/volumeMounts/-
7+
value: {"name":"e2e-registry-ca", "readOnly": true, "mountPath":"/var/certs/e2e-registry-ca"}
8+
- op: add
9+
path: /spec/template/spec/containers/0/args/-
10+
value: "--pull-cas-dir=/var/certs/e2e-registry-ca"
11+
12+
# Setup a custom /etc/containers/registries.conf file, used to verify containers/image integration in e2e tests.
13+
- op: add
14+
path: /spec/template/spec/volumes/-
15+
value: {"name":"e2e-registries-conf", "configMap":{"name":"e2e-registries-conf"}}
16+
- op: add
17+
path: /spec/template/spec/containers/0/volumeMounts/-
18+
value: {"name":"e2e-registries-conf", "readOnly": true, "mountPath":"/etc/containers"}
19+
20+
# Setup e2e code coverage
21+
- op: add
22+
path: /spec/template/spec/containers/0/env
23+
value: []
24+
- op: add
25+
path: /spec/template/spec/containers/0/env/-
26+
value: {"name":"GOCOVERDIR","value":"/e2e-coverage"}
27+
- op: add
28+
path: /spec/template/spec/volumes/-
29+
value: {"name":"e2e-coverage-volume", "persistentVolumeClaim":{"claimName":"e2e-coverage"}}
30+
- op: add
31+
path: /spec/template/spec/containers/0/volumeMounts/-
32+
value: {"name":"e2e-coverage-volume", "mountPath":"/e2e-coverage"}

config-new/components/e2e/registries_conf_configmap.yaml renamed to config-new/components/e2e/install-namespace/registries_conf_configmap.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: v1
22
kind: ConfigMap
33
metadata:
44
name: e2e-registries-conf
5-
namespace: __NAMESPACE_PLACEHOLDER__
5+
namespace: olmv1-system
66
data:
77
registries.conf: |
88
[[registry]]

config-new/components/e2e/kustomization.yaml

Lines changed: 0 additions & 10 deletions
This file was deleted.

config-new/components/e2e/operator_controller_deployment.yaml

Lines changed: 0 additions & 25 deletions
This file was deleted.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: cert-manager.io/v1
2+
kind: Certificate
3+
metadata:
4+
name: operator-controller-e2e-registry
5+
namespace: operator-controller-e2e
6+
spec:
7+
secretName: operator-controller-e2e-registry
8+
isCA: true
9+
dnsNames:
10+
- docker-registry.operator-controller-e2e.svc
11+
- docker-registry.operator-controller-e2e.svc.cluster.local
12+
privateKey:
13+
algorithm: ECDSA
14+
size: 256
15+
issuerRef:
16+
name: e2e-ca
17+
kind: ClusterIssuer
18+
group: cert-manager.io
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: docker-registry
5+
namespace: operator-controller-e2e
6+
labels:
7+
app: registry
8+
spec:
9+
replicas: 1
10+
selector:
11+
matchLabels:
12+
app: registry
13+
template:
14+
metadata:
15+
labels:
16+
app: registry
17+
spec:
18+
containers:
19+
- name: registry
20+
image: registry:3
21+
imagePullPolicy: IfNotPresent
22+
volumeMounts:
23+
- name: certs-vol
24+
mountPath: "/certs"
25+
env:
26+
- name: REGISTRY_HTTP_ADDR
27+
value: ":5000"
28+
- name: REGISTRY_HTTP_TLS_CERTIFICATE
29+
value: "/certs/tls.crt"
30+
- name: REGISTRY_HTTP_TLS_KEY
31+
value: "/certs/tls.key"
32+
volumes:
33+
- name: certs-vol
34+
secret:
35+
secretName: operator-controller-e2e-registry
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: kustomize.config.k8s.io/v1alpha1
2+
kind: Component
3+
4+
resources:
5+
- namespace.yaml
6+
- certificate.yaml
7+
- deployment.yaml
8+
- service.yaml
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
apiVersion: v1
2+
kind: Namespace
3+
metadata:
4+
name: operator-controller-e2e
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: docker-registry
5+
namespace: operator-controller-e2e
6+
spec:
7+
selector:
8+
app: registry
9+
ports:
10+
- name: http
11+
port: 5000
12+
targetPort: 5000
13+
nodePort: 30000
14+
type: NodePort

0 commit comments

Comments
 (0)