1. 使用临时token登录阿里云CR
1 | aliyun cr GetAuthorizationToken | jq .data.authorizationToken | tr -d '"' | docker login --username=cr_temp_user --password-stdin registry.cn-hangzhou.aliyuncs.com |
2. 获取Kubernetes集群的kuberctl配置文件
1 | aliyun cs DescribeClusterUserKubeconfig --ClusterId=c90bf856c68364386a07384a6a2bb176b |
3. 使用use-context切换管理多个kubernetes集群
多个集群kubectl配置如下:
1 | apiVersion: v1 |
切换命令如下:
1 | $ kubectl config use-context ng-demo |
4. 设置OSS生命周期
Terraform目前(2021-3-10)不支持对于分片文件的生命周期, 可以考虑通过阿里云CLI实现.
1 | # get and view the bucket lifecycel |
上面命令中的lifecycle.xml如下:
1 |
|
5. ICP
- ICP接入: ICP可以同别的平台迁移到阿里云, 这个过程比在做一次ICP快很多
6. 免费DV证书
阿里云每个实名账号个人或企业主体在一年内可以有20个免费DV证书可以使用, 每个证书仅支持绑定一个具体的域名, 20个的数量可以支持常见的测试和验证需求. 这种证书可以用于:
- CDN自定义域名
- SLB启用HTTPS
7. 第三方账号证书导入
阿里云支持上传证书, 可以将一个已经在其他平台和账号的证书上传到阿里云, 操纵步骤:
- 下载购买证书, 如果在阿里云购买的话, 下载的时候有很多种下载方式, 选择 nginx 下载
- 解压下载文件, 可以获得.pem(certificate)和.key(provide key)文件
- 上传, 在需要证书的阿里云账号的证书管理控制台, 粘贴复制.pem和.key的内容
- 使用, 上传完后证书即可以像其他购买的证书一样正常使用, 例如配置OSS自定义域名,代码15和16行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27resource "alicloud_cdn_domain_new" "docker_storage_domain" {
domain_name = local.ng_docker_file_domain
cdn_type = "download"
scope = "domestic"
sources {
content = local.docker_storage_bucket_domain
type = "oss"
port = 443
}
certificate_config {
server_certificate_status = "on"
force_set = 1
cert_name = local.cert_name
cert_type = "upload"
}
tags = {
Name = "${var.stack_name}-docker-storage-domain"
Stack = var.stack_name
}
depends_on = [
alicloud_oss_bucket.docker_storage
]
}
8. KMS
获取Secret版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30ali kms ListSecretVersionIds --SecretName="/stack/research/db_password"
{
"PageNumber": 1,
"PageSize": 10,
"RequestId": "e9bf3ff1-d3b1-44e1-abef-96416a52cd7d",
"SecretName": "/stack/research/db_password",
"TotalCount": 2,
"VersionIds": {
"VersionId": [
{
"CreateTime": "2021-05-07T02:13:58Z",
"VersionId": "v20210507191252",
"VersionStages": {
"VersionStage": [
"ACSPrevious"
]
}
},
{
"CreateTime": "2021-05-07T02:15:45Z",
"VersionId": "v20210510191252",
"VersionStages": {
"VersionStage": [
"ACSCurrent"
]
}
}
]
}可以使用VersionStage获取最近的Secret值
目前值发现两个VersionStage: ACSCurrent/ACSPrevious1
2ali kms GetSecretValue --SecretName="/stack/research/db_password" --VersionStage=ACSCurrent
ali kms GetSecretValue --SecretName="/stack/research/db_password" --VersionStage=ACSPrevious使用Key加密
keyId
可以是id也可以是alias1
2ali kms Encrypt --KeyId="8da42b24-f1f7-450b-8ccb-f568b1e555fe" --Plaintext=helloworld
ali kms Encrypt --KeyId=alias/NG-Common --Plaintext=helloworld解密
1 | ali kms Decrypt --CiphertextBlob="ZWZiOTMxMDMtOTUyNi00OGUxLWI5MzEtOTYxZjU0OGUwMWU0T3BDf6PdXvJIHzMKCIxYKr7N3PngT2aS07Rk7TiFx4Me+u0QIMk=" |
9. 使用digest拉取Docker镜像
image tag如分支名不能精确代表最新的镜像, 可以使用digest, digest使用时用@而不是, 如下:
1 | docker pull registry.cn-hangzhou.aliyuncs.com/ngiq-cr/app_server@sha256:c4e1cbe395d87e4c9d94d831c689e7c01531d457f3d1bbbb83d6f1a698fac8e4 |
digest如何获取呢? 在阿里云中可以使用GetRepoTag
方法:
1 | aliyun cr GetRepoTag --RepoName=app_server --RepoNamespace=ngiq-cr --Tag=feature-aliyun |
配合jq则可以快速获取digest值:
1 | aliyun cr GetRepoTag --RepoName=app_server --RepoNamespace=ngiq-cr --Tag=feature-aliyun | jq -r '.data.digest' |
需要注意的是这个值在docker pull
的时候需要增加sha256:
10. 获取CLI STS TOKEN
aliyun 有些资源可以通过配置的profile自动获取STS但是有些资源不可以,例如CR、CSK
1 | export CRED=$(curl http://100.100.100.200/latest/meta-data/Ram/security-credentials/CICDRole) |
11. 获取account id
1 | ali ram GetAccountAlias |
12. 同步文件
1 | -- 同步 ng-system |
13. 命令行 ECR
个人版本的CR存在限流问题, 当个人仓库流量到达一定的限制, 触发限流, 当值镜像拉取很慢, 此时应该开启企业版CR即ECR, 当时阿里云CLI CR默认是没有对ECR做支持的, 但是可以通过force
和version
使用OpenAPI, 进而达到管理企业版CR的目的:
1 | #获取实例列表 |