Skip to content

Commit cb15b7c

Browse files
committed
Add server-tls-bootstrap and ecr-credential-provider configuration to Hybrid Nodes Bottlerocket settings
1 parent 627c405 commit cb15b7c

File tree

1 file changed

+55
-4
lines changed

1 file changed

+55
-4
lines changed

latest/ug/nodes/hybrid-nodes-bottlerocket.adoc

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ include::../attributes.txt[]
1010
Connect hybrid nodes running Bottlerocket to an Amazon EKS cluster.
1111
--
1212

13-
This topic describes how to connect hybrid nodes running Bottlerocket to an Amazon EKS cluster. link:bottlerocket/[Bottlerocket,type="marketing"] is an open source Linux distribution that is sponsored and supported by {aws}. Bottlerocket is purpose-built for hosting container workloads. With Bottlerocket, you can improve the availability of containerized deployments and reduce operational costs by automating updates to your container infrastructure. Bottlerocket includes only the essential software to run containers, which improves resource usage, reduces security threats, and lowers management overhead.
13+
This topic describes how to connect hybrid nodes running Bottlerocket to an Amazon EKS cluster. link:bottlerocket/[Bottlerocket,type="marketing"] is an open source Linux distribution that is sponsored and supported by {aws}. Bottlerocket is purpose-built for hosting container workloads. With Bottlerocket, you can improve the availability of containerized deployments and reduce operational costs by automating updates to your container infrastructure. Bottlerocket includes only the essential software to run containers, which improves resource usage, reduces security threats, and lowers management overhead.
1414

15-
Only VMware variants of Bottlerocket version v1.37.0 and above are supported with EKS Hybrid Nodes. VMware variants of Bottlerocket are available for Kubernetes versions v1.28 and above. The OS images for these variants include the kubelet, containerd, aws-iam-authenticator and other software prerequisites for EKS Hybrid Nodes. You can configure these components using a Bottlerocket https://github.com/bottlerocket-os/bottlerocket?tab=readme-ov-file#settings[settings] file that includes base64 encoded user-data for the Bottlerocket bootstrap and admin containers. Configuring these settings enables Bottlerocket to use your hybrid nodes credentials provider to authenticate hybrid nodes to your cluster. After your hybrid nodes join the cluster, they will appear with status `Not Ready` in the Amazon EKS console and in Kubernetes-compatible tooling such as `kubectl`. After completing the steps on this page, proceed to <<hybrid-nodes-cni>> to make your hybrid nodes ready to run applications.
15+
Only VMware variants of Bottlerocket version v1.37.0 and above are supported with EKS Hybrid Nodes. VMware variants of Bottlerocket are available for Kubernetes versions v1.28 and above. The OS images for these variants include the kubelet, containerd, aws-iam-authenticator and other software prerequisites for EKS Hybrid Nodes. You can configure these components using a Bottlerocket https://github.com/bottlerocket-os/bottlerocket#settings[settings] file that includes base64 encoded user-data for the Bottlerocket bootstrap and admin containers. Configuring these settings enables Bottlerocket to use your hybrid nodes credentials provider to authenticate hybrid nodes to your cluster. After your hybrid nodes join the cluster, they will appear with status `Not Ready` in the Amazon EKS console and in Kubernetes-compatible tooling such as `kubectl`. After completing the steps on this page, proceed to <<hybrid-nodes-cni>> to make your hybrid nodes ready to run applications.
1616

1717
== Prerequisites
1818

@@ -25,7 +25,12 @@ Before connecting hybrid nodes to your Amazon EKS cluster, make sure you have co
2525

2626
== Step 1: Create the Bottlerocket settings TOML file
2727

