在哪里设置 aws access/secret 键以使 kube-up.sh 在 Kubernetes (aws) 中正常工作

Where to set aws access/secret key for kube-up.sh to work correctly in Kubernetes (aws)

我正在尝试使用 kube-up.sh 安装脚本在我的 AWS 帐户上设置一个 Kubernetes 集群,该脚本与位于 kubernetes/cluster/kube-up.sh

的 kubernetes 源捆绑在一起

但是当我 运行 kube-up.sh 我收到以下错误:

pranjal:~/go/src/github.com/GoogleCloudPlatform/kubernetes/cluster$ ./kube-up.sh
Starting cluster using os distro: ubuntu
Starting cluster using provider: aws
... calling verify-prereqs
... calling kube-up
Uploading to Amazon S3
Creating kubernetes-staging-6b790c161af2b2c39939b542c73b775a
make_bucket failed: s3://kubernetes-staging-6b790c161af2b2c39939b542c73b775

我确定我的工具无法读取我的 AWS 访问密钥和密钥。我将其存储在.aws/config 中。我不确定我应该在哪里设置它才能正确读取和工作。

经过一番搜索,我找到了解决问题的方法。

许多 AWS 配置进入 config-default.sh 文件。但是,没有选项可以在那里设置访问密钥 ID、秘密访问密钥(这可能有一定意义,因为 cluster/aws/config-default.sh 文件是源代码的一部分,凭据应该保存在其他地方,更安全地方)

我在看到 kubernetes/cluster/aws/util.sh 源代码后意识到,kubernetes 实际上在内部调用 aws 命令行工具来对 AWS 基础设施进行更改。

因此,正确安装和配置 AWS 命令​​行工具将解决此问题。

一旦我发出以下命令:

aws configure

并回答输入 ID/Key 的提示,将这些值保存到此文件中:

~/.aws/credentials

查看详情here

这解决了我的问题并且 kube-up.sh 在我这样做之后完美地工作了。

另一种方法是填充环境变量...将以下命令放入文件 xxxxx

export     AWS_ACCESS_KEY_ID=$(cat ${AWS_ACCOUNT_CONFIGDIR}/id)
export AWS_SECRET_ACCESS_KEY=$(cat ${AWS_ACCOUNT_CONFIGDIR}/key)

然后在调用 kube-up.sh

之前获取该文件
source xxxxx
kube-up.sh 

aws 在探测之前首先查看上面的一对环境变量

~/.aws/credentials

我发现它可以更轻松地在各种 aws 帐户之间切换