feat: Add EKS kubeconfig authentication integration (ATMOS-157) @Benbentwo (#2149)
## what- EKS kubeconfig integration: Auto-provisions kubeconfig for linked EKS clusters during
atmos auth loginvia the integration framework atmos auth eks-tokencommand: New kubectl exec credential plugin that generates EKS bearer tokens using AWS credentials, eliminating AWS CLI dependency- Go SDK execution paths: Enhanced
atmos aws eks update-kubeconfigwith--integrationflag and direct identity-based cluster access without requiring components or stacks - Integration cleanup: Linked integrations are cleaned up during
atmos auth logout(non-fatal, doesn't block logout) - Environment composition: KUBECONFIG paths from integrations are merged via colon-separated lists with deduplication
why
- Authentication in Atmos: After
atmos auth login, users previously had to manually run AWS CLI commands to generate kubeconfig. This integrates that into the auth flow - No AWS CLI required: The kubectl exec credential plugin uses AWS SDK directly instead of shelling out to AWS CLI, improving security and eliminating deployment dependencies
- Consistent integration pattern: Follows the established ECR integration pattern, enabling future cloud-specific integrations (GCP, Azure)
- Simplified kubeconfig generation: Supports multiple modes (merge/replace/error) for flexible kubeconfig management across different workflows
references
- PRD:
docs/prd/eks-kubeconfig.md - Linear: ATMOS-157
- Related PRD: #1887 (browser-based auth), #1884 (EKS kubeconfig integration)
closes #2076
Summary by CodeRabbit
-
New Features
- AWS EKS support: new eks-token CLI (kubectl exec credential plugin), automatic kubeconfig provisioning on login, and update-kubeconfig modes including --integration/--identity
- Integrations can now provide deterministic environment variables and perform idempotent cleanup during logout
-
Documentation
- New docs, tutorial, and blog post covering EKS kubeconfig auth, eks-token, and integration configuration
-
Chores
- Updated AWS/Kubernetes-related dependencies and NOTICE license entries
-
Tests
- Extensive unit tests for EKS, token generation, kubeconfig management, integrations, and env composition
Dynamic multi-announcement bar system @osterman (#2228)
## what- Implemented a data-driven multi-announcement queue system that cycles through curated product announcements
- Users dismiss one announcement and after a 3-day cooldown, the next appears automatically
- Added 11 announcements covering key features: Reference Architecture, Atmos Pro, Native CI, AI support, Toolchain, Auth, code generation, component provisioning, locals, backends, and GitHub OIDC
- Each announcement has distinct theming (unique background color) for visual differentiation
- Swizzled the Docusaurus AnnouncementBar component to replace the single static announcement bar
why
- The previous announcement bar was static and one-time dismissible—once dismissed, it never reappeared
- Product messaging was limited to hardcoded content and couldn't evolve with features
- A deliberate queue of announcements keeps messaging fresh and intentional without becoming a changelog feed
- The cooldown between announcements respects user attention while ensuring discovery of important features
- Decoupling announcements into a data file makes it trivial to add, reorder, or update messaging without code changes
references
- Closes the gap for curated product messaging vs. static announcements
- Uses localStorage for persistence and Docusaurus's built-in anti-layout-shift mechanism
- Follows existing Atmos patterns for data-driven configuration (roadmap.js model)
Summary by CodeRabbit
-
New Features
- Reworked announcement banner: closeable, styled multi-announcement queue that persists dismissals and enforces a 3‑day cooldown.
- Announcements support rich HTML content, configurable background/text colors, and automatically advance to the next item when dismissed.
-
Chores
- Removed the previous global announcement banner configuration.
-
Documentation
- Added a Terraform docs category and updated the Terraform index metadata.