aws / aws/containers-roadmap

[EKS] [request]: Bring Start-EKSBootstrap.ps1 to feature parity with its Linux equivalent

Open
#870 2 comments 16 reactions 0 assignees View on GitHub
EKS Proposed
Dominant language
Shell
Stars
5.4k
Forks
334
PR merge metrics
No merged PRs in 30d

Description

### Community Note

* Please vote on this issue by adding a 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to the original issue to help the community and maintainers prioritize this request
* Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
* If you are interested in working on this issue or have submitted a pull request, please leave a comment

**Tell us about your request**

The EKS bootstrap script for Windows nodes fell out of parity compared to its Linux equivalent. I would like to request for parity to be restored.

**Which service(s) is this request for?**

This is for EKS' Windows support.

**Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard?**

The current implementation of the Windows EKS boostrap script, `Start-EKSBootstrap.ps1`, is missing many of the parameters that can be passed to its Linux equivalent, [`bootstrap.sh`](https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh).

This makes it more challenging to, for example, configure Docker via its `daemon.json` file, on Windows EKS nodes, than it is on Linux nodes.

**Are you currently working around this issue?**

While it is possible to execute things _before_ and _after_ the bootstrap script, its scope of responsibility is so wide that for some use-cases, that is simply not an option.

**Additional context**

The `Start-EKSBootstrap.ps1` script's header contains the following line:

```
EKS bootstrap script. Should maintain close parity with https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh
```

It seems like the _intent_ is for parity to be achieved, but as currently implemented, it is not.

For comparison, here are the parameters defined for Linux (from `bootstrap.sh`):

```
function print_help {
echo "usage: $0 [options] "
echo "Bootstraps an instance into an EKS cluster"
echo ""
echo "-h,--help print this help"
echo "--use-max-pods Sets --max-pods for the kubelet when true. (default: true)"
echo "--b64-cluster-ca The base64 encoded cluster CA content. Only valid when used with --apiserver-endpoint. Bypasses calling \"aws eks describe-cluster\""
echo "--apiserver-endpoint The EKS cluster API Server endpoint. Only valid when used with --b64-cluster-ca. Bypasses calling \"aws eks describe-cluster\""
echo "--kubelet-extra-args Extra arguments to add to the kubelet. Useful for adding labels or taints."
echo "--enable-docker-bridge Restores the docker default bridge network. (default: false)"
echo "--aws-api-retry-attempts Number of retry attempts for AWS API call (DescribeCluster) (default: 3)"
echo "--docker-config-json The contents of the /etc/docker/daemon.json file. Useful if you want a custom config differing from the default one in the AMI"
echo "--dns-cluster-ip Overrides the IP address to use for DNS queries within the cluster. Defaults to 10.100.0.10 or 172.20.0.10 based on the IP address of the primary interface"
}
```

And here are the parameters accepted by `Start-EKSBoostrap.ps1`:

```
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string]$EKSClusterName,
[string]$KubeletExtraArgs,
[string]$Endpoint,
[string]$APIServerEndpoint,
[string]$Base64ClusterCA
)
```

Contributor guide

Open the contributing guide

Research direction

Compare Start-EKSBootstrap.ps1 with files/bootstrap.sh, focusing on the Linux options listed in the issue and the parameters currently accepted by the PowerShell script. Trace how the bootstrap scripts configure EKS nodes, including Docker settings, and treat the work as complete when the Windows script provides equivalent documented options while retaining its Windows-specific behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, kubernetes, powershell, shell
Domain
cloud, devops, operating-systems
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
40/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.