Skip to content

Commit 7918eca

Browse files
authored
Merge branch 'main' into 219-upgrade-operator-sdk
2 parents 2a638d8 + e03271a commit 7918eca

14 files changed

Lines changed: 277 additions & 208 deletions

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ Join the conversation:
228228
## 📦 Project Status
229229
230230
TyKO is an **independently maintained** project (not affiliated with Typesense, Inc.).
231-
- Latest version: **0.3.8-rc.3**
231+
- Latest version: **0.3.8-rc.4**
232232
- Tested on: Kubernetes 1.35 (earliest 1.26), Typesense 30.0 (earliest 26.0)
233233
- Contributions welcome! See [FAQ](https://akyriako.github.io/typesense-operator-docs/docs/faq) and [Development](https://akyriako.github.io/typesense-operator-docs/docs/development)
234234

api/v1alpha1/typesensecluster_types.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ type TypesenseClusterSpec struct {
135135

136136
SecurityContext *SecurityContextSpec `json:"securityContext,omitempty"`
137137

138+
// +kubebuilder:validation:Optional
139+
// +kubebuilder:validation:Items:Type=string
140+
IgnoreAnnotationsFromExternalMutations []string `json:"ignoreAnnotationsFromExternalMutations,omitempty"`
141+
138142
// +optional
139143
// +kubebuilder:default=false
140144
// +kubebuilder:validation:Type=boolean

api/v1alpha1/zz_generated.deepcopy.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

charts/typesense-operator/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ type: application
1414
# This is the chart version. This version number should be incremented each time you make changes
1515
# to the chart and its templates, including the app version.
1616
# Versions are expected to follow Semantic Versioning (https://semver.org/)
17-
version: 0.3.8-rc.3
17+
version: 0.3.8-rc.4
1818
# This is the version number of the application being deployed. This version number should be
1919
# incremented each time you make changes to the application. Versions are not expected to
2020
# follow Semantic Versioning. They should reflect the version the application is using.
2121
# It is recommended to use it with quotes.
22-
appVersion: "0.3.8-rc.3"
22+
appVersion: "0.3.8-rc.4"
2323

2424
maintainers:
2525
- name: Kyriakos Akriotis

charts/typesense-operator/templates/typesensecluster-crd.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1092,6 +1092,10 @@ spec:
10921092
type: object
10931093
type: object
10941094
type: object
1095+
ignoreAnnotationsFromExternalMutations:
1096+
items:
1097+
type: string
1098+
type: array
10951099
image:
10961100
type: string
10971101
imagePullSecrets:

charts/typesense-operator/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ controllerManager:
1212
- ALL
1313
image:
1414
repository: akyriako78/typesense-operator
15-
tag: 0.3.8-rc.3
15+
tag: 0.3.8-rc.4
1616
imagePullPolicy: IfNotPresent
1717
resources:
1818
limits:

config/crd/bases/ts.opentelekomcloud.com_typesenseclusters.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,6 +1086,10 @@ spec:
10861086
type: object
10871087
type: object
10881088
type: object
1089+
ignoreAnnotationsFromExternalMutations:
1090+
items:
1091+
type: string
1092+
type: array
10891093
image:
10901094
type: string
10911095
imagePullSecrets:

config/manager/kustomization.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ kind: Kustomization
55
images:
66
- name: controller
77
newName: akyriako78/typesense-operator
8-
newTag: 0.3.8-rc.3
8+
newTag: 0.3.8-rc.4

internal/controller/typesensecluster_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func (r *TypesenseClusterReconciler) Reconcile(ctx context.Context, req ctrl.Req
157157
}
158158

159159
// Update strategy: Update the existing objects, if changes are identified in api and peering ports
160-
err = r.ReconcileIngress(ctx, ts)
160+
err = r.ReconcileIngress(ctx, &ts)
161161
if err != nil {
162162
cerr := r.setConditionNotReady(ctx, &ts, ConditionReasonIngressNotReady, err)
163163
if cerr != nil {
@@ -187,7 +187,7 @@ func (r *TypesenseClusterReconciler) Reconcile(ctx context.Context, req ctrl.Req
187187
}
188188

189189
// Update strategy: Update the whole specs when changes are identified
190-
sts, err := r.ReconcileStatefulSet(ctx, &ts)
190+
sts, _, err := r.ReconcileStatefulSet(ctx, &ts)
191191
if err != nil {
192192
cerr := r.setConditionNotReady(ctx, &ts, ConditionReasonStatefulSetNotReady, err)
193193
if cerr != nil {

internal/controller/typesensecluster_ingress.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ const (
5757

5858
const clusterIssuerAnnotationKey = "cert-manager.io/cluster-issuer"
5959

60-
func (r *TypesenseClusterReconciler) ReconcileIngress(ctx context.Context, ts tsv1alpha1.TypesenseCluster) (err error) {
60+
func (r *TypesenseClusterReconciler) ReconcileIngress(ctx context.Context, ts *tsv1alpha1.TypesenseCluster) (err error) {
6161
r.logger.V(debugLevel).Info("reconciling ingress")
6262

6363
ingressName := fmt.Sprintf(ClusterReverseProxyIngress, ts.Name)
@@ -83,23 +83,23 @@ func (r *TypesenseClusterReconciler) ReconcileIngress(ctx context.Context, ts ts
8383
if !ingressExists {
8484
r.logger.V(debugLevel).Info("creating ingress", "ingress", ingressObjectKey.Name)
8585

86-
ig, err = r.createIngress(ctx, ingressObjectKey, &ts)
86+
ig, err = r.createIngress(ctx, ingressObjectKey, ts)
8787
if err != nil {
8888
r.logger.Error(err, "creating ingress failed", "ingress", ingressObjectKey.Name)
8989
return err
9090
}
9191
} else {
9292
if ts.Spec.Ingress.Host != ig.Spec.Rules[0].Host ||
9393
(ts.Spec.Ingress.ClusterIssuer != nil && *ts.Spec.Ingress.ClusterIssuer != ig.Annotations[clusterIssuerAnnotationKey]) ||
94-
!apiequality.Semantic.DeepEqual(ts.Spec.Ingress.Annotations, r.getIngressAnnotations(ig)) ||
94+
!apiequality.Semantic.DeepEqual(ts.Spec.Ingress.Annotations, r.getIngressAnnotations(ig, ts)) ||
9595
(ts.Spec.Ingress.TLSSecretName != nil && *ts.Spec.Ingress.TLSSecretName != ig.Spec.TLS[0].SecretName) ||
9696
ts.Spec.Ingress.IngressClassName != *ig.Spec.IngressClassName ||
9797
ts.Spec.Ingress.Path != ig.Spec.Rules[0].IngressRuleValue.HTTP.Paths[0].Path ||
9898
*ts.Spec.Ingress.PathType != *ig.Spec.Rules[0].IngressRuleValue.HTTP.Paths[0].PathType {
9999

100100
r.logger.V(debugLevel).Info("updating ingress", "ingress", ingressObjectKey.Name)
101101

102-
ig, err = r.updateIngress(ctx, *ig, &ts)
102+
ig, err = r.updateIngress(ctx, *ig, ts)
103103
if err != nil {
104104
r.logger.Error(err, "updating ingress failed", "ingress", ingressObjectKey.Name)
105105
return err
@@ -126,21 +126,21 @@ func (r *TypesenseClusterReconciler) ReconcileIngress(ctx context.Context, ts ts
126126
if !configMapExists {
127127
r.logger.V(debugLevel).Info("creating ingress config map", "configmap", configMapObjectKey.Name)
128128

129-
_, err = r.createIngressConfigMap(ctx, configMapObjectKey, &ts, ig)
129+
_, err = r.createIngressConfigMap(ctx, configMapObjectKey, ts, ig)
130130
if err != nil {
131131
r.logger.Error(err, "creating ingress config map failed", "configmap", configMapObjectKey.Name)
132132
return err
133133
}
134134
} else {
135-
shouldUpdate, err := r.shouldUpdateIngressConfigMap(cm, &ts)
135+
shouldUpdate, err := r.shouldUpdateIngressConfigMap(cm, ts)
136136
if err != nil {
137137
return err
138138
}
139139

140140
if shouldUpdate {
141141
r.logger.V(debugLevel).Info("updating ingress config map", "configmap", configMapObjectKey.Name)
142142

143-
_, err = r.updateIngressConfigMap(ctx, cm, &ts)
143+
_, err = r.updateIngressConfigMap(ctx, cm, ts)
144144
if err != nil {
145145
return err
146146
}
@@ -166,7 +166,7 @@ func (r *TypesenseClusterReconciler) ReconcileIngress(ctx context.Context, ts ts
166166
if !deploymentExists {
167167
r.logger.V(debugLevel).Info("creating ingress reverse proxy deployment", "deployment", deploymentObjectKey.Name)
168168

169-
_, err = r.createIngressDeployment(ctx, deploymentObjectKey, &ts, ig)
169+
_, err = r.createIngressDeployment(ctx, deploymentObjectKey, ts, ig)
170170
if err != nil {
171171
r.logger.Error(err, "creating ingress reverse proxy deployment failed", "deployment", deploymentObjectKey.Name)
172172
return err
@@ -255,14 +255,14 @@ func (r *TypesenseClusterReconciler) ReconcileIngress(ctx context.Context, ts ts
255255
if !serviceExists {
256256
r.logger.V(debugLevel).Info("creating ingress reverse proxy service", "service", serviceNameObjectKey.Name)
257257

258-
_, err = r.createIngressService(ctx, serviceNameObjectKey, &ts, ig)
258+
_, err = r.createIngressService(ctx, serviceNameObjectKey, ts, ig)
259259
if err != nil {
260260
r.logger.Error(err, "creating ingress reverse proxy service failed", "service", serviceNameObjectKey.Name)
261261
return err
262262
}
263263
} else {
264264
if !apiequality.Semantic.DeepEqual(service.Annotations, ts.Spec.Ingress.ServiceAnnotations) {
265-
err = r.updateIngressService(ctx, service, &ts)
265+
err = r.updateIngressService(ctx, service, ts)
266266
if err != nil {
267267
r.logger.Error(err, "updating ingress reverse proxy service failed", "service", serviceNameObjectKey.Name)
268268
return err
@@ -388,8 +388,9 @@ func (r *TypesenseClusterReconciler) deleteIngress(ctx context.Context, ig *netw
388388
return nil
389389
}
390390

391-
func (r *TypesenseClusterReconciler) getIngressAnnotations(ig *networkingv1.Ingress) map[string]string {
392-
filtered := filterAnnotations(ig.Annotations, clusterIssuerAnnotationKey, rancherDomainAnnotationKey)
391+
func (r *TypesenseClusterReconciler) getIngressAnnotations(ig *networkingv1.Ingress, ts *tsv1alpha1.TypesenseCluster) map[string]string {
392+
filters := append([]string{clusterIssuerAnnotationKey, rancherDomainAnnotationKey}, ts.Spec.IgnoreAnnotationsFromExternalMutations...)
393+
filtered := filterAnnotations(ig.Annotations, filters...)
393394
return filtered
394395
}
395396

0 commit comments

Comments
 (0)