cluster resource¶
Description¶
ClusterResource manages an Amazon EKS control plane and its mutable cluster configuration.
Source: internal/service/eks/cluster_types.go:5
Example usage:
imports: {
aws-eks: 'github.com/cloudboss/unobin-library-aws//service/eks'
}
resources: {
example: aws-eks.cluster {
# Set input fields here.
}
}
Inputs¶
name
string
role-arn
string
vpc-config
object
object({
subnet-ids: list(string)
security-group-ids: optional(list(string))
endpoint-private-access: boolean
endpoint-public-access: boolean
public-access-cidrs: optional(list(string))
control-plane-egress-mode: optional(string)
})
version
optional(string)
force-update-version
optional(boolean)
bootstrap-self-managed-addons
boolean
true
access-config
optional(object)
optional(
object({
authentication-mode: optional(string)
bootstrap-cluster-creator-admin-permissions: optional(boolean)
})
)
compute-config
optional(object)
optional(
object({
enabled: boolean
node-pools: optional(list(string))
node-role-arn: optional(string)
})
)
control-plane-scaling-config
optional(object)
optional(
object({
tier: optional(string)
})
)
deletion-protection
optional(boolean)
enabled-cluster-log-types
optional(list(string))
encryption-config
optional(object)
optional(
object({
provider: object({
key-arn: string
})
resources: list(string)
})
)
kubernetes-network-config
optional(object)
optional(
object({
elastic-load-balancing: optional(
object({
enabled: boolean
})
)
ip-family: optional(string)
service-ipv4-cidr: optional(string)
})
)
outpost-config
optional(object)
optional(
object({
control-plane-instance-type: string
control-plane-placement: optional(
object({
group-name: optional(string)
spread-level: optional(string)
})
)
etcd-instance-type: optional(string)
etcd-placement: optional(
object({
spread-level: optional(string)
})
)
outpost-arns: list(string)
})
)
remote-network-config
optional(object)
optional(
object({
remote-node-networks: optional(
list(
object({
cidrs: list(string)
})
)
)
remote-pod-networks: optional(
list(
object({
cidrs: list(string)
})
)
)
})
)
storage-config
optional(object)
optional(
object({
block-storage: optional(
object({
enabled: boolean
})
)
})
)
upgrade-policy
optional(object)
optional(
object({
support-type: optional(string)
})
)
zonal-shift-config
optional(object)
optional(
object({
enabled: boolean
})
)
tags
optional(map(string))
Input Constraints¶
Field combinations
encryption-config conflicts with outpost-config.
kubernetes-network-config conflicts with outpost-config.
Compute config rules
Auto Mode requires all capabilities enabled and bootstrap add-ons disabled.
Rule logic
- When
input.compute-config.enabled == true- Require
input.kubernetes-network-config.elastic-load-balancing.enabled == true
&& input.storage-config.block-storage.enabled == true
&& input.bootstrap-self-managed-addons == false
Conditional requirement.
Rule logic
- For each
input.compute-config.node-pools ?? []- Require
@each.value == 'general-purpose'
|| @each.value == 'system'
Kubernetes network config rules
Auto Mode requires all capabilities enabled and bootstrap add-ons disabled.
Rule logic
- When
input.kubernetes-network-config.elastic-load-balancing.enabled == true- Require
input.compute-config.enabled == true
&& input.storage-config.block-storage.enabled == true
&& input.bootstrap-self-managed-addons == false
Conditional requirement.
Rule logic
- When
input.kubernetes-network-config.ip-family != null- Require
input.kubernetes-network-config.ip-family == 'ipv4'
|| input.kubernetes-network-config.ip-family == 'ipv6'
Storage config rules
Auto Mode requires all capabilities enabled and bootstrap add-ons disabled.
Rule logic
- When
input.storage-config.block-storage.enabled == true- Require
input.compute-config.enabled == true
&& input.kubernetes-network-config.elastic-load-balancing.enabled == true
&& input.bootstrap-self-managed-addons == false
Access config rules
Conditional requirement.
Rule logic
- When
input.access-config.authentication-mode != null- Require
input.access-config.authentication-mode == 'CONFIG_MAP'
|| input.access-config.authentication-mode == 'API'
|| input.access-config.authentication-mode == 'API_AND_CONFIG_MAP'
Control plane scaling config rules
Conditional requirement.
Rule logic
- When
input.control-plane-scaling-config.tier != null- Require
input.control-plane-scaling-config.tier == 'standard'
|| input.control-plane-scaling-config.tier == 'tier-xl'
|| input.control-plane-scaling-config.tier == 'tier-2xl'
|| input.control-plane-scaling-config.tier == 'tier-4xl'
|| input.control-plane-scaling-config.tier == 'tier-8xl'
|| input.control-plane-scaling-config.tier == 'tier-ultra'
Enabled cluster log types rules
Conditional requirement.
Rule logic
- For each
input.enabled-cluster-log-types ?? []- Require
@each.value == 'api'
|| @each.value == 'audit'
|| @each.value == 'authenticator'
|| @each.value == 'controllerManager'
|| @each.value == 'scheduler'
Encryption config rules
Conditional requirement.
Rule logic
- For each
input.encryption-config.resources ?? []- Require
@each.value == 'secrets'
Upgrade policy rules
Conditional requirement.
Rule logic
- When
input.upgrade-policy.support-type != null- Require
input.upgrade-policy.support-type == 'STANDARD'
|| input.upgrade-policy.support-type == 'EXTENDED'
Vpc config rules
Conditional requirement.
Rule logic
- When
input.vpc-config.control-plane-egress-mode != null- Require
input.vpc-config.control-plane-egress-mode == 'AWS_MANAGED'
|| input.vpc-config.control-plane-egress-mode == 'CUSTOMER_ROUTED'
Conditional requirement.
Rule logic
- When
input.vpc-config.public-access-cidrs != null- Require
@core.length(input.vpc-config.public-access-cidrs) >= 1
Remote network config rules
Conditional requirement.
Rule logic
- When
input.remote-network-config.remote-node-networks != null- Require
@core.length(input.remote-network-config.remote-node-networks) >= 1
Conditional requirement.
Rule logic
- When
input.remote-network-config.remote-pod-networks != null- Require
@core.length(input.remote-network-config.remote-pod-networks) >= 1
Outputs¶
name
string
arn
string
certificate-authority-data
string
cluster-id
optional(string)
created-at
string
endpoint
string
oidc-issuer
optional(string)
platform-version
string
status
string
version
string
ip-family
string
service-ipv4-cidr
string
service-ipv6-cidr
optional(string)
cluster-security-group-id
string
vpc-id
string