diff --git a/hack/.ci/lib/e2e.sh b/hack/.ci/lib/e2e.sh index ea5e075f069..4fdc793db5c 100755 --- a/hack/.ci/lib/e2e.sh +++ b/hack/.ci/lib/e2e.sh @@ -211,15 +211,6 @@ function run-e2e { kubectl create clusterrolebinding e2e --clusterrole=cluster-admin --serviceaccount=e2e:default --dry-run=client -o=yaml | kubectl_create -f=- kubectl create -n=e2e pdb my-pdb --selector='app=e2e' --min-available=1 --dry-run=client -o=yaml | kubectl_create -f=- - - # Raise loglevel in CI. - # TODO: Replace it with ScyllaOperatorConfig field when available. - kubectl -n=scylla-operator patch --field-manager="${FIELD_MANAGER}" deployment/scylla-operator --type=json -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--loglevel=4"}]' - kubectl -n=scylla-operator rollout status deployment/scylla-operator - - kubectl -n=scylla-manager patch --field-manager="${FIELD_MANAGER}" deployment/scylla-manager-controller --type=json -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--loglevel=4"}]' - kubectl -n=scylla-manager rollout status deployment/scylla-manager-controller - kubectl create -n=e2e secret generic kubeconfigs ${KUBECONFIGS[@]/#/--from-file=} --dry-run=client -o=yaml | kubectl_create -f=- kubeconfigs_in_container_path=$( IFS=','; basenames=( "${KUBECONFIGS[@]##*/}" ) && in_container_paths="${basenames[@]/#//var/run/secrets/kubeconfigs/}" && echo "${in_container_paths[*]}" ) diff --git a/hack/.ci/run-e2e-gke-release.sh b/hack/.ci/run-e2e-gke-release.sh index 89493b505ee..f99733925ca 100755 --- a/hack/.ci/run-e2e-gke-release.sh +++ b/hack/.ci/run-e2e-gke-release.sh @@ -23,6 +23,9 @@ export SO_NODECONFIG_PATH SO_SCYLLACLUSTER_STORAGECLASS_NAME="${SO_SCYLLACLUSTER_STORAGECLASS_NAME=scylladb-local-xfs}" export SO_SCYLLACLUSTER_STORAGECLASS_NAME +SO_SCYLLA_OPERATOR_LOGLEVEL="${SO_SCYLLA_OPERATOR_LOGLEVEL:-4}" +export SO_SCYLLA_OPERATOR_LOGLEVEL + SCYLLA_OPERATOR_FEATURE_GATES="${SCYLLA_OPERATOR_FEATURE_GATES:-AllAlpha=true,AllBeta=true}" export SCYLLA_OPERATOR_FEATURE_GATES diff --git a/hack/.ci/run-e2e-gke.sh b/hack/.ci/run-e2e-gke.sh index 2cde5c43dc0..9e52be06781 100755 --- a/hack/.ci/run-e2e-gke.sh +++ b/hack/.ci/run-e2e-gke.sh @@ -30,6 +30,9 @@ if [[ "${SO_DISABLE_NODECONFIG:-false}" == "true" ]]; then SO_CSI_DRIVER_PATH="" fi +SO_SCYLLA_OPERATOR_LOGLEVEL="${SO_SCYLLA_OPERATOR_LOGLEVEL:-4}" +export SO_SCYLLA_OPERATOR_LOGLEVEL + SCYLLA_OPERATOR_FEATURE_GATES="${SCYLLA_OPERATOR_FEATURE_GATES:-AllAlpha=true,AllBeta=true}" export SCYLLA_OPERATOR_FEATURE_GATES diff --git a/hack/.ci/run-e2e-openshift-aws-release.sh b/hack/.ci/run-e2e-openshift-aws-release.sh index 008a2d4a21a..28cc606a171 100755 --- a/hack/.ci/run-e2e-openshift-aws-release.sh +++ b/hack/.ci/run-e2e-openshift-aws-release.sh @@ -28,6 +28,9 @@ export SO_NODECONFIG_PATH SO_SCYLLACLUSTER_STORAGECLASS_NAME="${SO_SCYLLACLUSTER_STORAGECLASS_NAME=scylladb-local-xfs}" export SO_SCYLLACLUSTER_STORAGECLASS_NAME +SO_SCYLLA_OPERATOR_LOGLEVEL="${SO_SCYLLA_OPERATOR_LOGLEVEL:-4}" +export SO_SCYLLA_OPERATOR_LOGLEVEL + SCYLLA_OPERATOR_FEATURE_GATES="${SCYLLA_OPERATOR_FEATURE_GATES:-AllAlpha=true,AllBeta=true}" export SCYLLA_OPERATOR_FEATURE_GATES diff --git a/hack/.ci/run-e2e-openshift-aws.sh b/hack/.ci/run-e2e-openshift-aws.sh index a49e164babc..4752fd049cd 100755 --- a/hack/.ci/run-e2e-openshift-aws.sh +++ b/hack/.ci/run-e2e-openshift-aws.sh @@ -29,6 +29,9 @@ export SO_CSI_DRIVER_PATH SO_SCYLLACLUSTER_STORAGECLASS_NAME="${SO_SCYLLACLUSTER_STORAGECLASS_NAME=scylladb-local-xfs}" export SO_SCYLLACLUSTER_STORAGECLASS_NAME +SO_SCYLLA_OPERATOR_LOGLEVEL="${SO_SCYLLA_OPERATOR_LOGLEVEL:-4}" +export SO_SCYLLA_OPERATOR_LOGLEVEL + SCYLLA_OPERATOR_FEATURE_GATES="${SCYLLA_OPERATOR_FEATURE_GATES:-AllAlpha=true,AllBeta=true}" export SCYLLA_OPERATOR_FEATURE_GATES diff --git a/hack/ci-deploy-release.sh b/hack/ci-deploy-release.sh index 3ff7b30eeda..3715231cafe 100755 --- a/hack/ci-deploy-release.sh +++ b/hack/ci-deploy-release.sh @@ -73,6 +73,25 @@ patches: - name: SCYLLA_OPERATOR_IMAGE value: "${operator_image_ref}" EOF + +# TODO: Replace it with ScyllaOperatorConfig field when available. +if [[ -n "${SO_SCYLLA_OPERATOR_LOGLEVEL:-}" ]]; then + # SO_SCYLLA_OPERATOR_LOGLEVEL is set and nonempty. + cat > "${ARTIFACTS_DEPLOY_DIR}/operator/loglevel.scylla-operator.deployment.patch.json" << EOF +[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--loglevel=${SO_SCYLLA_OPERATOR_LOGLEVEL}"}] +EOF + + cat << EOF | \ +yq eval-all --inplace 'select(fileIndex == 0) as $f | select(fileIndex == 1) as $p | with( $f.patches; . += $p | ... style="") | $f' "${ARTIFACTS_DEPLOY_DIR}/operator/kustomization.yaml" - +path: "${ARTIFACTS_DEPLOY_DIR}/operator/loglevel.scylla-operator.deployment.patch.json" +target: + group: apps + version: v1 + kind: Deployment + name: scylla-operator +EOF +fi + kubectl kustomize "${ARTIFACTS_DEPLOY_DIR}/operator" | kubectl_create -n=scylla-operator -f=- # Manager needs scylla CRD registered and the webhook running @@ -96,41 +115,64 @@ else echo "Skipping CSI driver creation" fi -if [[ -z "${SO_SCYLLACLUSTER_STORAGECLASS_NAME+x}" ]]; then - kubectl_create -n=scylla-manager -f="${source_url}/${revision}/deploy/manager-prod.yaml" -elif [[ -n "${SO_SCYLLACLUSTER_STORAGECLASS_NAME}" ]]; then - cat > "${ARTIFACTS_DEPLOY_DIR}/manager/kustomization.yaml" << EOF +cat > "${ARTIFACTS_DEPLOY_DIR}/manager/kustomization.yaml" << EOF resources: - ${source_url}/${revision}/deploy/manager-prod.yaml -patches: -- target: - group: scylla.scylladb.com - version: v1 - kind: ScyllaCluster - name: scylla-manager-cluster - patch: | - - op: replace - path: /spec/datacenter/racks/0/storage/storageClassName - value: "${SO_SCYLLACLUSTER_STORAGECLASS_NAME}" +patches: [] EOF - kubectl kustomize "${ARTIFACTS_DEPLOY_DIR}/manager" | kubectl_create -n=scylla-manager -f=- -else - cat > "${ARTIFACTS_DEPLOY_DIR}/manager/kustomization.yaml" << EOF -resources: -- ${source_url}/${revision}/deploy/manager-prod.yaml -patches: -- target: - group: scylla.scylladb.com - version: v1 - kind: ScyllaCluster - name: scylla-manager-cluster - patch: | - - op: remove - path: /spec/datacenter/racks/0/storage/storageClassName + +if [[ -n "${SO_SCYLLACLUSTER_STORAGECLASS_NAME:-}" ]]; then + # SO_SCYLLACLUSTER_STORAGECLASS_NAME is set and nonempty. + cat > "${ARTIFACTS_DEPLOY_DIR}/manager/storageclass-name.scylla-manager-cluster.scyllacluster.patch.json" << EOF +[{"op": "replace", "path": "/spec/datacenter/racks/0/storage/storageClassName", "value": "${SO_SCYLLACLUSTER_STORAGECLASS_NAME}"}] +EOF + + cat << EOF | \ +yq eval-all --inplace 'select(fileIndex == 0) as $f | select(fileIndex == 1) as $p | with( $f.patches; . += $p | ... style="") | $f' "${ARTIFACTS_DEPLOY_DIR}/manager/kustomization.yaml" - +path: "${ARTIFACTS_DEPLOY_DIR}/manager/storageclass-name.scylla-manager-cluster.scyllacluster.patch.json" +target: + group: scylla.scylladb.com + version: v1 + kind: ScyllaCluster + name: scylla-manager-cluster +EOF +elif [[ -n "${SO_SCYLLACLUSTER_STORAGECLASS_NAME+x}" ]]; then + # SO_SCYLLACLUSTER_STORAGECLASS_NAME is set and empty. + cat > "${ARTIFACTS_DEPLOY_DIR}/manager/storageclass-name.scylla-manager-cluster.scyllacluster.patch.json" << EOF +[{"op": "remove", "path": "/spec/datacenter/racks/0/storage/storageClassName"}] +EOF + + cat << EOF | \ +yq eval-all --inplace 'select(fileIndex == 0) as $f | select(fileIndex == 1) as $p | with( $f.patches; . += $p | ... style="") | $f' "${ARTIFACTS_DEPLOY_DIR}/manager/kustomization.yaml" - +path: "${ARTIFACTS_DEPLOY_DIR}/manager/storageclass-name.scylla-manager-cluster.scyllacluster.patch.json" +target: + group: scylla.scylladb.com + version: v1 + kind: ScyllaCluster + name: scylla-manager-cluster EOF - kubectl kustomize "${ARTIFACTS_DEPLOY_DIR}/manager" | kubectl_create -n=scylla-manager -f=- fi +# TODO: Replace it with ScyllaOperatorConfig field when available. +if [[ -n "${SO_SCYLLA_OPERATOR_LOGLEVEL:-}" ]]; then + # SO_SCYLLA_OPERATOR_LOGLEVEL is set and nonempty. + cat > "${ARTIFACTS_DEPLOY_DIR}/manager/loglevel.scylla-manager-controller.deployment.patch.json" << EOF +[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--loglevel=${SO_SCYLLA_OPERATOR_LOGLEVEL}"}] +EOF + + cat << EOF | \ +yq eval-all --inplace 'select(fileIndex == 0) as $f | select(fileIndex == 1) as $p | with( $f.patches; . += $p | ... style="") | $f' "${ARTIFACTS_DEPLOY_DIR}/manager/kustomization.yaml" - +path: "${ARTIFACTS_DEPLOY_DIR}/manager/loglevel.scylla-manager-controller.deployment.patch.json" +target: + group: apps + version: v1 + kind: Deployment + name: scylla-manager-controller +EOF +fi + +kubectl kustomize "${ARTIFACTS_DEPLOY_DIR}/manager" | kubectl_create -n=scylla-manager -f=- + kubectl -n=scylla-manager wait --timeout=5m --for='condition=Progressing=False' scyllaclusters.scylla.scylladb.com/scylla-manager-cluster kubectl -n=scylla-manager wait --timeout=5m --for='condition=Degraded=False' scyllaclusters.scylla.scylladb.com/scylla-manager-cluster kubectl -n=scylla-manager wait --timeout=5m --for='condition=Available=True' scyllaclusters.scylla.scylladb.com/scylla-manager-cluster diff --git a/hack/ci-deploy.sh b/hack/ci-deploy.sh index d4dae040a9d..b897e7eba37 100755 --- a/hack/ci-deploy.sh +++ b/hack/ci-deploy.sh @@ -37,6 +37,12 @@ for f in $( find "${DEPLOY_DIR}"/ -type f -name '*.yaml' ); do sed -i -E -e "s~docker\.io/scylladb/scylla-operator:[^ @]+$~${OPERATOR_IMAGE_REF}~" "${f}" done +# TODO: Replace it with ScyllaOperatorConfig field when available. +if [[ -n "${SO_SCYLLA_OPERATOR_LOGLEVEL:-}" ]]; then + yq e --inplace '.spec.template.spec.containers[0].args += "--loglevel=" + env(SO_SCYLLA_OPERATOR_LOGLEVEL)' "${DEPLOY_DIR}/operator/50_operator.deployment.yaml" + yq e --inplace '.spec.template.spec.containers[0].args += "--loglevel=" + env(SO_SCYLLA_OPERATOR_LOGLEVEL)' "${DEPLOY_DIR}/manager/50_controller_deployment.yaml" +fi + yq e --inplace '.spec.template.spec.containers[0].args += ["--qps=200", "--burst=400"]' "${DEPLOY_DIR}/operator/50_operator.deployment.yaml" yq e --inplace '.spec.template.spec.containers[0].args += ["--crypto-key-buffer-size-min=3", "--crypto-key-buffer-size-max=6", "--crypto-key-buffer-delay=2s"]' "${DEPLOY_DIR}/operator/50_operator.deployment.yaml"