云服务器内容精选
-
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和公共配置。 表1 用户名/密码配置 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 用户或子用户密码。 表2 AK/SK配置 Command Flag Environment Value Description ak AC CES S_KEY_ID ak、sk的获取方法请参见获取AK/SK,ak为文件中Access Key部分,sk为文件中Secret Key部分。 sk SECRET_ACCESS_KEY 表3 公共配置 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 父主题: 使用kubectl(推荐)
-
安装并设置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。 配置完成后,即可通过kubectl命令操作云容器实例的相关资源。 例如,查看北京四的namespace资源。 kubectl get ns No resources found. 您可以从回显中看到北京四没有任何命名空间,在云容器实例中创建资源首先需要创建一个命名空间,具体方法请参见Namespace和Network。 当通过API访问公有云系统时,需要使用访问用户名密码或者密钥(AK/SK)进行身份认证并对请求进行加密,确保请求的机密性、完整性和请求双方身份的正确性。请妥善保存$HOME/.kube/config配置文件,确保访问密钥不被非法使用。 当开启cache缓存token提高访问性能时,token会以文件的方式保存在$HOME/.cci/cache的子目录下,请及时清理。 当发现访问密钥被非法使用(包括丢失、泄露等情况),可以自行删除或者通知管理员重置访问密钥,重新配置。 删除的访问密钥将无法恢复。
-
获取云容器实例Endpoint 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
-
非安全环境配置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结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 登录管理控制台。 单击用户名,在下拉列表中单击“我的凭证”。 在“我的凭证”页面,单击“访问密钥”页签。 单击“新增访问密钥”,输入验证码。 单击“确定”,生成并下载访问密钥。 为防止访问密钥泄露,建议您将其保存到安全的位置。
-
下载cci-iam-authenticator 在CCI官网下载cci-iam-authenticator二进制,最新版本为v2.6.17。 针对不同的操作系统,cci-iam-authenticator的下载地址如表1所示。 表1 下载地址 操作系统 下载地址 查看帮助 Linux AMD 64位 cci-iam-authenticator_linux-amd64 cci-iam-authenticator_linux-amd64_sha256 cci-iam-authenticator使用参考 Darwin AMD 64位 cci-iam-authenticator_darwin-amd64 cci-iam-authenticator_darwin-amd64.sha256 Darwin ARM 64位 cci-iam-authenticator_darwin-arm64 cci-iam-authenticator_darwin-arm64.sha256
-
Pod的EIP准备就绪 Pod业务容器的启动时间可能早于EIP分配结果返回成功时间,在Pod启动过程中EIP可能会绑定失败。 通过在init container中可检查EIP是否已经分配成功。容器网络控制器会在Pod IP分配后,为Pod绑定EIP并返回分配结果至Pod的Annotation(yangtse.io/allocated-ipv4-eip),通过Pod配置init container并使用downwardAPI,把yangtse.io/allocated-ipv4-eip annotation通过volume挂载到init container里,可检查EIP是否已经分配成功。具体您可以参考以下示例配置init container: apiVersion: v1 kind: Pod metadata: name: example namespace: demo annotations: yangtse.io/eip-id: 65eb3679-7a8d-4b24-b681-0b661axxxxcb spec: initContainers: - name: init image: busybox:latest command: ['timeout', '60', 'sh', '-c', "until grep -E '[0-9]+' /etc/eipinfo/allocated-ipv4-eip; do echo waiting for allocated-ipv4-eip; sleep 2; done"] volumeMounts: - name: eipinfo mountPath: /etc/eipinfo volumes: - name: eipinfo downwardAPI: items: - path: "allocated-ipv4-eip" fieldRef: fieldPath: metadata.annotations['yangtse.io/allocated-ipv4-eip']
-
为Pod指定EIP的ID 创建Pod时,填写yangtse.io/eip-id的annotation后,EIP会随Pod自动完成绑定。 以下示例创建一个名为nginx的实例数为1的无状态负载,EIP将随Pod自动绑定至Pod。具体字段含义见表1。 apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "14" description: "" name: nginx namespace: eip spec: ... replicas: 1 template: metadata: annotations: yangtse.io/eip-id: 65eb3679-7a8d-4b24-b681-0b661axxxxcb 表1 参数说明 参数 参数含义 必选/可选 约束 yangtse.io/eip-id 弹性公网ID 必选 必须是弹性公网IP页面能查到的ID信息。
-
删除镜像快照 镜像快照对应一份EVS云盘快照,保留镜像快照需要支付相应的EVS云盘快照费用。对于不再使用的镜像快照,如果在创建时未设置保留时长,需手动删除。 使用如下命令删除镜像快照: kubectl delete imagesnapshot my-imagesnapshot --wait=false 镜像快照相关API为类kubernetes风格API,并不支持完整的kubernetes API特性,比如“不支持watch”,“不支持fieldSelector、labelSelector”等等。 所以使用kubectl删除镜像快照时,建议额外指定--wait=false。否则,kubectl在删除镜像快照后会发起watch请求以等待镜像快照删除成功。但因镜像快照API不支持watch,此时kubectl工具可能会报错。
-
明确指定 明确指定和自动匹配同时使用,明确指定具有高优先级。 创建CCI实例时,可以通过注解中添加以下键值来明确指定镜像快照。 名称 示例值 描述 cci.io/image-snapshot-specified-name "my-imagesnapshot" 指定的镜像快照名称。 以创建Deployment为例: apiVersion: apps/v1 kind: Deployment metadata: name: deployment-test spec: replicas: 1 selector: matchLabels: app: redis template: metadata: labels: app: redis annotations: cci.io/image-snapshot-auto-match: "false" cci.io/image-snapshot-specified-name: "my-imagesnapshot" spec: containers: - image: redis name: container-0 resources: limits: cpu: 500m memory: 1024Mi requests: cpu: 500m memory: 1024Mi imagePullSecrets: - name: imagepull-secret
-
自动匹配 创建CCI实例时,可以通过注解中添加以下键值来开启自动匹配镜像快照。 名称 示例值 描述 cci.io/image-snapshot-auto-match "true" 设置是否开启自动匹配镜像快照。 以创建Deployment为例: apiVersion: apps/v1 kind: Deployment metadata: name: deployment-test spec: replicas: 1 selector: matchLabels: app: redis template: metadata: labels: app: redis annotations: cci.io/image-snapshot-auto-match: "true" spec: containers: - image: redis name: container-0 resources: limits: cpu: 500m memory: 1024Mi requests: cpu: 500m memory: 1024Mi imagePullSecrets: - name: imagepull-secret
-
限制与约束 一个Pod只能绑定一个EIP,一个EIP只能被一个Pod绑定。 创建Pod时,可指定annotation属性,创建完成后,更新EIP相关的annotation均无效。 EIP随Pod创建的优先级高于使用EIPPool创建的EIP。 绑定已有EIP创建的优先级高于EIP随Pod创建的EIP。 绑定EIP的Pod,如果要被公网成功访问,需要添加放通相应公网请求流量的安全组规则。 已经被Pod绑定的弹性公网IP,请勿通过弹性公网IP的console或API直接操作(修改别名/删除/解绑/绑定/转包周期等操作),否则可能导致资源残留。 绑定已有EIP时,使用负载创建的Pod删除重建后,由于需要等待前一个Pod完成解绑,所以重建的Pod就绪时间会变长。 绑定已有的EIP必须是用户手动创建给Pod使用的,不能使用EIPPool生成的EIP,否则会导致EIP状态异常。
-
约束与限制 当前不支持容器中软链路径的日志采集。 当前不支持容器标准输出采集上报到kafka。 当前不支持日志轮转,如果需要对日志文件进行大小的控制,请自行处理。 单条日志长度限制为250KB,如果超过则会丢弃。 不支持指定系统、设备、cgroup、tmpfs、localdir等挂载目录的日志采集,会直接忽略。 容器中长度超过190的日志文件无法被采集。容器中长度在180~190范围的日志文件仅支持采集第一个文件。 当容器被停止时,如果出现因网络延迟、资源占用多等原因导致的采集延时,可能会丢失容器停止前的部分日志。
-
高级配置 Secret是一种加密存储的资源对象,您可以将认证信息、证书、私钥等保存在密钥中,从而解决了密码、token、密钥等敏感数据的配置问题。 apiVersion: v1 kind: Secret metadata: name: cci-sfs-kafka-tls type: Opaque data: ca.crt: ... server.crt: ... server.key: ... 用户可以通过配置SSL参数,进行加密的安全连接,证书文件等相关的文件引用通过sandbox volume的特性来支持。
-
高级配置 创建Secret Secret是一种加密存储的资源对象,您可以将认证信息、证书、私钥等保存在密钥中,从而解决了密码、token、密钥等敏感数据的配置问题。 如下示例中定义的Secret中包含三条Key-Value。 apiVersion: v1 kind: Secret metadata: name: cert type: Opaque data: ca.crt: ... server.crt: ... server.key: ... 配置tls证书 用户可以通过配置annotation指定exporter server的tls证书套件,进行加密通信,并使用文件挂载的方式,关联证书secret。示例如下: kind: Deployment apiVersion: apps/v1 metadata: name: nginx-tls spec: replicas: 1 selector: matchLabels: app: nginx-tls template: metadata: labels: app: nginx-tls annotations: monitoring.cci.io/enable-pod-metrics: "true" monitoring.cci.io/metrics-port: "19100" monitoring.cci.io/metrics-tls-cert-reference: cert/server.crt monitoring.cci.io/metrics-tls-key-reference: cert/server.key monitoring.cci.io/metrics-tls-ca-reference: cert/ca.crt sandbox-volume.openvessel.io/volume-names: cert spec: volumes: - name: cert secret: secretName: cert defaultMode: 384 containers: - name: container-0 image: 'nginx:alpine' resources: limits: cpu: 1000m memory: 2048Mi requests: cpu: 1000m memory: 2048Mi volumeMounts: - name: cert mountPath: /tmp/secret0 imagePullSecrets: - name: imagepull-secret 表3 tls证书参数说明 Annotation 功能 可选值 默认值 monitoring.cci.io/metrics-tls-cert-reference tls证书volume引用 ${volume-name}/${volume-keyOrPath}(卷/路径) 无(使用http) monitoring.cci.io/metrics-tls-key-reference tls私钥volume引用 ${volume-name}/${volume-keyOrPath} 无(使用http) monitoring.cci.io/metrics-tls-ca-reference tls CA volume引用 ${volume-name}/${volume-keyOrPath} 无(使用http) 以上参数的值为tls的证书、私钥、CA文件所在存储卷的“卷名”和“路径”。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格