kubectl配置指南
云容器实例支持使用原生kubectl或定制的kubectl来创建负载等资源,建议优先选用原生kubectl。
下载kubectl
请到kubernetes版本发布页面下载1.19版本对应的kubectl。
Apple M1芯片是darwin-arm64架构,如果使用Apple M1芯片的设备,需要下载对应架构的kubectl。
下载cci-iam-authenticator
在CCI官网下载cci-iam-authenticator二进制,最新版本为v2.6.17。
针对不同的操作系统,cci-iam-authenticator的下载地址如表1所示。
操作系统 |
下载地址 |
查看帮助 |
---|---|---|
Linux AMD 64位 |
||
Darwin AMD 64位 |
||
Darwin ARM 64位 |
安装并设置kubectl
以下操作以Linux环境为例,更多详情信息请参见安装和配置kubectl。
- 将下载kubectl中下载的kubectl赋予可执行权限,并放到PATH目录下。
chmod +x ./kubectl
mv ./kubectl $PATH
其中,$PATH为PATH路径(如/usr/local/bin),请替换为实际的值。
您还可以通过如下命令查看kubectl的版本,如下所示。
kubectl version --client=true
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.0", GitCommit:"e19964183377d0ec2052d1f1fa930c4d7575bd50", GitTreeState:"clean", BuildDate:"2020-08-26T14:30:33Z", GoVersion:"go1.15", Compiler:"gc", Platform:"linux/amd64"}
- 配置IAM认证信息并持久化到本地。
- 将下载cci-iam-authenticator中下载的cci-iam-authenticator赋予可执行权限,并放到PATH目录下。
chmod +x ./cci-iam-authenticator
mv ./cci-iam-authenticator $PATH
- 初始化cci-iam-authenticator配置。
初始化cci-iam-authenticator提供了AK/SK和用户名/密码两种方式,请选择其中一种执行。
- 使用AK/SK的方式配置IAM认证信息
cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://$endpoint --ak=xxxxxxx --sk=xxxxxx
其中,endpoint为云容器实例的Endpoint,获取方法请参见地区和终端节点;ak、sk的获取方法请参见获取AK/SK,ak为文件中Access Key部分,sk为文件中Secret Key部分。
例如,Endpoint为https://cci.cn-north-4.myhuaweicloud.com,ak的值为my-ak,sk的值为ABCDEFAK.. ,则命令如下所示:
cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://cci.cn-north-4.myhuaweicloud.com --ak=my-ak --sk=ABCDEFAK..
执行上述命令后,显示如下类似信息:
Switched to context "cci-context-cn-north-4-my-ak"
其中,cci-context-cn-north-4-my-ak为context名,可通过kubectl config get-contexts命令查看。
- 使用用户名/密码的方式配置IAM认证信息
cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://$endpoint --domain-name=xxxxxxx --user-name=xxxxxx --password='xxxxxx'
其中,endpoint为云容器实例的Endpoint,domain-name为租户名,user-name为子用户名,password为子用户密码,请根据替换为实际的值。
- 如果无子用户,user-name与domain-name配置一致即可,也可以不添加user-name参数。
- IAM的Endpoint请参见地区和终端节点,请注意需要使用与云容器实例地区相同的Endpoint。
- 在非安全的环境中使用kubectl,建议您完成此步骤后,使用环境变量的方式重新配置认证信息,具体参考非安全环境配置kubectl。
- 使用AK/SK的方式配置IAM认证信息
- 将下载cci-iam-authenticator中下载的cci-iam-authenticator赋予可执行权限,并放到PATH目录下。
- 配置完成后,即可通过kubectl命令操作云容器实例的相关资源。
例如,查看北京四的namespace资源。
kubectl get ns
No resources found.
您可以从回显中看到北京四没有任何命名空间,在云容器实例中创建资源首先需要创建一个命名空间,具体方法请参见Namespace和Network。
- 当通过API访问公有云系统时,需要使用访问用户名密码或者密钥(AK/SK)进行身份认证并对请求进行加密,确保请求的机密性、完整性和请求双方身份的正确性。请妥善保存$HOME/.kube/config配置文件,确保访问密钥不被非法使用。
- 当开启cache缓存token提高访问性能时,token会以文件的方式保存在$HOME/.cci/cache的子目录下,请及时清理。
- 当发现访问密钥被非法使用(包括丢失、泄露等情况),可以自行删除或者通知管理员重置访问密钥,重新配置。
- 删除的访问密钥将无法恢复。
非安全环境配置kubectl
- 参照上述操作,安装并设置kubectl。
- 编辑kubeconfig文件,删除敏感信息参数。
Linux系统,kubeconfig文件默认位于$HOME/.kube/config。
表2 待删除敏感信息参数 Command Flag
Environment Value
Description
--domain-name
DOMAIN_NAME
租户名
--user-name
USER_NAME
子用户名
--password
PASSWORD
用户密码
--ak
ACCESS_KEY_ID
Access Key
--sk
SECRET_ACCESS_KEY
Secret Key
--cache
CREDENTIAL_CACHE
是否开启缓存Token
更多参数说明请参见cci-iam-authenticator使用参考。
- 配置删除参数相应的环境变量来使用kubectl,以AK/SK为例。
认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险, 建议在配置文件或者环境变量中密文存放, 使用时解密, 确保安全。
export ACCESS_KEY_ID={Access Key} #替换为HUAWEICLOUD_SDK_AK
export SECRET_ACCESS_KEY={Secret Key} #替换为HUAWEICLOUD_SDK_SK
export CREDENTIAL_CACHE=false
kubectl get ns
执行上述命令后,提示如下类似信息:
No resources found.
获取AK/SK
AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。
SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。
- 登录管理控制台。
- 单击用户名,在下拉列表中单击“我的凭证”。
- 在“我的凭证”页面,单击“访问密钥”页签。
- 单击“新增访问密钥”,输入验证码。
- 单击“确定”,生成并下载访问密钥。
为防止访问密钥泄露,建议您将其保存到安全的位置。
获取云容器实例Endpoint
Endpoint在地区和终端节点页面获取,如下表所示。
区域名称 |
区域 |
终端节点(Endpoint) |
---|---|---|
华北-北京四 |
cn-north-4 |
cci.cn-north-4.myhuaweicloud.com |
华东-上海一 |
cn-east-3 |
cci.cn-east-3.myhuaweicloud.com |
华东-上海二 |
cn-east-2 |
cci.cn-east-2.myhuaweicloud.com |
华南-广州 |
cn-south-1 |
cci.cn-south-1.myhuaweicloud.com |
西南-贵阳一 |
cn-southwest-2 |
cci.cn-southwest-2.myhuaweicloud.com |