ROSAENG-726: Spike request-serving isolation on EKS (design + Kata/Firecracker POC) - #738
ROSAENG-726: Spike request-serving isolation on EKS (design + Kata/Firecracker POC)#738typeid wants to merge 8 commits into
Conversation
…s management Replace EKS Auto Mode with OSS Karpenter for MC and RC workload node provisioning. Karpenter is managed via ArgoCD (argocd/config/<cluster-type>/karpenter/) with Bottlerocket AMIs. AWS Load Balancer Controller added as a dependency with corrected TargetGroupBinding API versions across all services. Key changes: - Add Karpenter controller IAM role and SQS interruption queue (Terraform) - Move kms:CreateGrant from node role to Karpenter controller role - Remove unused IAMInstanceProfileCreate/Modify permissions (not needed with Bottlerocket) - Fix ec2nodeclasses CRD name in verify-fips.sh (was nodeclasses.karpenter.k8s.aws) - Fix hypershift-install Job: replace kubectl with curl for in-cluster API polling - Fix monitoring bootstrap: disable tls.enabled alongside admissionWebhooks.enabled - Correct TargetGroupBinding apiVersion to elbv2.k8s.aws/v1beta1 across all services - Update monitoring e2e to explicit ginkgo invocation with 15m timeout Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-error check On nonzero exit from hypershift install, namespace existence alone is a weak signal when backoffLimit=1: on retry the namespace may already exist from a prior failed attempt, causing a real failure to be treated as the known benign post-apply error. Capture stdout+stderr into _hs_out, print it, and check the captured output for resource-apply failure strings before falling back to the namespace check. The output check is the primary gate; namespace presence remains a secondary corroborating signal. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ecksum verification Replace get-helm-3 script (which lacks retry logic) with direct download using curl retry parameters. This matches the pattern used for Terraform and other tools, ensuring transient network failures don't break CI builds. - Add architecture detection (amd64/arm64) for multi-arch support - Download Helm tarball and SHA-256 checksum with retry/timeout settings - Verify checksum before extraction (fails build on mismatch) - Add helm version verification step at end
…t redis-ha - Restore argocd/config/regional-cluster/hyperfleet/values.yaml to match upstream/main - Revert to openshift-online/rosa-hyperfleet-api repository - Use pinned commit f7ec7d59ed8523bc66277cce3f4814e0dee5fa83 - Fix chart path to hyperfleet-operator/charts - Add explicit redis-ha.enabled: true in argocd/config/shared/argocd/values.yaml - Improves clarity (though implied by ha.enabled: true) - Preserves existing HA configuration and tolerations - Strengthen regression tests in scripts/test_render.py - Add real Jinja variables to both Go-template quote tests - Assert complete expected scan results - Verify all Go-template keywords (if/else/end) are ignored - Include full if/else/end block in double-quoted fixture Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Critical fixes: - HyperShift Job: capture curl errors in _crd_ready() (curl -sSf), fail-by-default error detection - Terraform destroy: change to on_failure=fail with preflight checks for aws/kubectl - Remove unused KARPENTER_VERSION and KARPENTER_QUEUE_URL variables Code quality improvements: - Fix if/else indentation in ecs-bootstrap ArgoCD installation block - Create shared Karpenter chart directory (argocd/config/shared/karpenter) - Replace MC/RC karpenter directories with symlinks to shared Documentation updates: - Correct FIPS documentation to reflect current state (standard Bottlerocket) - Note FIPS-validated compute coming with RHEL AMI work - Remove references to removed Karpenter variables from README Net: -119 lines, improved error handling, eliminated duplicate code Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
Skipping CI for Draft Pull Request. |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
PR needs rebase. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
9ded404 to
34279f5
Compare
|
@typeid: This pull request references ROSAENG-726 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
…cker POC) Design doc comparing two isolation models for request-serving workloads on EKS: - Option A: Karpenter dedicated nodes (A1: per-HCP subnets, A2: shared subnets) - Option B: Kata Containers microVM isolation (B1: Firecracker, B2: QEMU) Working POC of Option B1 (Kata/Firecracker) on AL2023: - kata-deploy Helm chart (upstream 3.27.0) with Firecracker runtime - Karpenter NodePool with nested virtualization and devmapper thin-pool - Validated with full KAS pods running under kata-fc Related branches: - rosa-hyperfleet-api: request_serving_nodes - hypershift: request_serving_nodes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
34279f5 to
9ba7735
Compare
Summary
docs/design/request-serving-isolation-eks.md)kata-fcRelated branches
The POC implementation spans three repos. The design doc covers multiple variants; this implementation is B1 (Firecracker) only:
spike_request_serving_nodesrequest_serving_nodesrequest_serving_nodesOpen questions
Test plan
kata-fcwith all ConfigMap/Secret mountsminAllowedscaling override🤖 Generated with Claude Code