Skip to content

e2e/operator: Refactor encryption provider interface and fix single-cluster setup#633

Draft
nameisbhaskar wants to merge 1 commit into
masterfrom
bhaskar/interface-changes-only
Draft

e2e/operator: Refactor encryption provider interface and fix single-cluster setup#633
nameisbhaskar wants to merge 1 commit into
masterfrom
bhaskar/interface-changes-only

Conversation

@nameisbhaskar
Copy link
Copy Markdown
Contributor

Introduce clean interface-based architecture for encryption at rest testing:

Core Changes:

  • Create encryption.Provider interface with platform-specific config
  • Define encryption.PlatformConfig (Platform, RequiresCredentialsSecret, etc.)
  • Add GetEncryptionProvider() to CloudProvider interface
  • Auto-set encryption provider in ProviderFactory

Fix: Cloud-Specific Config Flow

  • Problem: Platform/credentials hardcoded to "UNKNOWN_KEY_TYPE"
  • Solution: EncryptionAtRestConfig() dynamically retrieves from provider
  • Platform and cmekCredentialsSecretName now flow correctly to helm charts
  • Enables AWS_KMS, GCP_CLOUD_KMS, UNKNOWN_KEY_TYPE support

Additional Improvements:

  • Extract shared SetupFileBasedEncryptionSecrets() utility
  • Remove unused IsMultiRegion field and OperatorUseCases interface
  • Add utils.GetProviderFromEnv() and utils.GenerateClusterNames()
  • Better cluster naming: PR numbers in CI, usernames locally

Fix Kind single-cluster deployments timing out during infrastructure setup:

Problem: CoreDNS LoadBalancer service waited for IP without MetalLB Solution: Skip MetalLB and CoreDNS for single-cluster (uses default DNS)

Single-cluster now completes setup in seconds instead of timing out.

  • tests/e2e/operator/encryption/types.go: Provider interface
  • tests/e2e/operator/infra/{provider,local,gcp}.go: Implementations
  • tests/e2e/operator/region.go: Fix EncryptionAtRestConfig()
  • tests/e2e/operator/utils/cluster_naming.go: New utilities
  • tests/e2e/operator/*/test.go: Use new architecture

…luster setup

Introduce clean interface-based architecture for encryption at rest testing:

**Core Changes:**
- Create encryption.Provider interface with platform-specific config
- Define encryption.PlatformConfig (Platform, RequiresCredentialsSecret, etc.)
- Add GetEncryptionProvider() to CloudProvider interface
- Auto-set encryption provider in ProviderFactory

**Fix: Cloud-Specific Config Flow**
- Problem: Platform/credentials hardcoded to "UNKNOWN_KEY_TYPE"
- Solution: EncryptionAtRestConfig() dynamically retrieves from provider
- Platform and cmekCredentialsSecretName now flow correctly to helm charts
- Enables AWS_KMS, GCP_CLOUD_KMS, UNKNOWN_KEY_TYPE support

**Additional Improvements:**
- Extract shared SetupFileBasedEncryptionSecrets() utility
- Remove unused IsMultiRegion field and OperatorUseCases interface
- Add utils.GetProviderFromEnv() and utils.GenerateClusterNames()
- Better cluster naming: PR numbers in CI, usernames locally

Fix Kind single-cluster deployments timing out during infrastructure setup:

**Problem:** CoreDNS LoadBalancer service waited for IP without MetalLB
**Solution:** Skip MetalLB and CoreDNS for single-cluster (uses default DNS)

Single-cluster now completes setup in seconds instead of timing out.

- tests/e2e/operator/encryption/types.go: Provider interface
- tests/e2e/operator/infra/{provider,local,gcp}.go: Implementations
- tests/e2e/operator/region.go: Fix EncryptionAtRestConfig()
- tests/e2e/operator/utils/cluster_naming.go: New utilities
- tests/e2e/operator/*/test.go: Use new architecture

Co-Authored-By: roachdev-claude <roachdev-claude-bot@cockroachlabs.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant