Skip to content

Commit fea31bc

Browse files
committed
Merge branch '2825-grafana-installation-namespace-resolution-logic-is-wrong-1-12' into 'main'
Resolve "Grafana installation namespace resolution logic is wrong" and "Errors when setting imagePullSecrets" Closes #2825 and #2826 See merge request ongresinc/stackgres!1592
2 parents f96ed63 + 629193f commit fea31bc

12 files changed

Lines changed: 90 additions & 32 deletions

File tree

stackgres-k8s/e2e/spec/dbops-security-upgrade-olm

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,13 @@ EOF
339339
}
340340

341341
e2e_upgrade_operator() {
342+
SGCONFIG_NAMESPACE="$OPERATOR_NAMESPACE"
343+
if [ "x$E2E_ALLOWED_NAMESPACES" != x ] \
344+
&& ! printf ' %s ' "$E2E_ALLOWED_NAMESPACES" | grep -qF " $OPERATOR_NAMESPACE "
345+
then
346+
SGCONFIG_NAMESPACE="$CLUSTER_NAMESPACE"
347+
fi
348+
342349
echo "Upgrading operator bundle ($STACKGRES_VERSION)"
343350

344351
if [ "$STACKGRES_PREVIOUS_VERSION" = 1.6.0 ]
@@ -480,13 +487,6 @@ INNER_EOF
480487
)
481488
EOF
482489

