{"name":"lbrlabs-eks","displayName":"LBr Labs EKS","version":"1.7.0","description":"A batteries included EKS cluster following best practices.","keywords":["eks","kubernetes","aws","lbrlabs","kind/component","category/cloud"],"repository":"https://github.com/lbrlabs/pulumi-lbrlabs-eks","logoUrl":"https://raw.githubusercontent.com/lbrlabs/pulumi-lbrlabs-eks/main/assets/amazon-eks.png","pluginDownloadURL":"github://api.github.com/lbrlabs","publisher":"lbrlabs","language":{"csharp":{"packageReferences":{"Pulumi":"3.*","Pulumi.Aws":"7.*","Pulumi.Kubernetes":"4.*"},"rootNamespace":"Lbrlabs.PulumiPackage","respectSchemaVersion":true,"liftSingleValueMethodReturns":true,"namespaces":{"lbrlabs-eks":"Eks"}},"go":{"importBasePath":"github.com/lbrlabs/pulumi-lbrlabs-eks/sdk/go/eks","liftSingleValueMethodReturns":true,"respectSchemaVersion":true,"generateResourceContainerTypes":true},"nodejs":{"respectSchemaVersion":true,"dependencies":{"@pulumi/aws":"^7.0.0","@pulumi/kubernetes":"^4.0.0","mime":"^2.0.0","minimatch":"^5.1.2"},"devDependencies":{"@types/mime":"^2.0.0","@types/node":"^18","typescript":"^4.6.2"},"packageName":"@lbrlabs/pulumi-eks"},"python":{"liftSingleValueMethodReturns":true,"packageName":"lbrlabs_pulumi_eks","respectSchemaVersion":true,"usesIOClasses":true,"requires":{"pulumi":"\u003e=3.0.0,\u003c4.0.0","pulumi-aws":"\u003e=7.0.0,\u003c8.0.0","pulumi-kubernetes":"\u003e=4.0.0,\u003c5.0.0"}}},"config":{},"types":{"lbrlabs-eks:index:BudgetConfig":{"description":"Configuration for Autoscaled Node budgets.","properties":{"duration":{"type":"string","description":"The duration during which disruptuon can happen."},"nodes":{"type":"string","description":"The maximum number of nodes that can be scaled down at any time."},"schedule":{"type":"string","description":"A cron schedule for when disruption can happen."}},"type":"object"},"lbrlabs-eks:index:DisruptionConfig":{"description":"Configuration for Autoscaled nodes disruption.","properties":{"budgets":{"type":"array","items":{"$ref":"#/types/lbrlabs-eks:index:BudgetConfig"},"description":"Budgets control the speed Karpenter can scale down nodes."},"consolidateAfter":{"type":"string","description":"The amount of time Karpenter should wait after discovering a consolidation decision. This value can currently only be set when the consolidationPolicy is 'WhenEmpty'. You can choose to disable consolidation entirely by setting the string value 'Never' here.","default":"10m"},"consolidationPolicy":{"type":"string","description":"Describes which types of Nodes Karpenter should consider for consolidation.","default":"WhenEmpty"},"expireAfter":{"type":"string","description":"The amount of time a Node can live on the cluster before being removed."}},"type":"object"},"lbrlabs-eks:index:IngressConfig":{"description":"Configuration for the ingress controller (deprecated, use nginxIngressConfig).","properties":{"additionalConfig":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional configuration for the ingress controller."},"allowSnippetAnnotations":{"type":"boolean","description":"Whether to allow snippet annotations in the ingress controller.","default":false},"controllerReplicas":{"type":"integer","description":"The number of replicas of the ingress controller.","default":1},"enableExternal":{"type":"boolean","description":"Whether to create the external-facing ingress controller.","default":true},"enableInternal":{"type":"boolean","description":"Whether to create the internal-facing ingress controller.","default":true},"enableMetrics":{"type":"boolean","description":"Enable metrics for the ingress controller.","default":false},"enableServiceMonitor":{"type":"boolean","description":"Enable the service monitor for kube-prometheus-stack.","default":false},"extraServiceAnnotations":{"type":"object","additionalProperties":{"type":"string"},"description":"Extra annotations to apply to the ingress controller service."},"nlbTargetType":{"type":"string","description":"NLB target type for NLB loadbalancers.","default":"ip"},"serviceMonitorNamespace":{"type":"string","description":"The namespace to deploy the service monitor to."}},"type":"object"},"lbrlabs-eks:index:NginxIngressConfig":{"description":"Configuration for the nginx ingress controllers.","properties":{"additionalConfig":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional configuration for the ingress controller."},"allowSnippetAnnotations":{"type":"boolean","description":"Whether to allow snippet annotations in the ingress controller.","default":false},"controllerReplicas":{"type":"integer","description":"The number of replicas of the ingress controller.","default":1},"enableExternal":{"type":"boolean","description":"Whether to create the external-facing ingress controller.","default":true},"enableInternal":{"type":"boolean","description":"Whether to create the internal-facing ingress controller.","default":true},"enableMetrics":{"type":"boolean","description":"Enable metrics for the ingress controller.","default":false},"enableServiceMonitor":{"type":"boolean","description":"Enable the service monitor for kube-prometheus-stack.","default":false},"extraServiceAnnotations":{"type":"object","additionalProperties":{"type":"string"},"description":"Extra annotations to apply to the ingress controller service."},"nlbTargetType":{"type":"string","description":"NLB target type for NLB loadbalancers.","default":"ip"},"serviceMonitorNamespace":{"type":"string","description":"The namespace to deploy the service monitor to."}},"type":"object"},"lbrlabs-eks:index:Requirement":{"description":"Represents a single requirement with key, operator, and values.","properties":{"key":{"type":"string","description":"The key of the requirement."},"operator":{"type":"string","description":"The operator for the requirement (e.g., In, Gt)."},"values":{"type":"array","items":{"type":"string"},"description":"The list of values for the requirement."}},"type":"object"},"lbrlabs-eks:index:Taint":{"description":"Represents a taint for a karpenter node.","properties":{"effect":{"type":"array","items":{"type":"string"},"description":"The effect of the taint."},"key":{"type":"string","description":"The key of the taint."},"value":{"type":"string","description":"The value of the taint."}},"type":"object"},"lbrlabs-eks:index:VpcCniConfig":{"description":"Configuration for the Amazon VPC CNI add-on.","properties":{"enableNetworkPolicy":{"type":"boolean","description":"Whether to enable Amazon EKS network policy support in the Amazon VPC CNI add-on."},"nodeAgent":{"$ref":"#/types/lbrlabs-eks:index:VpcCniNodeAgentConfig","description":"Configuration for the Amazon VPC CNI node agent used by network policy support."}},"type":"object"},"lbrlabs-eks:index:VpcCniNodeAgentConfig":{"description":"Configuration for the Amazon VPC CNI node agent.","properties":{"enableCloudWatchLogs":{"type":"boolean","description":"Whether to enable CloudWatch logging for the Amazon VPC CNI node agent."},"enablePolicyEventLogs":{"type":"boolean","description":"Whether to enable Amazon VPC CNI network policy event logs from the node agent."},"healthProbeBindAddr":{"type":"integer","description":"Port used by the Amazon VPC CNI node agent health probe endpoint."},"metricsBindAddr":{"type":"integer","description":"Port used by the Amazon VPC CNI node agent metrics endpoint."}},"type":"object"}},"provider":{},"resources":{"lbrlabs-eks:index:AttachedFargateProfile":{"properties":{"profile":{"$ref":"/aws/v6.38.1/schema.json#/resources/aws:eks%2FfargateProfile:FargateProfile"},"role":{"$ref":"/aws/v6.38.1/schema.json#/resources/aws:iam%2Frole:Role"}},"required":["role","profile"],"inputProperties":{"clusterName":{"type":"string","description":"The name of the cluster to assign the fargate profile to."},"selectors":{"type":"array","items":{"$ref":"/aws/v6.38.1/schema.json#/types/aws:eks%2FFargateProfileSelector:FargateProfileSelector"}},"subnetIds":{"type":"array","items":{"type":"string"},"description":"The subnet IDs to use for the fargate profile."},"tags":{"type":"object","additionalProperties":{"type":"string"},"description":"Key-value map for tags to apply to Fargate Profile."}},"requiredInputs":["clusterName","subnetIds","selectors"],"isComponent":true},"lbrlabs-eks:index:AttachedNodeGroup":{"properties":{"nodeGroup":{"$ref":"/aws/v6.38.1/schema.json#/resources/aws:eks%2FnodeGroup:NodeGroup"},"nodeRole":{"$ref":"/aws/v6.38.1/schema.json#/resources/aws:iam%2Frole:Role"}},"required":["nodeGroup","nodeRole"],"inputProperties":{"amiType":{"type":"string","description":"The AMI Type for the nodegroup."},"capacityType":{"type":"string","description":"The capacity type of the nodegroup.","default":"ON_DEMAND"},"clusterName":{"type":"string","description":"The cluster name to attach the nodegroup tp."},"diskSize":{"type":"integer","description":"The size of the disk to attach to the nodes.","default":20},"instanceTypes":{"type":"array","items":{"type":"string"}},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Key-value map of Kubernetes labels. Only labels that are applied with the EKS API are managed by this argument. Other Kubernetes labels applied to the EKS Node Group will not be managed."},"releaseVersion":{"type":"string","description":"The release version for the nodegroup."},"scalingConfig":{"$ref":"/aws/v6.38.1/schema.json#/types/aws:eks%2FNodeGroupScalingConfig:NodeGroupScalingConfig"},"subnetIds":{"type":"array","items":{"type":"string"}},"tags":{"type":"object","additionalProperties":{"type":"string"},"description":"Key-value map of tags to apply to the nodegroup."},"taints":{"type":"array","items":{"$ref":"/aws/v6.38.1/schema.json#/types/aws:eks%2FNodeGroupTaint:NodeGroupTaint"}}},"requiredInputs":["clusterName","subnetIds"],"isComponent":true},"lbrlabs-eks:index:AutoscaledNodeGroup":{"inputProperties":{"amiFamily":{"type":"string","description":"AMI family for the node group."},"amiId":{"type":"string","description":"AMI ID for the node group."},"annotations":{"type":"object","additionalProperties":{"type":"string"},"description":"Annotations to apply to the node group."},"diskSize":{"type":"string","description":"Disk size for the node group.","default":"20Gi"},"disruption":{"$ref":"#/types/lbrlabs-eks:index:DisruptionConfig"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Key-value map of Kubernetes labels. Only labels that are applied with the EKS API are managed by this argument. Other Kubernetes labels applied to the EKS Node Group will not be managed."},"nodeClassApiVersion":{"type":"string","description":"Karpenter NodePool API version.","default":"karpenter.k8s.aws/v1"},"nodePoolApiVersion":{"type":"string","description":"Karpenter NodePool API version.","default":"karpenter.sh/v1"},"nodeRole":{"type":"string","description":"Node role for the node group."},"requirements":{"type":"array","items":{"$ref":"#/types/lbrlabs-eks:index:Requirement"},"description":"List of requirements for the node group."},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"List of security group selector terms for the node group."},"subnetIds":{"type":"array","items":{"type":"string"},"description":"List of subnet selector terms for the node group."},"taints":{"type":"array","items":{"$ref":"/kubernetes/v4.13.1/schema.json#/types/kubernetes:core%2Fv1:Taint"},"description":"Optional node taints."}},"requiredInputs":["nodeRole","diskSize","subnetIds","securityGroupIds","requirements"],"isComponent":true},"lbrlabs-eks:index:Cluster":{"properties":{"clusterName":{"type":"string","description":"The cluster name"},"controlPlane":{"$ref":"/aws/v6.38.1/schema.json#/resources/aws:eks%2Fcluster:Cluster","description":"The Cluster control plane"},"karpenterNodeRole":{"$ref":"/aws/v6.38.1/schema.json#/resources/aws:iam%2Frole:Role","description":"The role created for karpenter nodes."},"karpenterQueueName":{"type":"string","description":"Name of the SQS queue that Karpenter uses for interruption events."},"karpenterRole":{"$ref":"/aws/v6.38.1/schema.json#/resources/aws:iam%2Frole:Role","description":"The role created for the karpenter controller."},"kubeconfig":{"type":"string","description":"The kubeconfig for this cluster."},"oidcProvider":{"$ref":"/aws/v6.38.1/schema.json#/resources/aws:iam%2FopenIdConnectProvider:OpenIdConnectProvider","description":"The OIDC provider for this cluster."},"systemNodes":{"$ref":"/aws/v6.38.1/schema.json#/resources/aws:eks%2FnodeGroup:NodeGroup","description":"The system node group."}},"required":["clusterName","controlPlane","oidcProvider","kubeconfig","systemNodes"],"inputProperties":{"adminAccessPrincipal":{"type":"string","description":"The ARN of the AWS principal that should get admin access."},"certManagerVersion":{"type":"string","description":"The version of the cert-manager helm chart to deploy."},"certificateArn":{"type":"string","description":"The ARN of the certificate to use for the ingress controller."},"clusterEndpointPrivateAccess":{"type":"boolean","description":"Indicates whether or not the Amazon EKS private API server endpoint is enabled.","default":false},"clusterEndpointPublicAccess":{"type":"boolean","description":"Indicates whether or not the Amazon EKS public API server endpoint is enabled.","default":true},"clusterSubnetIds":{"type":"array","items":{"type":"string"}},"clusterVersion":{"type":"string","description":"The version of the EKS cluster to create."},"eksIamAuthControllerVersion":{"type":"string","description":"The version of the eks-iam-auth-controller helm chart to deploy."},"enableCertManager":{"type":"boolean","plain":true,"description":"Whether to enable cert-manager with route 53 integration.","default":true},"enableCloudWatchAgent":{"type":"boolean","plain":true,"description":"Whether to enable cloudwatch container insights for EKS.","default":false},"enableExternalDns":{"type":"boolean","plain":true,"description":"Whether to enable external dns with route 53 integration.","default":true},"enableExternalIngress":{"type":"boolean","plain":true,"description":"Whether to create an ingress controller for external traffic. (deprecated, use nginxIngressConfig.enableExternal)","default":true},"enableInternalIngress":{"type":"boolean","plain":true,"description":"Whether to create an ingress controller for internal traffic. (deprecated, use nginxIngressConfig.enableInternal)","default":true},"enableKarpenter":{"type":"boolean","plain":true,"description":"Whether to enable karpenter.","default":true},"enableOtel":{"type":"boolean","plain":true,"description":"Whether to enable the OTEL Distro for EKS.","default":false},"enabledClusterLogTypes":{"type":"array","items":{"type":"string"}},"externalDNSVersion":{"type":"string","description":"The version of the external-dns helm chart to deploy."},"ingressConfig":{"$ref":"#/types/lbrlabs-eks:index:IngressConfig","description":"Configuration for the ingress controller. (deprecated, use nginxIngressConfig)"},"karpenterVersion":{"type":"string","description":"The version of karpenter to deploy.","default":"0.36.2"},"lbType":{"type":"string","description":"The type of loadbalancer to provision.","default":"nlb"},"letsEncryptEmail":{"type":"string","plain":true,"description":"The email address to use to issue certificates from Lets Encrypt."},"nginxIngressConfig":{"$ref":"#/types/lbrlabs-eks:index:NginxIngressConfig","description":"Configuration for the nginx ingress controllers."},"nginxIngressRegistry":{"type":"string","description":"The container registry to pull images from.","default":"registry.k8s.io"},"nginxIngressTag":{"type":"string","description":"The tag to use for the nginx ingress controller images.","default":"v1.12.0"},"nginxIngressVersion":{"type":"string","description":"The version of the nginx ingress controller helm chart to deploy."},"systemNodeDesiredCount":{"type":"number","description":"The initial number of nodes in the system autoscaling group."},"systemNodeInstanceTypes":{"type":"array","items":{"type":"string"}},"systemNodeMaxCount":{"type":"number","description":"The maximum number of nodes in the system autoscaling group."},"systemNodeMinCount":{"type":"number","description":"The minimum number of nodes in the system autoscaling group."},"systemNodeSubnetIds":{"type":"array","items":{"type":"string"}},"tags":{"type":"object","additionalProperties":{"type":"string"},"description":"Key-value map of tags to apply to the cluster."},"vpcCniConfig":{"$ref":"#/types/lbrlabs-eks:index:VpcCniConfig","description":"Configuration for the Amazon VPC CNI add-on, including optional network policy support."}},"requiredInputs":["clusterSubnetIds","systemNodeSubnetIds"],"isComponent":true},"lbrlabs-eks:index:IamRoleMapping":{"inputProperties":{"groups":{"type":"array","items":{"type":"string"},"description":"An array of groups to map the IAM role to."},"roleArn":{"type":"string","description":"The arn of the role to map to a Kubernetes group."},"username":{"type":"string","description":"The username to assign to the rolemapping."}},"requiredInputs":["roleArn","username","groups"],"isComponent":true},"lbrlabs-eks:index:IamServiceAccountRole":{"properties":{"role":{"$ref":"/aws/v6.38.1/schema.json#/resources/aws:iam%2Frole:Role"}},"required":["role"],"inputProperties":{"namespaceName":{"type":"string","description":"The namespace to create the service account in."},"oidcProviderArn":{"type":"string","description":"The arn of the OIDC provider attached to your EKS cluster."},"oidcProviderUrl":{"type":"string","description":"The URL of the OIDC provider attached to your EKS cluster."},"serviceAccountName":{"type":"string","description":"The name of the service account to bind to the role"},"tags":{"type":"object","additionalProperties":{"type":"string"},"description":"Key-value map of tags to apply to the service account."}},"requiredInputs":["oidcProviderArn","oidcProviderUrl","namespaceName","serviceAccountName"],"isComponent":true}}}