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/intl/zh-cn/usermanual-ca/ca_01_0001.html。 |
|
user-name |
USER_NAME |
子用户名,即IAM用户名。如果不配置与domain-name一致。 详情请参见https://support.huaweicloud.com/intl/zh-cn/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/intl/zh-cn/endpoint?IAM。 |
|
project-name |
PROJECT_NAME |
项目名,详情请参见https://support.huaweicloud.com/intl/zh-cn/usermanual-ca/ca_01_0001.html。 |
|
project-id |
PROJECT_ID |
项目ID,详情请参见https://support.huaweicloud.com/intl/zh-cn/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