483-
SGCONFIG_NAMESPACE="$OPERATOR_NAMESPACE"
484-
if [ "x$E2E_ALLOWED_NAMESPACES" != x ] \
485-
&& ! printf ' %s ' "$E2E_ALLOWED_NAMESPACES" | grep -qF " $OPERATOR_NAMESPACE "
486-
then
487-
SGCONFIG_NAMESPACE="$CLUSTER_NAMESPACE"
488-
fi
489-
490490
EXTRA_OPTS="$(printf %s "
491491
-Dquarkus.log.category.\"io.stackgres\".level=DEBUG
492492
-Dquarkus.log.category.\"io.quarkus\".level=INFO
@@ -515,8 +515,16 @@ EOF
515515
{"name":"JAVA_OPTS","value":$EXTRA_OPTS},
516516
{"name":"APP_OPTS","value":$EXTRA_OPTS},
517517
{"name":"SGCONFIG","value":$(yq --arg sgconfig "${E2E_OPERATOR_BUNDLE_SGCONFIG:-{\}}" '($sgconfig | fromjson) * . | tostring' "$LOG_PATH/sgconfig-patch.yaml")}
518+
$(
519+
if [ "x$E2E_ALLOWED_NAMESPACES" != x ] \
520+
&& ! printf ' %s ' "$E2E_ALLOWED_NAMESPACES" | grep -qF " $OPERATOR_NAMESPACE "
521+
then
522+
cat << INNER_EOF
518523
,
519-
{"name":"SGCONFIG_NAMESPACE","value":"$SGCONFIG_NAMESPACE"}
524+
{"name":"SGCONFIG_NAMESPACE","value":"$CLUSTER_NAMESPACE"}
525+
INNER_EOF
526+
fi
527+
)
520528
]
521529
$(
522530
if [ -n "$E2E_EXTRA_MOUNT_BUILD_PATH" ]
@@ -570,6 +578,14 @@ EOF
570578
echo "SUCCESS. The StackGres restapi service was available."
571579
fi
572580

581+
if ! wait_until eval 'kubectl get job -n "$SGCONFIG_NAMESPACE" -l "app=StackGresConfig" -o name | wc -l | grep -qxF 0'
582+
then
583+
echo "FAILED. The StackGres jobs still running."
584+
return 1
585+
else
586+
echo "SUCCESS. The StackGres jobs all cleaned up."
587+
fi
588+
573589
if [ "$(kubectl get sgconfig -n "$SGCONFIG_NAMESPACE" stackgres-operator -o json | jq .spec.extensions.cache.enabled)" = true ]
574590
then
575591
if ! wait_services_available "$SGCONFIG_NAMESPACE" 1 "^stackgres-operator-extensions-cache$"

stackgres-k8s/e2e/spec/operator-olm

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,22 @@ e2e_test() {
4242

4343
run_test "Namespace endpoint should return all kubernetes namespaces" check_namespace
4444

45-
run_test "Check that operator can be deleted" check_operator_delete
45+
if [ "$E2E_SKIP_CHECK_OPERATOR_DELETE" = true ]
46+
then
47+
echo "Skip operator deletion check"
48+
else
49+
run_test "Check that operator can be deleted" check_operator_delete
50+
fi
4651
}
4752

4853
check_operator_install() {
54+
SGCONFIG_NAMESPACE="$OPERATOR_NAMESPACE"
55+
if [ "x$E2E_ALLOWED_NAMESPACES" != x ] \
56+
&& ! printf ' %s ' "$E2E_ALLOWED_NAMESPACES" | grep -qF " $OPERATOR_NAMESPACE "
57+
then
58+
SGCONFIG_NAMESPACE="$CLUSTER_NAMESPACE"
59+
fi
60+
4961
install_operator_olm
5062

5163
check_operator_installed
@@ -220,7 +232,15 @@ spec:
220232
{"name":"APP_OPTS","value":$EXTRA_OPTS},
221233
{"name":"SGCONFIG","value":$(yq --arg sgconfig "${E2E_OPERATOR_BUNDLE_SGCONFIG:-{\}}" '($sgconfig | fromjson) * . | tostring' "$LOG_PATH/sgconfig-patch.yaml")}
222234
,
223-
{"name":"SGCONFIG_NAMESPACE","value":"$SGCONFIG_NAMESPACE"}
235+
$(
236+
if [ "x$E2E_ALLOWED_NAMESPACES" != x ] \
237+
&& ! printf ' %s ' "$E2E_ALLOWED_NAMESPACES" | grep -qF " $OPERATOR_NAMESPACE "
238+
then
239+
cat << INNER_EOF
240+
{"name":"SGCONFIG_NAMESPACE","value":"$CLUSTER_NAMESPACE"}
241+
INNER_EOF
242+
fi
243+
)
224244
]
225245
$(
226246
if [ -n "$E2E_EXTRA_MOUNT_BUILD_PATH" ]
@@ -283,6 +303,14 @@ check_operator_installed() {
283303
echo "SUCCESS. The StackGres restapi service was available."
284304
fi
285305

306+
if ! wait_until eval 'kubectl get job -n "$SGCONFIG_NAMESPACE" -l "app=StackGresConfig" -o name | wc -l | grep -qxF 0'
307+
then
308+
echo "FAILED. The StackGres jobs still running."
309+
return 1
310+
else
311+
echo "SUCCESS. The StackGres jobs all cleaned up."
312+
fi
313+
286314
if [ "$(kubectl get sgconfig -n "$SGCONFIG_NAMESPACE" stackgres-operator -o json | jq .spec.extensions.cache.enabled)" = true ]
287315
then
288316
if ! wait_services_available "$SGCONFIG_NAMESPACE" 1 "^stackgres-operator-extensions-cache$"
@@ -403,6 +431,13 @@ create_or_replace_cluster_from_backup() {
403431
}
404432

405433
check_operator_delete() {
434+
SGCONFIG_NAMESPACE="$OPERATOR_NAMESPACE"
435+
if [ "x$E2E_ALLOWED_NAMESPACES" != x ] \
436+
&& ! printf ' %s ' "$E2E_ALLOWED_NAMESPACES" | grep -qF " $OPERATOR_NAMESPACE "
437+
then
438+
SGCONFIG_NAMESPACE="$CLUSTER_NAMESPACE"
439+
fi
440+
406441
kubectl delete subscription -n "$OPERATOR_NAMESPACE" stackgres
407442

408443
kubectl delete clusterserviceversion -n "$OPERATOR_NAMESPACE" "stackgres.v$BUNDLE_STACKGRES_VERSION"
@@ -555,13 +590,6 @@ EOF
555590
OPERATOR_NAMESPACE="$(generate_operator_namespace)"
556591
kubectl create namespace "${OPERATOR_NAMESPACE}"
557592

558-
SGCONFIG_NAMESPACE="$OPERATOR_NAMESPACE"
559-
if [ "x$E2E_ALLOWED_NAMESPACES" != x ] \
560-
&& ! printf ' %s ' "$E2E_ALLOWED_NAMESPACES" | grep -qF " $OPERATOR_NAMESPACE "
561-
then
562-
SGCONFIG_NAMESPACE="$CLUSTER_NAMESPACE"
563-
fi
564-
565593
cat << EOF > "$LOG_PATH/operator-catalog-source.yaml"
566594
apiVersion: operators.coreos.com/v1alpha1
567595
kind: CatalogSource

stackgres-k8s/e2e/utils/operator

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -830,6 +830,7 @@ before_operator_install_or_upgrade() {
830830
after_operator_install_or_upgrade() {
831831
wait_services_available "$OPERATOR_NAMESPACE" 1 '^stackgres-operator$'
832832
wait_services_available "$OPERATOR_NAMESPACE" 1 '^stackgres-restapi$'
833+
wait_until eval 'kubectl get job -n "$OPERATOR_NAMESPACE" -l "app=StackGresConfig" -o name | wc -l | grep -qxF 0'
833834
if [ "$OPERATOR_FROM" != true ] && [ "$EXTENSIONS_CACHE_ENABLED" = true ]
834835
then
835836
wait_services_available "$OPERATOR_NAMESPACE" 1 '^stackgres-operator-extensions-cache$'

stackgres-k8s/src/operator/src/main/java/io/stackgres/operator/conciliation/factory/cluster/backup/BackupCronRole.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.stackgres.operator.conciliation.factory.cluster.backup;
77

8+
import java.util.List;
89
import java.util.Map;
910
import java.util.Optional;
1011
import java.util.stream.Stream;
@@ -74,8 +75,10 @@ private ServiceAccount createServiceAccount(StackGresClusterContext context) {
7475
.withNamespace(serviceAccountNamespace)
7576
.withLabels(labels)
7677
.endMetadata()
77-
.withImagePullSecrets(Optional.ofNullable(context.getConfig().getSpec().getImagePullSecrets())
78+
.withImagePullSecrets(
79+
Optional.ofNullable(context.getConfig().getSpec().getImagePullSecrets())
7880
.stream()
81+
.flatMap(List::stream)
7982
.map(LocalObjectReference.class::cast)
8083
.toList())
8184
.build();

stackgres-k8s/src/operator/src/main/java/io/stackgres/operator/conciliation/factory/cluster/patroni/PatroniRole.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.stackgres.operator.conciliation.factory.cluster.patroni;
77

8+
import java.util.List;
89
import java.util.Map;
910
import java.util.Optional;
1011
import java.util.stream.Stream;
@@ -84,6 +85,7 @@ private ServiceAccount createServiceAccount(StackGresClusterContext context) {
8485
.endMetadata()
8586
.withImagePullSecrets(Optional.ofNullable(context.getConfig().getSpec().getImagePullSecrets())
8687
.stream()
88+
.flatMap(List::stream)
8789
.map(LocalObjectReference.class::cast)
8890
.toList())
8991
.build();

stackgres-k8s/src/operator/src/main/java/io/stackgres/operator/conciliation/factory/config/webconsole/WebConsoleGrafanaIntegrationJob.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,10 @@ public WebConsoleGrafanaIntegrationJob(
112112
.map(LocalObjectReference::new)
113113
.toList()))
114114
.append(Optional.ofNullable(context.getSource().getSpec().getImagePullSecrets())
115-
.map(imagePullSecrets -> imagePullSecrets
116-
.stream()
117-
.map(LocalObjectReference.class::cast)
118-
.toList()))
115+
.stream()
116+
.flatMap(List::stream)
117+
.map(LocalObjectReference.class::cast)
118+
.toList())
119119
.flatMap(List::stream)
120120
.toList())
121121
.build(),
@@ -215,9 +215,8 @@ public WebConsoleGrafanaIntegrationJob(
215215
.withEnv(
216216
new EnvVarBuilder()
217217
.withName("SGCONFIG_NAMESPACE")
218-
.withValue(Optional.ofNullable(System.getenv(
219-
OperatorProperty.SGCONFIG_NAMESPACE.getEnvironmentVariableName()))
220-
.orElseGet(OperatorProperty.OPERATOR_NAMESPACE::getEnvironmentVariableName))
218+
.withValue(OperatorProperty.SGCONFIG_NAMESPACE.get()
219+
.orElseGet(OperatorProperty.OPERATOR_NAMESPACE::getString))
221220
.build(),
222221
new EnvVarBuilder()
223222
.withName("OPERATOR_NAME")

stackgres-k8s/src/operator/src/main/java/io/stackgres/operator/conciliation/factory/config/webconsole/WebConsoleServiceAccount.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,10 @@ public WebConsoleServiceAccount(LabelFactoryForConfig labelFactory) {
8383
.map(LocalObjectReference::new)
8484
.toList()))
8585
.append(Optional.ofNullable(context.getSource().getSpec().getImagePullSecrets())
86-
.map(imagePullSecrets -> imagePullSecrets
87-
.stream()
88-
.map(LocalObjectReference.class::cast)
89-
.toList()))
86+
.stream()
87+
.flatMap(List::stream)
88+
.map(LocalObjectReference.class::cast)
89+
.toList())
9090
.flatMap(List::stream)
9191
.toList())
9292
.build());

stackgres-k8s/src/operator/src/main/java/io/stackgres/operator/conciliation/factory/config/webconsole/WebConsoleServiceRole.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,9 @@
3535
public class WebConsoleServiceRole
3636
implements ResourceGenerator<StackGresConfigContext> {
3737

38-
private final Optional<String> sgConfigNamespace = OperatorProperty.SGCONFIG_NAMESPACE.get();
39-
private final Optional<String> operatorNamespace = OperatorProperty.OPERATOR_NAMESPACE.get();
38+
private final String sgConfigNamespace = OperatorProperty.SGCONFIG_NAMESPACE.get()
39+
.orElseGet(OperatorProperty.OPERATOR_NAMESPACE::getString);
40+
private final String operatorNamespace = OperatorProperty.OPERATOR_NAMESPACE.getString();
4041

4142
private final LabelFactoryForConfig labelFactory;
4243

@@ -50,7 +51,7 @@ public WebConsoleServiceRole(LabelFactoryForConfig labelFactory) {
5051
*/
5152
@Override
5253
public @NotNull Stream<HasMetadata> generateResource(StackGresConfigContext context) {
53-
if (sgConfigNamespace.or(() -> operatorNamespace).equals(operatorNamespace)
54+
if (sgConfigNamespace.equals(operatorNamespace)
5455
&& (!Optional.ofNullable(context.getSource().getSpec())
5556
.map(StackGresConfigSpec::getDeploy)
5657
.map(StackGresConfigDeploy::getRestapi)

stackgres-k8s/src/operator/src/main/java/io/stackgres/operator/conciliation/factory/dbops/DbOpsRole.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.stackgres.operator.conciliation.factory.dbops;
77

8+
import java.util.List;
89
import java.util.Map;
910
import java.util.Optional;
1011
import java.util.stream.Stream;
@@ -78,6 +79,7 @@ private ServiceAccount createServiceAccount(StackGresDbOpsContext context) {
7879
.endMetadata()
7980
.withImagePullSecrets(Optional.ofNullable(context.getConfig().getSpec().getImagePullSecrets())
8081
.stream()
82+
.flatMap(List::stream)
8183
.map(LocalObjectReference.class::cast)
8284
.toList())
8385
.build();

stackgres-k8s/src/operator/src/main/java/io/stackgres/operator/conciliation/factory/distributedlogs/patroni/PatroniRole.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.stackgres.operator.conciliation.factory.distributedlogs.patroni;
77

8+
import java.util.List;
89
import java.util.Map;
910
import java.util.Optional;
1011
import java.util.stream.Stream;
@@ -79,6 +80,7 @@ private ServiceAccount createServiceAccount(StackGresDistributedLogsContext cont
7980
.endMetadata()
8081
.withImagePullSecrets(Optional.ofNullable(context.getConfig().getSpec().getImagePullSecrets())
8182
.stream()
83+
.flatMap(List::stream)
8284
.map(LocalObjectReference.class::cast)
8385
.toList())
8486
.build();

0 commit comments

Comments
 (0)