Skip to content

Commit 851db12

Browse files
committed
feat(package-server): self-host package-server with CSV
- Adds package-server CSV helm template - Uses package-server CSV to self-host
1 parent b62b5a2 commit 851db12

File tree

6 files changed

+86
-173
lines changed

6 files changed

+86
-173
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
apiVersion: operators.coreos.com/v1alpha1
2+
kind: ClusterServiceVersion
3+
metadata:
4+
name: packageserver.v8.0.0
5+
namespace: {{ .Values.namespace }}
6+
spec:
7+
displayName: Package Server
8+
description: Package Server is kubernetes APIService that provides the PackageManifest resource
9+
keywords: ['packagemanifests', 'olm', 'packages']
10+
maintainers:
11+
- name: Red Hat
12+
13+
provider:
14+
name: Red Hat
15+
links:
16+
- name: Package Server
17+
url: https://github.com/operator-framework/operator-lifecycle-manager/tree/master/pkg/package-server
18+
install:
19+
strategy: deployment
20+
spec:
21+
deployments:
22+
- name: package-server
23+
spec:
24+
replicas: {{ .Values.package.replicaCount }}
25+
strategy:
26+
type: RollingUpdate
27+
selector:
28+
matchLabels:
29+
app: package-server
30+
template:
31+
metadata:
32+
labels:
33+
app: package-server
34+
spec:
35+
serviceAccountName: olm-operator-serviceaccount
36+
containers:
37+
- name: package-server
38+
command:
39+
- /bin/package-server
40+
- -v=4
41+
{{- if .Values.watchedNamespaces }}
42+
- --watched-namespaces
43+
- {{ .Values.watchedNamespaces }}
44+
{{- end }}
45+
- --secure-port={{ .Values.package.service.internalPort }}
46+
- --global-namespace
47+
- {{ .Values.namespace }}
48+
{{- if .Values.debug }}
49+
- --debug
50+
{{- end }}
51+
{{- if .Values.package.commandArgs }}
52+
- {{ .Values.package.commandArgs }}
53+
{{- end }}
54+
image: {{ .Values.package.image.ref }}
55+
imagePullPolicy: {{ .Values.package.image.pullPolicy }}
56+
ports:
57+
- containerPort: {{ .Values.package.service.internalPort }}
58+
livenessProbe:
59+
httpGet:
60+
scheme: HTTPS
61+
path: /healthz
62+
port: {{ .Values.package.service.internalPort }}
63+
readinessProbe:
64+
httpGet:
65+
scheme: HTTPS
66+
path: /healthz
67+
port: {{ .Values.package.service.internalPort }}
68+
maturity: alpha
69+
version: 8.0.0
70+
apiservicedefinitions:
71+
owned:
72+
- group: packages.apps.redhat.com
73+
version: v1alpha1
74+
kind: PackageManifest
75+
displayName: PackageManifest
76+
description: A PackageManifest is a resource generated from existing CatalogSources and their ConfigMaps
77+
deploymentName: package-server
78+
containerPort: {{ .Values.package.service.internalPort }}

deploy/chart/templates/0000_30_13-packageserver.yaml

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

pkg/controller/operators/olm/apiservices.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ func (a *Operator) installAPIServiceRequirements(desc v1alpha1.APIServiceDescrip
468468
ownerutil.AddNonBlockingOwner(secretRoleBinding, csv)
469469
_, err = a.OpClient.CreateRoleBinding(secretRoleBinding)
470470
if err != nil {
471-
log.Warnf("could not create secret rolebinding %s", secretRoleBinding.GetName())
471+
log.Warnf("could not create secret rolebinding with dep spec: %+v", depSpec)
472472
return nil, err
473473
}
474474
} else {

pkg/controller/operators/olm/operator.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,8 @@ func (a *Operator) requeueOwnerCSVs(ownee metav1.Object) {
871871
csvSet[csv.GetUID()] = csv
872872
}
873873

874+
logger.Infof("CSV set: %+v", csvSet)
875+
874876
// Requeue existing owner CSVs
875877
for _, owner := range owners {
876878
csv, ok := csvSet[owner.UID]

test/e2e/csv_e2e_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,7 @@ func TestCreateCSVRequirementsMetCRD(t *testing.T) {
625625
UID: fetchedCSV.GetUID(),
626626
}})
627627
cleanupCRD, err := createCRD(c, crd)
628+
defer cleanupCRD()
628629
require.NoError(t, err)
629630

630631
// Create Role/Cluster Roles and RoleBindings

test/e2e/util_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const (
3939
expectedEtcdNodes = 3
4040
expectedPrometheusSize = 3
4141
ocsConfigMap = "rh-operators"
42+
packageServerCSV = "packageserver.v8.0.0"
4243
)
4344

4445
var (
@@ -49,6 +50,8 @@ var (
4950
nonPersistentCatalogsFieldSelector = createFieldNotEqualSelector("metadata.name", persistentCatalogNames...)
5051
persistentConfigMapNames = []string{ocsConfigMap}
5152
nonPersistentConfigMapsFieldSelector = createFieldNotEqualSelector("metadata.name", persistentConfigMapNames...)
53+
persistentCSVNames = []string{packageServerCSV}
54+
nonPersistentCSVFieldSelector = createFieldNotEqualSelector("metadata.name", persistentCSVNames...)
5255
)
5356

5457
type namespaceCleaner struct {
@@ -282,7 +285,7 @@ func cleanupOLM(t *testing.T, namespace string) {
282285
t.Log("cleaning up any remaining non persistent resources...")
283286
deleteOptions := &metav1.DeleteOptions{GracePeriodSeconds: &immediate}
284287
listOptions := metav1.ListOptions{}
285-
require.NoError(t, crc.OperatorsV1alpha1().ClusterServiceVersions(namespace).DeleteCollection(deleteOptions, listOptions))
288+
require.NoError(t, crc.OperatorsV1alpha1().ClusterServiceVersions(namespace).DeleteCollection(deleteOptions, metav1.ListOptions{FieldSelector: nonPersistentCSVFieldSelector}))
286289
require.NoError(t, crc.OperatorsV1alpha1().InstallPlans(namespace).DeleteCollection(deleteOptions, listOptions))
287290
require.NoError(t, crc.OperatorsV1alpha1().Subscriptions(namespace).DeleteCollection(deleteOptions, listOptions))
288291
require.NoError(t, crc.OperatorsV1alpha1().CatalogSources(namespace).DeleteCollection(deleteOptions, metav1.ListOptions{FieldSelector: nonPersistentCatalogsFieldSelector}))

0 commit comments

Comments
 (0)