Skip to content

Commit c9cbb96

Browse files
authored
fix: generate certificates with cert-manager (#267)
* fix: change generating certificates with cert-manager * add mkcert and missing ci certificate extension * changed the key algo * fixed option for base64 * remove cert-manager manfiest and download it instead * added release docs
1 parent 5ff4a98 commit c9cbb96

File tree

11 files changed

+124
-63
lines changed

11 files changed

+124
-63
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ e2e/testdata/testSignedOCIRegistryComponents/podinfo/frontend/manifests/*
4343
e2e/testdata/testSignedOCIRegistryComponents/podinfo/redis/manifests/*
4444

4545
# ignore generated certificates
46-
hack/certs
46+
hack/rootCA.pem
47+
hack/cert-manager.yaml
4748

4849
transport-archive

Makefile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,16 @@ test: manifests generate fmt vet build-wasm-testdata envtest ## Run tests.
8080
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" go test ./... -coverprofile cover.out
8181

8282
.PHONY: e2e
83-
e2e: generate-developer-certs test-summary-tool ## Runs e2e tests
83+
e2e: prime-test-cluster test-summary-tool ## Runs e2e tests
8484
$(GOTESTSUM) --format testname -- -count=1 -tags=e2e ./e2e
8585

8686
.PHONY: e2e-verbose
87-
e2e-verbose: generate-developer-certs test-summary-tool ## Runs e2e tests in verbose
87+
e2e-verbose: prime-test-cluster test-summary-tool ## Runs e2e tests in verbose
8888
$(GOTESTSUM) --format standard-verbose -- -count=1 -tags=e2e ./e2e
8989

90-
.PHONY: generate-developer-certs
91-
generate-developer-certs: mkcert
92-
./hack/create_developer_certificate_secrets.sh
90+
.PHONY: prime-test-cluster
91+
prime-test-cluster: mkcert
92+
./hack/prime_test_cluster.sh
9393

9494
.PHONY: build-wasm-testdata
9595
build-wasm-testdata:

Tiltfile

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,8 @@ def create_verification_keys():
8181
# check if flux is needed
8282
bootstrap_or_install_flux()
8383

84-
# https registry
85-
print('applying generated secrets')
86-
k8s_yaml('./hack/certs/registry_certs_secret.yaml', allow_duplicates = True)
84+
print('install certificate bootstrap')
85+
k8s_yaml(read_file('e2e/certmanager/bootstrap.yaml'), allow_duplicates = True)
8786

8887
# Use kustomize to build the install yaml files
8988
install = kustomize('config/default')

docs/release_notes/v0.14.0.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Release 0.14.0
2+
3+
- fix: generate certificates with cert-manager (#267)
4+
- New PR Template (#264)
5+
- Implement ResourcePipeline (#236)

e2e/certmanager/bootstrap.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: cert-manager.io/v1
2+
kind: Certificate
3+
metadata:
4+
name: ocm-registry-tls-certs
5+
namespace: ocm-system
6+
spec:
7+
secretName: ocm-registry-tls-certs
8+
dnsNames:
9+
- registry.ocm-system.svc.cluster.local
10+
- localhost
11+
ipAddresses:
12+
- 127.0.0.1
13+
- ::1
14+
privateKey:
15+
algorithm: RSA
16+
encoding: PKCS8
17+
size: 2048
18+
issuerRef:
19+
name: mpas-certificate-issuer
20+
kind: ClusterIssuer
21+
group: cert-manager.io

e2e/suite_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"os"
1111
"testing"
1212

13+
"sigs.k8s.io/e2e-framework/klient/conf"
1314
"sigs.k8s.io/e2e-framework/pkg/env"
1415
"sigs.k8s.io/e2e-framework/pkg/envconf"
1516
"sigs.k8s.io/e2e-framework/pkg/envfuncs"
@@ -32,7 +33,8 @@ var (
3233
func TestMain(m *testing.M) {
3334
setupLog("starting e2e test suite")
3435

35-
cfg, _ := envconf.NewFromFlags()
36+
path := conf.ResolveKubeConfigFile()
37+
cfg := envconf.NewWithKubeConfig(path)
3638
testEnv = env.NewWithConfig(cfg)
3739
kindClusterName = envconf.RandomName("ocm-ctrl-e2e", 32)
3840
ocmNamespace = "ocm-system"
@@ -41,7 +43,7 @@ func TestMain(m *testing.M) {
4143
stopChannelGitea := make(chan struct{}, 1)
4244

4345
testEnv.Setup(
44-
envfuncs.CreateKindCluster(kindClusterName),
46+
//envfuncs.CreateKindCluster(kindClusterName),
4547
envfuncs.CreateNamespace(ocmNamespace),
4648
shared.StartGitServer(ocmNamespace),
4749
shared.InstallFlux("latest"),
@@ -55,8 +57,8 @@ func TestMain(m *testing.M) {
5557
shared.ShutdownPortForward(stopChannelRegistry),
5658
shared.ShutdownPortForward(stopChannelGitea),
5759
envfuncs.DeleteNamespace(ocmNamespace),
58-
envfuncs.DestroyKindCluster(kindClusterName),
60+
//envfuncs.DestroyKindCluster(kindClusterName),
5961
)
6062

6163
os.Exit(testEnv.Run(m))
62-
}
64+
}

hack/certs/README.md

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

hack/cluster_issuer.yaml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
apiVersion: cert-manager.io/v1
2+
kind: ClusterIssuer
3+
metadata:
4+
name: mpas-bootstrap-issuer
5+
spec:
6+
selfSigned: {}
7+
---
8+
apiVersion: cert-manager.io/v1
9+
kind: Certificate
10+
metadata:
11+
name: mpas-bootstrap-certificate
12+
namespace: cert-manager
13+
spec:
14+
# this is discouraged but required by ios
15+
commonName: cert-manager-ocm-tls
16+
isCA: true
17+
secretName: ocm-registry-tls-certs
18+
subject:
19+
organizations:
20+
- ocm.software
21+
dnsNames:
22+
- registry.ocm-system.svc.cluster.local
23+
- localhost
24+
ipAddresses:
25+
- 127.0.0.1
26+
- ::1
27+
privateKey:
28+
algorithm: RSA
29+
encoding: PKCS8
30+
size: 2048
31+
issuerRef:
32+
name: mpas-bootstrap-issuer
33+
kind: ClusterIssuer
34+
group: cert-manager.io
35+
---
36+
apiVersion: cert-manager.io/v1
37+
kind: ClusterIssuer
38+
metadata:
39+
name: mpas-certificate-issuer
40+
spec:
41+
ca:
42+
secretName: ocm-registry-tls-certs

hack/create_developer_certificate_secrets.sh

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

hack/prime_test_cluster.sh

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/usr/bin/env bash
2+
3+
# cleanup
4+
rm -fr hack/rootCA.pem
5+
6+
CERT_MANAGER_VERSION=${CERT_MANAGER_VERSION:-v1.13.1}
7+
8+
if [ ! -e 'hack/cert-manager.yaml' ]; then
9+
echo "fetching cert-manager manifest for version ${CERT_MANAGER_VERSION}"
10+
curl -L https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.yaml -o hack/cert-manager.yaml
11+
fi
12+
13+
kind create cluster --name=e2e-test-cluster
14+
15+
echo -n 'installing cert-manager'
16+
kubectl apply -f hack/cert-manager.yaml
17+
kubectl wait --for=condition=Available=True Deployment/cert-manager -n cert-manager --timeout=60s
18+
kubectl wait --for=condition=Available=True Deployment/cert-manager-webhook -n cert-manager --timeout=60s
19+
kubectl wait --for=condition=Available=True Deployment/cert-manager-cainjector -n cert-manager --timeout=60s
20+
echo 'done'
21+
22+
echo -n 'applying root certificate issuer'
23+
kubectl apply -f hack/cluster_issuer.yaml
24+
echo 'done'
25+
26+
echo -n 'waiting for root certificate to be generated...'
27+
kubectl wait --for=condition=Ready=true Certificate/mpas-bootstrap-certificate -n cert-manager --timeout=60s
28+
echo 'done'
29+
30+
kubectl get secret ocm-registry-tls-certs -n cert-manager -o jsonpath="{.data['tls\.crt']}" | base64 -d > hack/rootCA.pem
31+
echo -n 'installing root certificate into local trust store...'
32+
CAROOT=hack ./bin/mkcert -install
33+
rootCAPath="./hack/rootCA.pem"
34+
35+
if [ -e '/etc/ssl/certs/ca-certificates.crt' ]; then
36+
echo "updating root certificate"
37+
sudo cat "${rootCAPath}" | sudo tee -a /etc/ssl/certs/ca-certificates.crt || echo "failed to append to ca-certificates. Ignoring the failure"
38+
fi
39+
40+
echo 'done'

0 commit comments

Comments
 (0)