cci-iam-authenticator使用参考
cci-iam-authenticator作为k8s client端的认证插件,主要提供了generate-kubeconfig和token两个子命令。
A tool to authenticate to CCI using HuaweiCloud IAM credentials Usage: cci-iam-authenticator [command] Available Commands: generate-kubeconfig Generate or modify kubeconfig files based on user configuration help Help about any command token Authenticate using HuaweiCloud IAM and get token for CCI Flags: --alsologtostderr log to standard error as well as files -h, --help help for cci-iam-authenticator --log_dir string If non-empty, write log files in this directory --log_file string If non-empty, use this log file --logtostderr log to standard error instead of files (default true) -v, --v Level number for the log level verbosity --version version for cci-iam-authenticator Use "cci-iam-authenticator [command] --help" for more information about a command.
其中,Flags主要为日志选项。
token
token子命令用于获取用户token,获取token的认证方式有用户名/密码、ak/sk两种,选择其中一种即可。
Authenticate using HuaweiCloud IAM and get token for CCI Usage: cci-iam-authenticator token [flags] Flags: --ak string IAM access key ID --cache Cache the token credential on disk until it expires (default true) --domain-name string IAM domain name, typically your account name -h, --help help for token --iam-endpoint string HuaweiCloud IAM endpoint, i.e. https://iam.cn-north-4.myhuaweicloud.com (default "https://iam.myhuaweicloud.com") --insecure-skip-tls-verify If true, the iam server's certificate will not be checked for validity. (default true) --password string IAM user password --project-id string IAM project id, project id and project name should not be empty at same time --project-name string IAM project name, project id and project name should not be empty at same time --sk string IAM secret access key --token-only Return token only for other tool integration --user-name string IAM user name. Same as domain-name when using main account, otherwise use iam user name
其中,Flags分为用户名密码、AKSK和公共配置。
Command Flag |
Environment Value |
Description |
---|---|---|
domain-name |
DOMAIN_NAME |
租户名,即账号名,详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html。 |
user-name |
USER_NAME |
子用户名,即IAM用户名。如果不配置与domain-name一致。 详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html。 |
password |
PASSWORD |
用户或子用户密码。 |
Command Flag |
Environment Value |
Description |
---|---|---|
ak |
ACCESS_KEY_ID |
ak、sk的获取方法请参见获取AK/SK,ak为文件中Access Key部分,sk为文件中Secret Key部分。 |
sk |
SECRET_ACCESS_KEY |
Command Flag |
Environment Value |
Description |
---|---|---|
iam-endpoint |
IAM_ENDPOINT |
IAM的Endpoint,必须配置,详情请参见https://developer.huaweicloud.com/endpoint?IAM。 |
project-name |
PROJECT_NAME |
项目名,详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html。 |
project-id |
PROJECT_ID |
项目ID,详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html。 |
insecure-skip-tls-verify |
INSECURE_SKIP_TLS_VERIFY |
是否跳过对CCI/IAM服务端的校验,默认为true。 |
cache |
CREDENTIAL_CACHE |
是否开启将IAM Token缓存到本地,提高访问性能,默认为true。
注意:
在非安全环境,建议关闭此选项。 |
generate-kubeconfig
为用户直接生成kubeconfig配置,如果指定的kubeconfig已存在,则会注入新的server、user、context配置,并将当前的kubeconfig context切换到此次配置的结果。 默认情况下会对用户的配置进行校验,尝试访问IAM及CCI,确保用户配置的IAM认证信息、CCI地址可用。
Generate or modify kubeconfig files based on user configuration. Sets a cluster entry, a user entry and a context entry in kubeconfig and use this context as the current-context. The loading order follows these rules: 1. If the --kubeconfig flag is set, then only that file is loaded. The flag may only be set once and no merging takes place. 2. If $KUBECONFIG environment variable is set, then it is used as a list of paths (normal path delimiting rules for your system). These paths are merged. When a value is modified, it is modified in the file that defines the stanza. When a value is created, it is created in the first file that exists. If no files in the chain exist, then it creates the last file in the list. 3. Otherwise, ${HOME}/.kube/config is used and no merging takes place. Examples: # Generate kubeconfig to ${HOME}/.kube/config using aksk cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://cci.cn-north-4.myhuaweicloud.com --ak=*** --sk=*** # Generate kubeconfig to ${HOME}/.kube/config using domain name and password cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://cci.cn-north-4.myhuaweicloud.com --domain-name=*** --password=*** Usage: cci-iam-authenticator generate-kubeconfig [flags] Flags: --ak string IAM access key ID --cache Cache the token credential on disk until it expires (default true) --cci-endpoint string CCI server endpoint, i.e. https://cci.cn-north-4.myhuaweicloud.com --domain-name string IAM domain name, typically your account name -h, --help help for generate-kubeconfig --iam-endpoint string HuaweiCloud IAM endpoint, i.e. https://iam.cn-north-4.myhuaweicloud.com (default "https://iam.myhuaweicloud.com") --insecure-skip-tls-verify If true, the iam server's certificate will not be checked for validity. (default true) --kubeconfig string use a particular kubeconfig file --password string IAM user password --project-id string IAM project id, project id and project name should not be empty at same time --project-name string IAM project name, project id and project name should not be empty at same time --sk string IAM secret access key --token-only Return token only for other tool integration --user-name string IAM user name. Same as domain-name when using main account, otherwise use iam user name --validation Validate kubeconfig by trying to access CCI with existing config (default true)
同一个kubeconfig可以包含多个环境、认证信息,用户可以通过同一份IAM认证配置,仅修改cci-endpoint生成多个region的kubeconfig,例如:
# 生成北京4的kubeconfig,并切换到对应context $ cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://cci.cn-north-4.myhuaweicloud.com --ak=my-ak --sk=xxxxxx Switched to context "cci-context-cn-north-4-my-ak". # 生成上海1的kubeconfig,并切换到对应context $ cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://cci.cn-east-3.myhuaweicloud.com --ak=my-ak --sk=xxxxxx Switched to context "cci-context-cn-east-3-my-ak". # 切换到北京4的context $ kubectl config use-context cci-context-cn-north-4-my-ak