
# kubectl配置指南
云容器实例支持使用原生kubectl或定制的kubectl来创建负载等资源，建议优先选用原生kubectl。
 #### 下载kubectl
请到[kubernetes版本发布页面](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.19.md)下载1.19版本对应的kubectl。
![](https://support.huaweicloud.com/devg-cci/public_sys-resources/note_3.0-zh-cn.png)
Apple M1芯片是darwin-arm64架构，如果使用Apple M1芯片的设备，需要[下载](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.21.md#client-binaries)对应架构的kubectl。
 #### 下载cci-iam-authenticator
在CCI官网下载cci-iam-authenticator二进制，**最新版本为v2.6.17**。
针对不同的操作系统，cci-iam-authenticator的下载地址如[表1]所示。
 表1下载地址 
| 操作系统           | 下载地址                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|
| Linux AMD 64位  | [cci-iam-authenticator_linux-amd64](https://cci-iam-authenticator.obs.cn-north-4.myhuaweicloud.com/latest/linux-amd64/cci-iam-authenticator) [cci-iam-authenticator_linux-amd64_sha256](https://cci-iam-authenticator.obs.cn-north-4.myhuaweicloud.com/latest/linux-amd64/cci-iam-authenticator_linux-amd64.sha256)           |
| Darwin AMD 64位 | [cci-iam-authenticator_darwin-amd64](https://cci-iam-authenticator-all-arch.obs.cn-south-1.myhuaweicloud.com/darwin-amd64/cci-iam-authenticator) [cci-iam-authenticator_darwin-amd64.sha256](https://cci-iam-authenticator-all-arch.obs.cn-south-1.myhuaweicloud.com/darwin-amd64/cci-iam-authenticator_darwin-amd64.sha256) |
| Darwin ARM 64位 | [cci-iam-authenticator_darwin-arm64](https://cci-iam-authenticator-all-arch.obs.cn-south-1.myhuaweicloud.com/darwin-arm64/cci-iam-authenticator) [cci-iam-authenticator_darwin-arm64.sha256](https://cci-iam-authenticator-all-arch.obs.cn-south-1.myhuaweicloud.com/darwin-arm64/cci-iam-authenticator_darwin-arm64.sha256)   |
   
#### 安装并设置kubectl
以下操作以Linux环境为例，更多详情信息请参见[安装和配置kubectl](https://kubernetes.io/docs/tasks/tools/)。
1. 将[下载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"}
   ```
   
   
2. 配置IAM认证信息并持久化到本地。 
   1. 将[下载cci-iam-authenticator]中下载的cci-iam-authenticator赋予可执行权限，并放到PATH目录下。
      **chmod +x ./cci-iam-authenticator**
      **mv ./cci-iam-authenticator** *$PATH*
      
   
   2. 初始化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，获取方法请参见[地区和终端节点](https://developer.huaweicloud.com/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为子用户密码，请根据替换为实际的值。
        ![](https://support.huaweicloud.com/devg-cci/public_sys-resources/note_3.0-zh-cn.png)
        - 如果无子用户，user-name与domain-name配置一致即可，也可以不添加user-name参数。
        
        - IAM的Endpoint请参见[地区和终端节点](https://developer.huaweicloud.com/endpoint)，请注意需要使用与云容器实例地区相同的Endpoint。
        
        - 在非安全的环境中使用kubectl，建议您完成此步骤后，使用环境变量的方式重新配置认证信息，具体参考[非安全环境配置kubectl]。
          
        
   
   
   
   
3. 配置完成后，即可通过kubectl命令操作云容器实例的相关资源。 
   例如，查看北京四的namespace资源。
   **kubectl get ns**
   ```
   No resources found.
   ```
   您可以从回显中看到北京四没有任何命名空间，在云容器实例中创建资源首先需要创建一个命名空间，具体方法请参见[Namespace和Network](https://support.huaweicloud.com/devg-cci/cci_05_0023.html)。
   
   
![](https://support.huaweicloud.com/devg-cci/public_sys-resources/warning_3.0-zh-cn.png)
- 当通过API访问公有云系统时，需要使用访问用户名密码或者密钥（AK/SK）进行身份认证并对请求进行加密，确保请求的机密性、完整性和请求双方身份的正确性。请妥善保存$HOME/.kube/config配置文件，确保访问密钥不被非法使用。
- 当开启cache缓存token提高访问性能时，token会以文件的方式保存在$HOME/.cci/cache的子目录下，请及时清理。
- 当发现访问密钥被非法使用（包括丢失、泄露等情况），可以自行删除或者通知管理员重置访问密钥，重新配置。
- 删除的访问密钥将无法恢复。
 
 #### 非安全环境配置kubectl
1. 参照上述操作，安装并设置kubectl。
2. 编辑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 |
      
   
   
3. 配置删除参数相应的环境变量来使用kubectl，以AK/SK为例。 
   ![](https://support.huaweicloud.com/devg-cci/public_sys-resources/note_3.0-zh-cn.png)
   认证用的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结合使用的密钥，对请求进行加密签名，可标识发送方，并防止请求被修改。
1. 登录管理控制台。
2. 单击用户名，在下拉列表中单击"我的凭证"。
3. 在"我的凭证"页面，单击"访问密钥"页签。
4. 单击"新增访问密钥"，输入验证码。
5. 单击"确定"，生成并下载访问密钥。 
   ![](https://support.huaweicloud.com/devg-cci/public_sys-resources/note_3.0-zh-cn.png)
   为防止访问密钥泄露，建议您将其保存到安全的位置。
   
   
 
#### 获取云容器实例Endpoint
Endpoint在[地区和终端节点](https://developer.huaweicloud.com/endpoint)页面获取，如下表所示。
表3地区和终端节点 
| 区域名称   | 区域             | 终端节点（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 |
   
