StretchCluster automated acceptance test + dev env setup#1289
Conversation
c721865 to
46b850a
Compare
|
This PR is stale because it has been open 5 days with no activity. Remove stale label or comment or this will be closed in 5 days. |
a9c4d25 to
2b70cf6
Compare
…luster locally in k3s on vClusters * fix panics & ownership issues in multicluster controller * fix initAdminClient Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com>
Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com>
Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com>
…nerated by vcluster Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com>
Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com>
Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com>
46b850a to
53aa109
Compare
Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com>
Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com>
2796303 to
5799cfe
Compare
ce63dc8 to
8073d21
Compare
Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com>
8073d21 to
8ee48c5
Compare
|
This PR is stale because it has been open 5 days with no activity. Remove stale label or comment or this will be closed in 5 days. |
andrewstucki
left a comment
There was a problem hiding this comment.
Looks like there's still quite a bit to clean up here, but am fine merging this into the base branch for iteration -- I do think we'll need to disable the test by default for now until the license stuff is setup properly for CI
| @operator:none | ||
| Feature: Multicluster Operator | ||
|
|
||
| @skip:gke @skip:aks @skip:eks @skip:k3d |
There was a problem hiding this comment.
think we'll need this until the license env injection works in CI
There was a problem hiding this comment.
it works now, the issue was not passing env to the docker container in the ci/scripts/run-in-nix-docker.sh
#1338) * Detect StrechCluster.spec drift, halt reconcilation and set condition on all StrechClusters Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> * enable nodepool controller for stretch cluster operator; update accep… (#1346) * enable nodepool controller for stretch cluster operator; update acceptance test to assert on nodepools bound and deployed Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> * Bootstrap admin for StretchCluster (#1348) * distribute bootstrap admin credentials across stretch cluster k8s clusters Add syncBootstrapUser syncer that runs before reconcilers to ensure the bootstrap user secret exists consistently in all k8s clusters. Replace hardcoded admin/admin credentials in AdminClientForStretch with credentials read from the distributed secret. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * add BootstrapUserSynced condition and password mismatch detection Scan all clusters for existing bootstrap user secrets and error with a PasswordMismatch condition if different passwords are found. Set a BootstrapUserSynced condition on StretchCluster status for all outcomes: Synced (newly generated), ExistingReused (found in a cluster), or PasswordMismatch (conflicting secrets require manual intervention). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * make sure we set canonical cluster name in the condition reason Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> * fix per pod service, comment out nodepool watches temporarily Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> * fix issue with nodepools with .spec.replicas > 1 Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> * Fix misc issues with multiple statefulset replicas Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> * try to use v1 license in acceptance test Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> * pass license env var to docker command in Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> * operator: Distinguish in-cluster pools from all pools in RenderState RenderState previously used a single `pools` slice for both rendering local resources (StatefulSets, ConfigMaps, Secrets). The per Pod service were not generated for remote NodePools. Those Kubernetes Services are required to create DNS entries even if Pod does not exist in particular Kubernetes cluster. Split into two fields: - `inClusterPools`: NodePools local to this K8s cluster, used for StatefulSets, ConfigMaps, Secrets, and pod name generation - `pools`: all NodePools across clusters, used for seed server computation and per Pod Service Move seed server generation from lifecycle into RenderState via seedServersFromNodePools(), removing the now-unused SeedServersFromNodePools() export. Add GetAllNodePools() to StretchClusterWithPools so callers can pass the full pool list. * regenerate golden files Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> * add configuration of NodePool.Spec.Services that allows to modify spec/annotations for local and remote per-pod services Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> * operator: Move spec consistency check after finalizer removal * operator: Fix seed server port type and propagate config errors The seed server port was rendered as a string in redpanda.yaml instead of an integer, which Redpanda rejects. Parse the port with strconv.ParseInt and propagate the resulting error through redpandaConfigFile, configMaps, and statefulSetChecksumAnnotation. Also add missing namespace to NodePool test fixtures so seed server addresses render correctly. --------- Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Rafal Korepta <rafal.korepta@gmail.com> * regenerate golden files Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> --------- Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Rafal Korepta <rafal.korepta@gmail.com> --------- Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: Rafal Korepta <rafal.korepta@gmail.com>
Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com>
Signed-off-by: Paweł Bojanowski <pawel.bojanowski@redpanda.com>
…chCluster locally in k3s on vClusters
Dev workflow:
export REDPANDA_LICENSE_KEY=$(cat <license-file>)nix develop -c task setup-multicluster-dev-env<- sets up k3s, 3 vclusters, redpanda-operator inside each onek3d cluster delete harpoonand re-run the task command from 2)