28-
To configure Bottlerocket for hybrid nodes, you need to create a `settings.toml` file with the necessary configuration. The contents of the TOML file will differ based on the credential provider you are using (SSM or IAM Roles Anywhere). This file will be passed as user data when provisioning the Bottlerocket instance.
28+
To configure Bottlerocket for hybrid nodes, you need to create a `settings.toml` file with the necessary configuration. The contents of the TOML file will differ based on the credential provider you are using (SSM or IAM Roles Anywhere). This file will be passed as user data when provisioning the Bottlerocket instance.
29+
30+
[NOTE]
31+
====
32+
The TOML files provided below only represent the minimum required settings for initializing a Bottlerocket VMWare machine as a node on an EKS cluster. Bottlerocket provides a wide range of settings to address several different use cases, so for further configuration options beyond hybrid node initialization, please refer to the https://bottlerocket.dev/en[Bottlerocket documentation] for the comprehensive list of all documented settings for the Bottlerocket version you are using (for example, https://bottlerocket.dev/en/os/1.51.x/api/settings-index[here] are all the settings available for Bottlerocket 1.51.x).
33+
====
2934

3035
=== SSM
3136

@@ -41,13 +46,36 @@ hostname-override = "<hostname>"
4146
provider-id = "eks-hybrid:///<region>/<cluster-name>/<hostname>"
4247
authentication-mode = "aws"
4348
cloud-provider = ""
49+
server-tls-bootstrap = true
4450
4551
[settings.network]
4652
hostname = "<hostname>"
4753
4854
[settings.aws]
4955
region = "<region>"
5056
57+
[settings.kubernetes.credential-providers.ecr-credential-provider]
58+
enabled = true
59+
cache-duration = "12h"
60+
image-patterns = [
61+
"*.dkr.ecr.*.amazonaws.com",
62+
"*.dkr.ecr.*.amazonaws.com.cn",
63+
"*.dkr.ecr.*.amazonaws.eu",
64+
"",
65+
"",
66+
"*.dkr.ecr-fips.*.amazonaws.com",
67+
"*.dkr.ecr-fips.*.amazonaws.eu",
68+
"",
69+
"",
70+
"",
71+
"",
72+
"",
73+
"",
74+
"",
75+
"",
76+
"public.ecr.aws"
77+
]
78+
5179
[settings.kubernetes.node-labels]
5280
"eks.amazonaws.com/compute-type" = "hybrid"
5381
"eks.amazonaws.com/hybrid-credential-provider" = "ssm"
@@ -106,6 +134,7 @@ hostname-override = "<hostname>"
106134
provider-id = "eks-hybrid:///<region>/<cluster-name>/<hostname>"
107135
authentication-mode = "aws"
108136
cloud-provider = ""
137+
server-tls-bootstrap = true
109138
110139
[settings.network]
111140
hostname = "<hostname>"
@@ -114,6 +143,28 @@ hostname = "<hostname>"
114143
region = "<region>"
115144
config = "<base64-encoded-aws-config-file>"
116145
146+
[settings.kubernetes.credential-providers.ecr-credential-provider]
147+
enabled = true
148+
cache-duration = "12h"
149+
image-patterns = [
150+
"*.dkr.ecr.*.amazonaws.com",
151+
"*.dkr.ecr.*.amazonaws.com.cn",
152+
"*.dkr.ecr.*.amazonaws.eu",
153+
"",
154+
"",
155+
"*.dkr.ecr-fips.*.amazonaws.com",
156+
"*.dkr.ecr-fips.*.amazonaws.eu",
157+
"",
158+
"",
159+
"",
160+
"",
161+
"",
162+
"",
163+
"",
164+
"",
165+
"public.ecr.aws"
166+
]
167+
117168
[settings.kubernetes.node-labels]
118169
"eks.amazonaws.com/compute-type" = "hybrid"
119170
"eks.amazonaws.com/hybrid-credential-provider" = "iam-ra"
@@ -194,7 +245,7 @@ govc vm.create \
194245
-template=<template-name> \
195246
<vm-name>
196247
197-
govc vm.change
248+
govc vm.change
198249
-vm <vm-name> \
199250
-e guestinfo.userdata="$(base64 -w0 settings.toml)" \
200251
-e guestinfo.userdata.encoding="base64"

0 commit comments

Comments
 (0)