Pulumi EKS

repository·master·Indexed 41 days ago

https://github.com/pulumi/pulumi-eks

A library providing high-level components to simplify the creation and management of Amazon EKS clusters, including control planes, managed node groups, and networking via the AWS CNI plugin. It supports advanced configurations such as EKS Auto Mode, EFA support, KMS envelope encryption for secrets, and various authentication modes (CONFIG_MAP, API, and API_AND_CONFIG_MAP).

Tokens
44.6K
Snippets
67
Records
212
Agent score
51%

What's inside Pulumi EKS

  1. Overview of Pulumi AWS EKS Components

    master

    The Pulumi EKS library provides a high-level Pulumi component designed to create and manage the resources required for an Amazon Elastic Kubernetes Service (EKS) cluster. It implements the 'Crosswalk for AWS' functionality, simplifying the orchestration of complex Kubernetes infrastructure.

    Key managed resources include:

    • EKS Cluster Control Plane: The managed Kubernetes API server.
    • Worker Nodes: Configured as node groups and managed by an AWS Auto Scaling Group.
    • AWS CNI Plugin (aws-k8s-cni): Manages pod networking within the Kubernetes cluster.
  2. Explore Pulumi EKS usage examples

    master

    The pulumi-eks repository provides a variety of examples demonstrating different ways to provision, configure, and secure Amazon EKS clusters. These examples cover networking, identity and access management (IAM), security, and node management patterns.

    Available example patterns include:
    
    - **Cluster Provisioning**: Default clusters, clusters with custom VPCs/subnet tagging, and clusters with AWS resource tags.
    - **Node Management**: AWS Managed NodeGroups, NodeGroups via CloudFormation, Fargate managed nodes, and zero-downtime node group migration.
    - **Security & RBAC**: Using AWS Roles for RBAC, using AWS Named Profiles/Providers, and securing etcd secrets using Envelope Encryption with KMS.
    - **Networking & Storage**: Custom Kubernetes Storage Classes, managing security groups, and EFA support.
    - **Identity**: Using OIDC providers with Service Accounts for Pod IAM roles.
  3. Use Pulumi Amazon Web Services (AWS) EKS Components

    master
    The pulumi-eks repository provides high-level Pulumi components for provisioning and managing Amazon Elastic Kubernetes Service (EKS) clusters. These components simplify the complexity of setting up EKS by providing abstractions for clusters, node groups, and associated networking and security configurations.
  4. Pulumi Amazon Web Services (AWS) EKS Components

    master
    This package provides high-level Pulumi components for provisioning and managing Amazon Elastic Kubernetes Service (EKS) clusters. It simplifies the creation of EKS clusters, node groups, and associated networking and security configurations.
  5. Pulumi Amazon Web Services (AWS) EKS Components Overview

    master
    The pulumi-eks package provides high-level, component-based abstractions for provisioning and managing Amazon Elastic Kubernetes Service (EKS) clusters on AWS. It simplifies the complexity of setting up VPCs, control planes, and node groups by providing ready-to-use Pulumi components.
  6. Overview of EKS Auto Mode

    master
    EKS Auto Mode is a feature that fully automates the management of compute, storage, and networking for Kubernetes clusters. When using EKS Auto Mode, the underlying infrastructure required for cluster operations—such as scaling compute resources, provisioning storage, and managing load balancers—is handled automatically by AWS EKS, reducing the manual configuration required in Pulumi.
  7. Access Cluster outputs in Node.js SDK (v3+)

    master

    In EKS v3, component properties are Output types. To avoid breaking changes when accessing optional resource properties, use the new top-level properties instead of drilling into nested objects.

    Instead of accessing nested IDs via .apply(), use these direct top-level properties on the Cluster component:

    Old Way (Requires .apply())New Top-Level PropertyDescription
    cluster.clusterSecurityGroup.idclusterSecurityGroupIdID of the cluster security group
    cluster.nodeSecurityGroup.idnodeSecurityGroupIdID of the node security group
    cluster.eksClusterIngressRule.idclusterIngressRuleIdID of the cluster ingress rule

    OIDC Access

    For IRSA (IAM Roles for Service Accounts), use these properties instead of manual OIDC derivation:

    • oidcProviderArn
    • oidcProviderUrl
    • oidcIssuer (URL without 'https://')
  8. Configure EKS Managed Addons (VPC CNI, CoreDNS, kube-proxy)

    master

    In EKS v3, vpc-cni, coredns, and kube-proxy are configured as EKS managed addons. This automates updates and removes the dependency on kubectl.

    If you need to manage these components manually, you can disable them in the cluster component configuration.

    VPC CNI Specific Changes:

    • The enableIpv6 property is removed; the component now automatically detects the IP version based on the cluster mode.
    • The image, initImage, and nodeAgentImage properties are removed; the component now automatically selects the appropriate regional image registry.
  9. Use NodeGroupV2 for modern node management

    master

    Introduced in version 0.42.0, NodeGroupV2 is a newer version of the Node Group resource. Unlike the standard Node Group, NodeGroupV2 uses Launch Templates instead of Launch Configurations, and Auto Scaling Groups instead of CloudFormation Stacks. This is intended to become the default in future releases.

    Key features of NodeGroupV2 include:

    • Support for launchTemplateTagSpecifications (added in 1.0.0).
    • Ability to pass a Cluster instance directly to the resource (added in 1.0.0).
    // Conceptual usage of NodeGroupV2
    const nodeGroup = new eks.NodeGroupV2("my-node-group", {
        cluster: myCluster,
        // ... other options
    });