Git Product home page Git Product logo

eksctl's Introduction

eksctl - The official CLI for Amazon EKS ! eksctl

Go Report Card

eksctl is a simple CLI tool for creating clusters on EKS - Amazon's new managed Kubernetes service for EC2. It is written in Go, and uses CloudFormation.

You can create a cluster in minutes with just one command – eksctl create cluster!

Gophers: E, K, S, C, T, & L

Need help? Join Eksctl Slack.

Installation

eksctl is available to install from official releases as described below. We recommend that you install eksctl from only the official GitHub releases. You may opt to use a third-party installer, but please be advised that AWS does not maintain nor support these methods of installation. Use them at your own discretion.

Prerequisite

You will need to have AWS API credentials configured. What works for AWS CLI or any other tools (kops, Terraform, etc.) should be sufficient. You can use ~/.aws/credentials file or environment variables. For more information read AWS documentation.

You will also need AWS IAM Authenticator for Kubernetes command (either aws-iam-authenticator or aws eks get-token (available in version 1.16.156 or greater of AWS CLI) in your PATH.

The IAM account used for EKS cluster creation should have these minimal access levels.

AWS Service Access Level
CloudFormation Full Access
EC2 Full: Tagging Limited: List, Read, Write
EC2 Auto Scaling Limited: List, Write
EKS Full Access
IAM Limited: List, Read, Write, Permissions Management
Systems Manager Limited: List, Read

The inline policy json is listed in Minimal IAM Policies.

For Unix

To download the latest release, run:

# for ARM systems, set ARCH to: `arm64`, `armv6` or `armv7`
ARCH=amd64
PLATFORM=$(uname -s)_$ARCH

curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"

# (Optional) Verify checksum
curl -sL "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check

tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz

sudo mv /tmp/eksctl /usr/local/bin

For Windows

Direct download (latest release): AMD64/x86_64 - ARMv6 - ARMv7 - ARM64

Make sure to unzip the archive to a folder in the PATH variable.

Optionally, verify the checksum:

  1. Download the checksum file: latest
  2. Use Command Prompt to manually compare CertUtil's output to the checksum file downloaded.
REM Replace amd64 with armv6, armv7 or arm64
CertUtil -hashfile eksctl_Windows_amd64.zip SHA256
  1. Using PowerShell to automate the verification using the -eq operator to get a True or False result:
# Replace amd64 with armv6, armv7 or arm64
 (Get-FileHash -Algorithm SHA256 .\eksctl_Windows_amd64.zip).Hash -eq ((Get-Content .\eksctl_checksums.txt) -match 'eksctl_Windows_amd64.zip' -split ' ')[0]

Using Git Bash

# for ARM systems, set ARCH to: `arm64`, `armv6` or `armv7`
ARCH=amd64
PLATFORM=windows_$ARCH

curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.zip"

# (Optional) Verify checksum
curl -sL "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check

unzip eksctl_$PLATFORM.zip -d $HOME/bin

rm eksctl_$PLATFORM.zip

The eksctl executable is placed in $HOME/bin, which is in $PATH from Git Bash.

Docker

For every release and RC a container image is pushed to ECR repository public.ecr.aws/eksctl/eksctl. Learn more about the usage on ECR Public Gallery - eksctl. For example,

docker run --rm -it public.ecr.aws/eksctl/eksctl version

Third-Party Installers (Not Recommended)

For MacOS

Homebrew

brew tap weaveworks/tap
brew install weaveworks/tap/eksctl

MacPorts

port install eksctl

For Windows

chocolatey

choco install eksctl

scoop

scoop install eksctl

Basic usage

To create a basic cluster, run:

eksctl create cluster

A cluster will be created with default parameters

  • exciting auto-generated name, e.g. "fabulous-mushroom-1527688624"
  • 2x m5.large nodes (this instance type suits most common use-cases, and is good value for money)
  • use official AWS EKS AMI
  • us-west-2 region
  • dedicated VPC (check your quotas)

Once you have created a cluster, you will find that cluster credentials were added in ~/.kube/config. If you have kubectl as well as aws-iam-authenticator commands in your PATH, you should be able to use kubectl. You will need to make sure to use the same AWS API credentials for this also. Check EKS docs for instructions.

Example output:

 $ eksctl create cluster
[ℹ]  eksctl version 0.143.0
[ℹ]  using region eu-west-2
[ℹ]  setting availability zones to [eu-west-2a eu-west-2c eu-west-2b]
[ℹ]  subnets for eu-west-2a - public:192.168.0.0/19 private:192.168.96.0/19
[ℹ]  subnets for eu-west-2c - public:192.168.32.0/19 private:192.168.128.0/19
[ℹ]  subnets for eu-west-2b - public:192.168.64.0/19 private:192.168.160.0/19
[ℹ]  nodegroup "ng-ac4c787c" will use "" [AmazonLinux2/1.25]
[ℹ]  using Kubernetes version 1.25
[ℹ]  creating EKS cluster "attractive-sculpture-1685534556" in "eu-west-2" region with managed nodes
[ℹ]  will create 2 separate CloudFormation stacks for cluster itself and the initial managed nodegroup
[ℹ]  if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=eu-west-2 --cluster=attractive-sculpture-1685534556'
[ℹ]  Kubernetes API endpoint access will use default of {publicAccess=true, privateAccess=false} for cluster "attractive-sculpture-1685534556" in "eu-west-2"
[ℹ]  CloudWatch logging will not be enabled for cluster "attractive-sculpture-1685534556" in "eu-west-2"
[ℹ]  you can enable it with 'eksctl utils update-cluster-logging --enable-types={SPECIFY-YOUR-LOG-TYPES-HERE (e.g. all)} --region=eu-west-2 --cluster=attractive-sculpture-1685534556'
[ℹ]  
2 sequential tasks: { create cluster control plane "attractive-sculpture-1685534556", 
    2 sequential sub-tasks: { 
        wait for control plane to become ready,
        create managed nodegroup "ng-ac4c787c",
    } 
}
[ℹ]  building cluster stack "eksctl-attractive-sculpture-1685534556-cluster"
[ℹ]  deploying stack "eksctl-attractive-sculpture-1685534556-cluster"
[ℹ]  waiting for CloudFormation stack "eksctl-attractive-sculpture-1685534556-cluster"
[ℹ]  building managed nodegroup stack "eksctl-attractive-sculpture-1685534556-nodegroup-ng-ac4c787c"
[ℹ]  deploying stack "eksctl-attractive-sculpture-1685534556-nodegroup-ng-ac4c787c"
[ℹ]  waiting for CloudFormation stack "eksctl-attractive-sculpture-1685534556-nodegroup-ng-ac4c787c"
[ℹ]  waiting for the control plane to become ready
[✔]  all EKS cluster resources for "attractive-sculpture-1685534556" have been created
[ℹ]  nodegroup "ng-ac4c787c" has 2 node(s)
[ℹ]  node "ip-192-168-20-235.eu-west-2.compute.internal" is ready
[ℹ]  node "ip-192-168-80-49.eu-west-2.compute.internal" is ready
[ℹ]  waiting for at least 2 node(s) to become ready in "ng-ac4c787c"
[ℹ]  nodegroup "ng-ac4c787c" has 2 node(s)
[ℹ]  node "ip-192-168-20-235.eu-west-2.compute.internal" is ready
[ℹ]  node "ip-192-168-80-49.eu-west-2.compute.internal" is ready
[ℹ]  kubectl command should work with ".../.kube/config", try 'kubectl get nodes'
[✔]  EKS cluster "attractive-sculpture-1685534556" in "eu-west-2" region is ready
$

Install eksctl by following the installation instructions.

To discover the full range of capabilities that eksctl offers, visit eksctl.io.

A great starting point is the Getting Started guide.

You can find a comprehensive list of features here.

Contributions

Code contributions are very welcome. If you are interested in helping make eksctl great then see our contributing guide.

We follow the CNCF Code of Conduct.

Releases

Minor releases of eksctl should be expected every two weeks and patch releases will be made available as needed.

One or more release candidate(s) (RC) builds will be made available prior to each minor release. RC builds are intended only for testing purposes.

If you discover a potential security issue in eksctl project, please follow AWS Vulnerability Reporting process.

Do not open security related issues in the open source project.

Get in touch

Create an issue, or login to Eksctl Community Slack (#eksctl) (signup).

Logo Credits

Original Gophers drawn by Ashley McNamara, unique E, K, S, C, T & L Gopher identities had been produced with Gopherize.me.

eksctl's People

Contributors

2opremio avatar aclevername avatar adamjohnson01 avatar ajayk avatar bia avatar callisto13 avatar christopherhein avatar cpu1 avatar cristian-radu avatar d3nn avatar dependabot[bot] avatar eksctl-bot avatar errordeveloper avatar himangini avatar kschumy avatar marccarre avatar martina-if avatar michaelbeaumont avatar mumoshu avatar nikimanoledaki avatar patstrom avatar richardcase avatar rndstr avatar sayboras avatar skarlso avatar stefanprodan avatar tiberiugc avatar watany-dev avatar weaveworksbot avatar yuxiang-zhang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eksctl's Issues

ECS workload importer

It'd be interesting to experiment with doing the heavy lifting to help ECS users try moving some of their workloads to EKS. We wouldn't be able to do magic here, but it should be possible to generate manifests and put them in a git repo etc.

Node Creation Failure

How do you fix this:

$ EKS_CLUSTER_NAME='dk-cluster-1'
$ eksctl create cluster \  
 --cluster-name ${EKS_CLUSTER_NAME} \
 --kubeconfig ~/.kube/config \
 --nodes 3 \
 --ssh-public-key ~/.ssh/${EKS_CLUSTER_NAME}.id_rsa.pub
2018-06-13T10:05:48-07:00 [ℹ]  importing SSH public key "/Users/jmenchaca/.ssh/dk-cluster-1.id_rsa.pub" as "EKS-dk-cluster-1"
2018-06-13T10:05:49-07:00 [ℹ]  creating EKS cluster "dk-cluster-1"
2018-06-13T10:05:49-07:00 [ℹ]  creating VPC stack "EKS-dk-cluster-1-VPC"
2018-06-13T10:05:49-07:00 [ℹ]  creating ServiceRole stack "EKS-dk-cluster-1-ServiceRole"
2018-06-13T10:06:29-07:00 [✔]  created ServiceRole stack "EKS-dk-cluster-1-ServiceRole"
2018-06-13T10:07:20-07:00 [✔]  created VPC stack "EKS-dk-cluster-1-VPC"
2018-06-13T10:07:20-07:00 [ℹ]  creating control plane "dk-cluster-1"
2018-06-13T10:17:41-07:00 [✔]  created control plane "dk-cluster-1"
2018-06-13T10:17:41-07:00 [ℹ]  creating DefaultNodeGroup stack "EKS-dk-cluster-1-DefaultNodeGroup"
2018-06-13T10:21:22-07:00 [✔]  created DefaultNodeGroup stack "EKS-dk-cluster-1-DefaultNodeGroup"
2018-06-13T10:21:22-07:00 [✔]  all EKS cluster "dk-cluster-1" resources has been created
2018-06-13T10:21:22-07:00 [ℹ]  wrote "/Users/jmenchaca/.kube/config"
2018-06-13T10:21:27-07:00 [ℹ]  the cluster has 0 nodes
2018-06-13T10:21:27-07:00 [ℹ]  waiting for at least 3 nodes to become ready
panic: interface conversion: runtime.Object is nil, not *v1.Node

goroutine 1 [running]:
github.com/weaveworks/eksctl/pkg/eks.(*ClusterConfig).WaitForNodes(0xc4202f3d40, 0xc42057a5a0, 0x0, 0x0)
	/go/src/github.com/weaveworks/eksctl/pkg/eks/nodegroup.go:103 +0x7fa
main.doCreateCluster(0xc4202f3d40, 0xc420171cb0, 0xc420171c80)
	/go/src/github.com/weaveworks/eksctl/cmd/eksctl/create.go:153 +0x485
main.createClusterCmd.func1(0xc4201efb80, 0xc42033c700, 0x0, 0x8)
	/go/src/github.com/weaveworks/eksctl/cmd/eksctl/create.go:57 +0x2a
github.com/weaveworks/eksctl/vendor/github.com/spf13/cobra.(*Command).execute(0xc4201efb80, 0xc42033c680, 0x8, 0x8, 0xc4201efb80, 0xc42033c680)
	/go/src/github.com/weaveworks/eksctl/vendor/github.com/spf13/cobra/command.go:766 +0x2c1
github.com/weaveworks/eksctl/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x2a1cc00, 0xc420171f68, 0x1ca8d86, 0xc420171f78)
	/go/src/github.com/weaveworks/eksctl/vendor/github.com/spf13/cobra/command.go:852 +0x30a
github.com/weaveworks/eksctl/vendor/github.com/spf13/cobra.(*Command).Execute(0x2a1cc00, 0x1ff01a3, 0x1)
	/go/src/github.com/weaveworks/eksctl/vendor/github.com/spf13/cobra/command.go:800 +0x2b
main.main()
	/go/src/github.com/weaveworks/eksctl/cmd/eksctl/main.go:28 +0x2d

add a CLI option to enable policies on the worker nodes (e.g. for ECR)

we're using eksctl in jx create cluster eks and its working well - many thanks!.

However it'd be even more awesome if we could add a CLI option to be able to enable the arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPowerUser policy on the worker nodes; so that nodes are able to push to ECR. Then we can use ECR OOTB in Jenkins X on clusters created via eksctl

MFA errors when checking dependencies

If you are using MFA there are 2 errors reported from CheckAllCommands. Specifically when getting the kubectl version and then when checking the server version:

2018-06-19T17:20:17+01:00 [▶]  kubectl: "/usr/local/bin/kubectl"
2018-06-19T17:20:17+01:00 [▶]  clientVersion="v1.10.2" err="Assume Role MFA token code: could not get token: EOF\nUnable to connect to the server: getting token: exec: exit status 1\n"
2018-06-19T17:20:17+01:00 [▶]  heptio-authenticator-aws: "/Users/richardcase/bin/heptio-authenticator-aws"
2018-06-19T17:20:17+01:00 [✖]  unable to use kubectl with the EKS cluster (check ' --kubeconfig /Users/richardcase/.kube/config version'): Assume Role MFA token code: could not get token: EOF
Unable to connect to the server: getting token: exec: exit status 1
2018-06-19T17:20:17+01:00 [ℹ]  cluster should be functions despite missing client binaries that need to be installed in the PATH

Potentially the following should happen:

  • Only get the client version in CheckKubectlVersion. This would be by setting --client=true
  • Not checking the server version in CheckAllCommands. As it stands eksctl doesn't allow you to specify a Kubernetes version (i.e. it gets the latest version supported by EKS). Should we expose a version flag then we can check its above the minimum version supported.

Stuck on initial resource creation

I'm getting this output for the following command:

eksctl create cluster -n default -t t2.large -N 1 -M 1 -m 1 -r us-east-1 --ssh-public-key ~/.ssh/my-key.pub
2018-06-08T11:11:58-07:00 [ℹ]  importing SSH public key "/Users/jamesalbert/.ssh/my-key.pub" as "EKS-default"
2018-06-08T11:11:59-07:00 [ℹ]  creating EKS cluster "default" in "us-east-1" region
2018-06-08T11:11:59-07:00 [ℹ]  creating VPC stack "EKS-default-VPC"
2018-06-08T11:11:59-07:00 [ℹ]  creating ServiceRole stack "EKS-default-ServiceRole"

The only thing that gets created is the key pair. It just hangs here (I left it running for 45 minutes twice). Verbose logs don't tell too much more than this. I'm using a god mode role so I don't think it's a permissions issue. Any ideas?

Print the profile being used before attempting to authenticate

As I was trying to use eksctl, I spent a lot of time debugging whether or not it understood which profile to use mostly by digging through the source code. I was using .aws/credentials + AWS_PROFILE env var. Turns out, it does.

It would be very helpful, given this is meant to be a "guided experience" tool, if it just popped out a message when it started up telling you which profile it is trying to use, ala:

[x] Using aws profile: my-mfa-profile

Allow additional user-data on EKS nodes

It would be great to be able easily add to the node template user-data. While one could get most of the same functionality with custom AMIs, then you have to maintain AMIs. For instance, I hacked the nodegroup template to add support for insecure registries (deploy pods from a registry deployed within the cluster):

"echo {\\\"insecure-registries\\\": [\\\"$DNS_CLUSTER_IP/8\\\"]} > /etc/docker/daemon.json" , "\n",
"systemctl restart docker", "\n",

Hung on creating control plane

eksctl create cluster --cluster-name dev --region us-east-1

This has been hung on 2018-06-20T14:16:22-05:00 [ℹ] creating control plane "dev" for over thirty minutes now. If it does take this long, it would be nice to show some additional output periodically to let me know it's doing something

2018-06-20T14:15:01-05:00 [ℹ]  importing SSH public key "/Users/samirpatel/.ssh/id_rsa.pub" as "EKS-dev"
2018-06-20T14:15:01-05:00 [ℹ]  creating EKS cluster "dev" in "us-east-1" region
2018-06-20T14:15:01-05:00 [ℹ]  creating ServiceRole stack "EKS-dev-ServiceRole"
2018-06-20T14:15:01-05:00 [ℹ]  creating VPC stack "EKS-dev-VPC"
2018-06-20T14:15:21-05:00 [✔]  created ServiceRole stack "EKS-dev-ServiceRole"
2018-06-20T14:16:22-05:00 [✔]  created VPC stack "EKS-dev-VPC"
2018-06-20T14:16:22-05:00 [ℹ]  creating control plane "dev"

eksctl download instructions broken?

Following the download instructions from https://eksctl.io/, and got the following error:

~ $ curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.

Basic use flow fails

I just installed eksclt and ran eksctl create cluster --cluster-name=eks-test
The VPC cloudformation stack can't be built. All subnets creation fails with this error:

Template error: Fn::Select cannot select nonexistent value at index 1

Unable to create cluster using profile

I'm trying to create a cluster with using a specific profile. I've set the AWS_PROFILE environment variable (as per this) but its still creating the cluster using the default cli profile.

We use specific profiles to distinguish between our environments (dev, non-prod, prod) and we're also using MFA.

Looking at #56 it would appear that using profiles can work?

kubeconfig isn't always written immediately

It looks like we need to sync wires to disk or wait for it, not so sure what's best.

...
2018-07-05T07:18:44+01:00 [✔]  all EKS cluster "amazing-sheepdog-1530770615" resources has been created
2018-07-05T07:18:44+01:00 [✔]  wrote "test2"
2018-07-05T07:18:46+01:00 [ℹ]  the cluster has 0 nodes
2018-07-05T07:18:46+01:00 [ℹ]  waiting for at least 1 nodes to become ready
2018-07-05T07:19:17+01:00 [ℹ]  the cluster has 1 nodes
2018-07-05T07:19:17+01:00 [ℹ]  node "ip-192-168-85-159.us-west-2.compute.internal" is ready
2018-07-05T07:19:17+01:00 [▶]  kubectl: "/Users/ilya/Library/Local/Homebrew/bin/kubectl"
2018-07-05T07:19:18+01:00 [▶]  clientVersion="v1.10.4" err="The connection to the server localhost:8080 was refused - did you specify the right host or port?\n"
2018-07-05T07:19:18+01:00 [▶]  heptio-authenticator-aws: "/usr/local/bin/heptio-authenticator-aws"
2018-07-05T07:19:18+01:00 [✖]  unable to use kubectl with the EKS cluster (check 'kubectl --kubeconfig="test2" --context="[email protected]" version'): error: stat "test2": no such file or directory
2018-07-05T07:19:18+01:00 [ℹ]  cluster should be functional despite missing client binaries that need to be installed in the PATH
2018-07-05T07:19:18+01:00 [✔]  EKS cluster "amazing-sheepdog-1530770615" in "us-west-2" region is ready
 [0] >> kubectl --kubeconfig="test2" --context="[email protected]" version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.4", GitCommit:"5ca598b4ba5abb89bb773071ce452e33fb66339d", GitTreeState:"clean", BuildDate:"2018-06-18T14:14:00Z", GoVersion:"go1.9.7", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-05-28T20:13:43Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
 [0] >>

We are using clientcmd.ModifyConfig, which in-turns calls ioutil.WriteFile.

Cluster API CLI

We would like to implement Cluster API. One of the modes in which one can use Cluster API would be eksctl apply -f cluster.yaml, this would let users create and update clusters using a declarative format of a Cluster API object.
Another mode of using Cluster API would be via a controller running in a management cluster (#20).

detect existing KeyPair to avoid failure on second cluster creation

I created a cluster and it worked great. I zapped it via the CloudFormation console.

Then the next time I tried to create a cluster I get an error:

2018-07-03T12:07:39+01:00 [ℹ]  importing SSH public key "/Users/jstrachan/.ssh/id_jstrachan_testing_rsa.pub" as "EKS-eks1"
2018-07-03T12:07:40+01:00 [✖]  importing SSH public key: InvalidKeyPair.Duplicate: The keypair 'EKS-eks1' already exists.

I had to manually work around this via:

aws ec2 delete-key-pair --key-name EKS-eks1 --region us-west-2

It'd be nice to detect this error message and log as a warning and continue; or better use the aws CLI to query if the KeyPair exists for the given name first?

Testing

We could probably add some unit tests, but the critical code path is reliant on AWS APIs and mocking CloudFormation is going to involve a lot of effort due to its complex nature (unless there is something ready-made we can use). Also, we would also need to mock Kubernetes somehow, there is probably prior art, but that could be very specialised. Personally, I feel that integration test is what we need the most.

'/lib/ld-musl-x86_64.so.1: bad ELF interpreter: No such file or directory' on RHEL install

Installation on RHEL results in message /lib/ld-musl-x86_64.so.1: bad ELF interpreter: No such file or directory

os information

cat /etc/*-release

NAME="Red Hat Enterprise Linux Server"
VERSION="7.4 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.4"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.4 (Maipo)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.4:GA:server"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
REDHAT_BUGZILLA_PRODUCT_VERSION=7.4
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="7.4"
Red Hat Enterprise Linux Server release 7.4 (Maipo)
Red Hat Enterprise Linux Server release 7.4 (Maipo)

Website updates

We've been promoting the project using eksctl.io URL, but the page doesn't actually link to the repo, neither it displays stars. Sharing buttons would be also nice to add, so visitors are encouraged to share with their friends.

Cluster creation fails with segmentation violation

$ ./eksctl create cluster
2018-06-05T13:31:55-07:00 [ℹ]  importing SSH public key "/Users/argu/.ssh/id_rsa.pub" as "EKS-wonderful-gopher-1528230715"
2018-06-05T13:31:56-07:00 [ℹ]  creating EKS cluster "wonderful-gopher-1528230715"
2018-06-05T13:31:56-07:00 [ℹ]  creating VPC stack "EKS-wonderful-gopher-1528230715-VPC"
2018-06-05T13:31:56-07:00 [ℹ]  creating ServiceRole stack "EKS-wonderful-gopher-1528230715-ServiceRole"
2018-06-05T13:32:16-07:00 [✔]  created ServiceRole stack "EKS-wonderful-gopher-1528230715-ServiceRole"
2018-06-05T13:33:16-07:00 [✔]  created VPC stack "EKS-wonderful-gopher-1528230715-VPC"
2018-06-05T13:33:16-07:00 [ℹ]  creating control plane "wonderful-gopher-1528230715"
2018-06-05T13:42:38-07:00 [✔]  created control plane "wonderful-gopher-1528230715"
2018-06-05T13:42:38-07:00 [ℹ]  creating DefaultNodeGroup stack "EKS-wonderful-gopher-1528230715-DefaultNodeGroup"
2018-06-05T13:46:18-07:00 [✔]  created DefaultNodeGroup stack "EKS-wonderful-gopher-1528230715-DefaultNodeGroup"
2018-06-05T13:46:18-07:00 [✔]  all EKS cluster "wonderful-gopher-1528230715" resources has been created
2018-06-05T13:46:18-07:00 [ℹ]  wrote "kubeconfig"
2018-06-05T13:46:23-07:00 [ℹ]  the cluster has 0 nodes
2018-06-05T13:46:23-07:00 [ℹ]  waiting for at least 2 nodes to become ready
2018-06-05T13:46:57-07:00 [ℹ]  the cluster has 2 nodes
2018-06-05T13:46:57-07:00 [ℹ]  node "ip-192-168-110-25.us-west-2.compute.internal" is ready
2018-06-05T13:46:57-07:00 [ℹ]  node "ip-192-168-168-114.us-west-2.compute.internal" is ready
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x1ca60d7]

goroutine 1 [running]:
github.com/weaveworks/eksctl/pkg/utils.CheckKubectlVersion(0x0, 0x0)
	/go/src/github.com/weaveworks/eksctl/pkg/utils/kubectl.go:26 +0x167
github.com/weaveworks/eksctl/pkg/utils.CheckAllCommands(0x1ff4560, 0xa, 0x0, 0x0)
	/go/src/github.com/weaveworks/eksctl/pkg/utils/kubectl.go:49 +0x37
main.doCreateCluster(0xc4203286c0, 0xc420157cb0, 0xc420157c80)
	/go/src/github.com/weaveworks/eksctl/cmd/eksctl/create.go:158 +0x412
main.createClusterCmd.func1(0xc4201dbb80, 0x2a42b78, 0x0, 0x0)
	/go/src/github.com/weaveworks/eksctl/cmd/eksctl/create.go:55 +0x2a
github.com/weaveworks/eksctl/vendor/github.com/spf13/cobra.(*Command).execute(0xc4201dbb80, 0x2a42b78, 0x0, 0x0, 0xc4201dbb80, 0x2a42b78)
	/go/src/github.com/weaveworks/eksctl/vendor/github.com/spf13/cobra/command.go:766 +0x2c1
github.com/weaveworks/eksctl/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x2a1bc00, 0xc420157f68, 0x1ca8ba6, 0xc420157f78)
	/go/src/github.com/weaveworks/eksctl/vendor/github.com/spf13/cobra/command.go:852 +0x30a
github.com/weaveworks/eksctl/vendor/github.com/spf13/cobra.(*Command).Execute(0x2a1bc00, 0x1feffc3, 0x1)
	/go/src/github.com/weaveworks/eksctl/vendor/github.com/spf13/cobra/command.go:800 +0x2b
main.main()
	/go/src/github.com/weaveworks/eksctl/cmd/eksctl/main.go:28 +0x2d

Cluster API controller

We would like to implement Cluster API. One of the modes in which one can use Cluster API is by having a management cluster which runs a controller (actuator), which creates new clusters and nodegroups when it receives Cluster API objects.
Another mode of using it would be via CLI (#19).

pre-release TODOs

  • make install instructions simpler with latest_release floating tag
  • review --help for all subcommand
  • test against internal EKS endpoint (and fix any potential issues)
  • squash the history into sensible chunks
  • update AMI IDs for each of the GA regions
  • re-create the private repo
  • push to the new repo and check CircleCI works
  • remove TODOs from the code
  • tag 0.1.0-alpha.2 (as 0.1.0-alpha.1 was a test release)
  • open the repo to the public
  • enable github pages

support cluster name as argument

it's too easy to forget to specify --cluster-name <name> and type eksctl create cluster <name> instead, we should probably support simple argument mode, because kops and kubicorn support this also.

Support debug logging from AWS SDK

Add another debug level (perhaps v=5) where we enable debug logging of the AWS Go SDK (with request tracing).

This will help with issue investigation but also with implementing mocking of services for tests.

Empty output for get cluster

Created a cluster:

2018-06-05T16:00:29-07:00 [ℹ]  importing SSH public key "/Users/argu/.ssh/id_rsa.pub" as "EKS-adorable-sculpture-1528239629"
2018-06-05T16:00:29-07:00 [ℹ]  creating EKS cluster "adorable-sculpture-1528239629"
2018-06-05T16:00:29-07:00 [ℹ]  creating VPC stack "EKS-adorable-sculpture-1528239629-VPC"
2018-06-05T16:00:29-07:00 [ℹ]  creating ServiceRole stack "EKS-adorable-sculpture-1528239629-ServiceRole"
2018-06-05T16:01:10-07:00 [✔]  created ServiceRole stack "EKS-adorable-sculpture-1528239629-ServiceRole"
2018-06-05T16:01:50-07:00 [✔]  created VPC stack "EKS-adorable-sculpture-1528239629-VPC"
2018-06-05T16:01:50-07:00 [ℹ]  creating control plane "adorable-sculpture-1528239629"
2018-06-05T16:10:32-07:00 [✔]  created control plane "adorable-sculpture-1528239629"
2018-06-05T16:10:32-07:00 [ℹ]  creating DefaultNodeGroup stack "EKS-adorable-sculpture-1528239629-DefaultNodeGroup"
2018-06-05T16:14:12-07:00 [✔]  created DefaultNodeGroup stack "EKS-adorable-sculpture-1528239629-DefaultNodeGroup"
2018-06-05T16:14:12-07:00 [✔]  all EKS cluster "adorable-sculpture-1528239629" resources has been created
2018-06-05T16:14:12-07:00 [ℹ]  wrote "kubeconfig"
2018-06-05T16:14:13-07:00 [ℹ]  the cluster has 0 nodes
2018-06-05T16:14:13-07:00 [ℹ]  waiting for at least 2 nodes to become ready
2018-06-05T16:14:59-07:00 [ℹ]  the cluster has 2 nodes
2018-06-05T16:14:59-07:00 [ℹ]  node "ip-192-168-236-174.us-west-2.compute.internal" is ready
2018-06-05T16:14:59-07:00 [ℹ]  node "ip-192-168-87-30.us-west-2.compute.internal" is ready
2018-06-05T16:14:59-07:00 [✖]  kubectl version v1.8.0 was found at "kubectl", minimum required version to use EKS is v1.10.0
2018-06-05T16:14:59-07:00 [ℹ]  cluster should be functions despite missing client binaries that need to be installed in the PATH

Upgraded kubectl to 1.10.2
Installed heptio-authenticator-aws in PATH
Had to grab cluster name from the log output
eksctl get cluster --cluster-name adorable-sculpture-1528239629 and eksctl get cluster --cluster-name adorable-sculpture-1528239629 --region us-west-2 is giving an empty output

Homebrew package

Goreleaser actually supports Homebrew, so it should be just a matter of enabling it.

eksadmin service account not available

Hello ,

After creating the cluster using the eksctl , I was not able to get eksadmin service account token to access the api server endpoint for doing the programatic depoyment.

Could you please guide me on how to get the token for the same.
I have used the below command '
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk '{print $1}')

I could see only the following service accounts:

aws-node
kube-proxy
kube-dns
default

Regards
Arun

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.