机密容器服务(Jeddak Confidential Kubernetes,JCK)是一套基于可信执行环境(TEE)实现的容器管理服务,旨在保证用户容器服务在云上的安全性。
skopeo
软件
quay.io/skopeo/stable:latest
keyprovider
软件
wget https://jck-components.tos-cn-beijing.volces.com/runc/keyprovider/tks-keyprovider chmod +x tks-keyprovider
secret-key.bin
),需通过外部导入方式托管到TKS中。cat secret-key.bin | xxd -p -c 10000 > image-encrypt-key.txt # 示例:ed362e88bf94f2746f60d40fe34ef2ad892e4381d1c11d4e00f8bde9d7af8750
wrap-key.json
,格式如下。{ "AppID": "test-accont", #火山引擎账户ID "RingID": "8a5b796d-f594-4d68-ae7a-c1c1f41a1a88", #密钥环ID "KeyID": "b257e194-439b-49a3-bff8-3f7258e87ef1", #密钥ID "Key": "ed362e88bf94f2746f60d40fe34ef2ad892e4381d1c11d4e00f8bde9d7af8750" #Hex格式的密钥 }
cat << EOF > ocicrypt.conf { "key-providers": { "tks-keyprovider": { "cmd": { "path": "/workspace$(pwd)/tks-keyprovider", "args": ["--wrap", "/workspace$(pwd)/wrap-key.json"] } } } } EOF
cat << EOF > skopeo.sh #!/bin/bash docker run --rm -it --net=host \\ -e OCICRYPT_KEYPROVIDER_CONFIG=/workspace/`pwd`/ocicrypt.conf \\ -v `pwd`:/workspace/`pwd` \\ -w /workspace/`pwd` \\ quay.io/skopeo/stable \\ "\$@" EOF chmod +x skopeo.sh
./skopeo.sh copy docker://<镜像地址> oci:image-plaintext # 参考示例: # ./skopeo.sh copy docker://quay.io/skopeo/stable:latest oci:image-plaintext
./skopeo.sh copy \ oci:image-plaintext \ oci:image-encrypted \ --encryption-key provider:tks-keyprovider
./skopeo.sh copy \ oci:image-encrypted \ docker://<火山镜像仓库> \ --dest-username=<仓库用户名> \ --dest-password=<临时密钥> # 参考示例 # ./skopeo.sh copy \ # oci:image-encrypted \ # docker://test-repo-cn-beijing.cr.volces.com/test-namespace/test-oci/dmeo:v1 \ # --dest-username=test-account \ # --dest-password=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik5IRjc6NktBSzpDV...
上传成功后的镜像可通过基线管理服务托管镜像基线,并点击「镜像发布」创建机密容器服务。
配置HPA(可选)
详见 [附录1 AICC机密容器HPA配置说明](/docs/85010/1414787#462260db)
创建成功后可在列表查看机密容器运行状态、服务IP等信息;也可点击容器名称,进入容器详情,可查看更多信息。
说明
终端服务:是创建机密容器时自动创建的服务;
终端节点:需要用户手动创建的终端节点,并绑定终端服务。
效果
把机密容器作为后端服务绑定到终端节点上,即可通过终端节点访问机密容器。
网络配置-私有网络选择前置条件中建立的私有网络,并选择相应的可用区下的子网
网络配置-安全组需要配置新的访问规则,放通最终访问机密容器服务所需的端口范围
需要配置的访问规则示例:
访问规则具体说明参考安全组概述--私有网络-火山引擎
如果需要新建安全组,参考创建安全组--私有网络-火山引擎
如果需要修改已有安全组的访问规则,参考管理安全组规则--私有网络-火山引擎
将配置好的安全组绑定到终端节点
配置完毕,点击立即购买
HorizontalPodAutoscaler (HPA)会根据当前容器的负载情况,自动化地调整容器实例数量,以保持容器负载在预先定义的指标范围内。具体算法:
例如内存期望值为
100m
- 如果当前指标值为
200m
,则副本数将加倍, 因为 200.0÷100.0=2.0200.0÷100.0=2.0- 如果当前值为
50m
,则副本数将减半, 因为 50.0÷100.0=0.550.0÷100.0=0.5
如果比率足够接近 1.0,在全局可配置的容差范围内(默认为 0.1), 则K8s会跳过扩缩操作。
说明
更多算法细节描述,请参考官方文档
配置项 | 参考值 | 含义 | |
---|---|---|---|
监控指标 | CPU利用率 | 80% | CPU利用率期望值(需要配置CPU请求值) |
内存利用率 | 80% | 内存利用率期望值(需要配置内存请求值) | |
最小实例数 | 1 | 缩容时最少可接受的实例数量 | |
最大实例数 | 10 | 扩容时最大可接受的实例数量 |
配置项 | 参考值 | 含义 | |
---|---|---|---|
扩缩容策略 | 扩容策略 | 触发自动扩容缩容事件后,执行的扩容、缩容策略
| |
静默时间 | 1800 | 在容器指标波动时,防止因为容器实例的波动。HPA会根据 | |
策略 | 策略类型 | 容器组 | 在需要扩缩容时,容器变化单位 |
策略值 | 50% |
| |
策略时间间隔 | 15 | 扩缩容策略生效时间(单位:秒) |
80%
时,执行扩容/缩容、在容器内存负载大于/小于80%
时,执行扩容/缩容10
个容器实例,最小缩容到1
个容器实例