Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add eksctl #374

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions eksctl/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
title: eksctl
homepage: https://github.com/weaveworks/eksctl
tagline: |
The official CLI for Amazon EKS
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this actually endorsed by Amazon? I think you may mean "original" or "best", but I'm pretty sure this isn't the "official" CLI. That's written in Python and described here: https://docs.aws.amazon.com/cli/latest/reference/eks/index.html

Or am I missing something?

---

To update or switch versions, run `webi example@stable` (or `@v2`, `@beta`,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please update example text.

etc).

### Files

These are the files / directories that are created and/or modified with this
install:

```txt
~/.config/envman/PATH.env
~/.local/bin/eksctl
~/.local/opt/eksctl
```

## Cheat Sheet

> From the `eksctl` ReadMe:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ReadMe should be stylized README.

> You can create a cluster in minutes with just one command – eksctl create cluster!
> AWS Account
> 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.


To create a basic cluster:

```bash
eksctl create cluster
```

### Add Baz Highlighting

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace examples sections with real examples for eksctl.

To run eksctl with both bar and baz highlighting turned on:

```bash
eksctl --bar=baz
```

### Further Reading and Direct Link to Original ReadMe:
https://github.com/weaveworks/eksctl
61 changes: 61 additions & 0 deletions eksctl/install.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#!/usr/bin/env pwsh

##################
# Install eksctl #
##################

# Every package should define these variables
$pkg_cmd_name = "eksctl"

$pkg_dst_cmd = "$Env:USERPROFILE\.local\bin\eksctl.exe"
$pkg_dst = "$pkg_dst_cmd"

$pkg_src_cmd = "$Env:USERPROFILE\.local\opt\eksctl-v$Env:WEBI_VERSION\bin\eksctl.exe"
$pkg_src_bin = "$Env:USERPROFILE\.local\opt\eksctl-v$Env:WEBI_VERSION\bin"
$pkg_src_dir = "$Env:USERPROFILE\.local\opt\eksctl-v$Env:WEBI_VERSION"
$pkg_src = "$pkg_src_cmd"

New-Item "$Env:USERPROFILE\Downloads\webi" -ItemType Directory -Force | out-null
$pkg_download = "$Env:USERPROFILE\Downloads\webi\$Env:WEBI_PKG_FILE"

# Fetch archive
IF (!(Test-Path -Path "$Env:USERPROFILE\Downloads\webi\$Env:WEBI_PKG_FILE"))
{
echo "Downloading eksctl from $Env:WEBI_PKG_URL to $pkg_download"
& curl.exe -A "$Env:WEBI_UA" -fsSL "$Env:WEBI_PKG_URL" -o "$pkg_download.part"
& move "$pkg_download.part" "$pkg_download"
}

IF (!(Test-Path -Path "$pkg_src_cmd"))
{
echo "Installing eksctl"

# TODO: create package-specific temp directory
# Enter tmp
pushd .local\tmp

# Remove any leftover tmp cruft
Remove-Item -Path ".\eksctl-v*" -Recurse -ErrorAction Ignore
Remove-Item -Path ".\eksctl.exe" -Recurse -ErrorAction Ignore

# NOTE: DELETE THIS COMMENT IF NOT USED
# Move single binary into root of temporary folder
& move "$pkg_download" "eksctl.exe"

# Unpack archive file into this temporary directory
# Windows BSD-tar handles zip. Imagine that.
# echo "Unpacking $pkg_download"
# & tar xf "$pkg_download"

# Settle unpacked archive into place
echo "Install Location: $pkg_src_cmd"
New-Item "$pkg_src_bin" -ItemType Directory -Force | out-null
Move-Item -Path ".\eksctl.exe" -Destination "$pkg_src_bin"

# Exit tmp
popd
}

echo "Copying into '$pkg_dst_cmd' from '$pkg_src_cmd'"
Remove-Item -Path "$pkg_dst_cmd" -Recurse -ErrorAction Ignore | out-null
Copy-Item -Path "$pkg_src" -Destination "$pkg_dst" -Recurse
46 changes: 46 additions & 0 deletions eksctl/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#!/bin/bash

# shellcheck disable=SC2034
# "'pkg_cmd_name' appears unused. Verify it or export it."

function __init_eksctl() {
set -e
set -u

##################
# Install eksctl #
##################

# Every package should define these 6 variables
pkg_cmd_name="eksctl"

pkg_dst_cmd="$HOME/.local/bin/eksctl"
pkg_dst="$pkg_dst_cmd"

pkg_src_cmd="$HOME/.local/opt/eksctl-v$WEBI_VERSION/bin/eksctl"
pkg_src_dir="$HOME/.local/opt/eksctl-v$WEBI_VERSION"
pkg_src="$pkg_src_cmd"

# pkg_install must be defined by every package
pkg_install() {
# ~/.local/opt/eksctl-v0.99.9/bin
mkdir -p "$(dirname "${pkg_src_cmd}")"

# mv ./eksctl-*/eksctl ~/.local/opt/eksctl-v0.99.9/bin/eksctl
mv ./eksctl "${pkg_src_cmd}"
}

# pkg_get_current_version is recommended, but not required
pkg_get_current_version() {
# 'eksctl --version' has output in this format:
# eksctl 0.99.9 (rev abcdef0123)
# This trims it down to just the version number:
# 0.99.9
eksctl --version 2> /dev/null |
head -n 1 |
cut -d ' ' -f 2
}

}

__init_eksctl
20 changes: 20 additions & 0 deletions eksctl/releases.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
'use strict';

var github = require('../_common/github.js');
var owner = 'weaveworks';
var repo = 'eksctl';

module.exports = function (request) {
return github(request, owner, repo).then(function (all) {
return all;
});
};

if (module === require.main) {
module.exports(require('@root/request')).then(function (all) {
all = require('../_webi/normalize.js')(all);
// just select the first 5 for demonstration
all.releases = all.releases.slice(0, 5);
console.info(JSON.stringify(all, null, 2));
});
}
46 changes: 45 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.