AWS-EKS-01--命令行工具

摘要

安装命令行工具

AWS CLI

  • AWS Command Line Interface (AWS CLI) 是一种开源工具,让您能够在命令行 Shell 中使用命令与 AWS 服务进行交互。

  • 要使用 AWS CLI 访问 AWS 服务,您需要 AWS 账户 和 IAM 凭证。运行 AWS CLI 命令时,AWS CLI 需要有权访问这些 AWS 凭证。为了提高 AWS 账户的安全性,建议您不要使用根账户凭证。您应创建一个具有最低权限的用户来为将在 AWS 中运行的任务提供访问凭证。

  • 登录AWS控制台,在IAM里创建一个用户,为了方便对资源进行管理可以授予其管理员访问权限(AdministratorAccess),并在其安全凭证中创建一个新的访问密钥。

  • 安装AWS CLI,这里以mac为例

1
2
3
4
5
6
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /
$ which aws
/usr/local/bin/aws
$ aws --version
aws-cli/2.12.3 Python/3.11.4 Darwin/21.6.0 exe/x86_64 prompt/off
  • 升级时重新执行上面的的安装过程即可

  • 命令提示补全,以zsh为例,在~/.zshrc中添加如下内容,为了立即生效可以执行source ~/.zshrc

1
2
3
autoload bashcompinit && bashcompinit
autoload -Uz compinit && compinit
complete -C '/usr/local/bin/aws_completer' aws
  • 配置文件在~/.aws目录下,分为 configcredentials,可以设置多份凭证,设置时可以直接编辑对应的配置文件,也可以通过如下命令设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 默认default,这里配置上用户的访问密钥
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-1
Default output format [None]: json

# 指定profile,后面所有命令中涉及到凭证的部分都使用该profile
$ aws configure --profile eks-us-west-2
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json

# 查看配置
$ cat ~/.aws/config
[default]
region = us-west-1
output = json
[profile eks-us-west-2]
region = us-west-2
output = json

$ cat ~/.aws/credentials
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
[eks-us-west-2]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

# 查看所有profile
$ aws configure list-profiles
default
eks-us-west-2

# 查看指定的profile的信息
$ aws configure list --profile eks-us-west-2
Name Value Type Location
---- ----- ---- --------
profile eks-us-west-2 manual --profile
access_key ****************IP6L shared-credentials-file
secret_key ****************OIQU shared-credentials-file
region us-west-2 config-file ~/.aws/config

# 查看与profile对应的用户信息
$ aws sts get-caller-identity --profile eks-us-west-2
{
"UserId": "AIDA55DP3G4GIDWF2GNIR",
"Account": "743263909655",
"Arn": "arn:aws:iam::743263909655:user/hanqunfeng"
}
  • 使用aws命令时,如果不指定--profile,则默认使用default对应的认证信息,也可以通过环境变量指定要使用的profile

1
$ export AWS_PROFILE=eks-us-west-2

kubectl

  • Kubectl 是一个命令行工具,用于与 Kubernetes API 服务器进行通信。这个命令非常重要,后面会有一节专门介绍。

  • 安装或更新 kubectl,这里以mac为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 从 Amazon S3 为集群的 Kubernetes 版本下载二进制文件
# 这里下载Kubernetes 1.26
$ curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.26.4/2023-05-11/bin/darwin/amd64/kubectl
# 授予执行权限
$ chmod +x ./kubectl
# 将命令复制到 $PATH 中
$ sudo mv ./kubectl /usr/local/bin/kubectl
# 查看kubectl版本,由于此时还没有配置k8s的server端,所以这里只查看client的的信息
$ kubectl version --client -o yaml

clientVersion:
buildDate: "2023-04-15T00:36:29Z"
compiler: gc
gitCommit: 4a3479673cb6d9b63f1c69a67b57de30a4d9b781
gitTreeState: clean
gitVersion: v1.26.4-eks-0a21954
goVersion: go1.19.8
major: "1"
minor: 26+
platform: darwin/amd64
kustomizeVersion: v4.5.7
  • 升级时重新执行上面的的安装过程即可

  • 命令提示补全和别名设置,以zsh为例,在~/.zshrc中添加如下内容,为了立即生效可以执行source ~/.zshrc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# k8s client kubectl
source <(kubectl completion zsh)
alias k=kubectl
# change namespace
alias kn="k config set-context --current --namespace"

# Delete Now
alias kdp="k delete pod --grace-period=0 --force"

# View current context
# 直接设置别名的方式不行,因为在设置alias时,$(k config current-context)就会被执行了,所以不会根据当时情况进行替换,可以使用函数来实现
# alias kcc="k config get-contexts $(k config current-context)"
# 注意这里函数不能使用字母 k 开头,会报错 "defining function based on alias `k'"
cc() {
k config get-contexts $(k config current-context)
}
# 然后再将函数设置别名即可实现
alias kcc=cc
  • kubectl的配置文件为~/.kube/config,在创建eks集群时会进一步介绍。

eksctl

  • eksctl 是一款简单的命令行工具,用于在 Amazon EKS 上创建和管理 Kubernetes 集群。eksctl 提供使用 Amazon EKS 节点创建新集群的最快、最简单的方式。

  • eksctlAWS CLI共用认证信息,即~/.aws下的配置

  • 安装或更新 eksctl,这里以mac为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# for ARM systems, set ARCH to: `arm64`, `armv6` or `armv7`
$ ARCH=amd64
$ PLATFORM=$(uname -s)_$ARCH
# 下载
$ curl -sLO "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"

# (Optional) Verify checksum
$ curl -sL "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check
# 解压
$ tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz
# 移动到$PATH
$ sudo mv /tmp/eksctl /usr/local/bin

# 查看版本
$ eksctl version

0.146.0
  • 升级时重新执行上面的的安装过程即可

  • 代码补全,以zsh为例

1
2
3
4
5
6
7
$ mkdir -p ~/.zsh/completion/
$ eksctl completion zsh > ~/.zsh/completion/_eksctl

# 并将以下内容放入~/.zshrc中:
fpath=($fpath ~/.zsh/completion)
autoload -U compinit
compinit

helm

1
2
3
4
5
6
7
8
9
10
# 下载
$ curl -O https://get.helm.sh/helm-v3.12.1-darwin-amd64.tar.gz
# 解压
$ tar -zxvf helm-v3.12.1-darwin-amd64.tar.gz
# 移动到$PATH
$ sudo mv darwin-amd64/helm /usr/local/bin/helm
# 查看版本
$ helm version --short

v3.12.1+gf32a527
  • 升级时重新执行上面的的安装过程即可

  • 命令提示补全,以zsh为例,在~/.zshrc中添加如下内容,为了立即生效可以执行source ~/.zshrc

1
source <(helm completion zsh)