Your Kubernetes cluster is ready, your cloud account is billed, and still the infrastructure scripts groan like an old modem. Amazon EKS runs perfectly on AWS, but your IaC team uses Azure Bicep to define and standardize environments. The worlds rarely meet cleanly. Let’s fix that.
Amazon EKS gives you elastic, managed Kubernetes without having to stare at EC2 node configs. Azure Bicep, Microsoft’s declarative infrastructure language, compiles to ARM templates but feels human enough to read on its own. When teams deploy multi-cloud environments, they want to use Bicep’s clarity while provisioning and managing EKS through consistent pipelines. That’s where engineers hit the friction: how do you write reusable Bicep modules to control EKS clusters, identity, and networking without shredding AWS-style YAML?
The workflow ties together through identity and automation. You author your Bicep definitions as usual, describing the infrastructure topology, then use Azure DevOps pipelines or GitHub Actions to execute AWS CLI or CDK steps for the EKS portion. The key trick is using OpenID Connect (OIDC) federation. Azure service principals assume AWS IAM roles, granting temporary credentials without handling static keys. That keeps compliance officers calm and credentials out of Git repos.
In practice, you get a single pipeline that can spin up or tear down environments across both clouds using least-privilege access. Bicep remains the source of truth. AWS IAM and EKS supply the runtime muscle. The glue is OIDC plus a good tagging strategy across resources.
Typical best practices:
- Define one identity provider per environment to simplify token rotation.
- Embed AWS role assumptions directly in your pipeline configuration, not your IaC.
- Map Kubernetes RBAC to IAM roles for predictable access control.
- Log all create and destroy events to CloudTrail for audit coverage.
If you’re seeing cross-cloud permission errors, double-check trust policies on your OIDC provider. Nine times out of ten, the JSON document needs a claim update to match Azure’s token format.