h y p e r k u b e-一个安全的无服务器api和kubectl插件,用于存储和检索kubernetes集群凭据。hyperkube利用aws secrets manager存储凭证信息。
hyper-kube-config的Python项目详细描述
hyper kube配置
hyper kube config-提供一个安全的Serverlessapi来存储和检索Kubernetes cluster config credentials。hyper kube config利用AWS Secrets Manager存储凭据信息。包括一个kubectl plugin来与hyperkube api接口。
它需要一个配置文件布局见hyperkube-config.yaml.example。
安装hyperkube kubectl插件
pip3 install hyper-kube-config
设置~/.hyperkube-config.yaml
文件
配置文件的默认位置是~/.hyperkube-config.yaml
您还可以将配置文件放在不同的位置,并将该位置作为命令行选项传递-c <hyper-kube-config-location>
或--config <hyper-kube-config-location>
将群集和凭据发布到hyperkube存储
# with config file in default location ~/.hyperkube-config.yaml kubectl hyperkube add --k8s-config ~/.kube/config # with config file in default location ~/location2/.hyperkube-config.yaml# kubectl hyperkube -c ~/location2/.hyperkube-config.yaml add --k8s-config ~/.kube/config# kubectl hyperkube --config ~/location2/.hyperkube-config.yaml add --k8s-config ~/.kube/config
删除群集和凭据
kubectl hyperkube remove --cluster-to-remove 'k8s-cluster-example.cloud'
获取用户凭据
# for single cluster
kubectl hyperkube get --cluster cloud-infra.cloud > ~/.kube/config
在一个kube配置中获取多个群集的用户凭据
kubectl hyperkube get \ --cluster cloud-infra.cloud \ --cluster bar-cluster.cloud \ --cluster baz-cluster.com > ~/.kube/config
将所有集群的cred放入一个kube配置中
kubectl hyperkube get-all > ~/.kube/config
列出群集
kubectl hyperkube list
存储SSH-PEM和CA私钥并将其与集群关联
存储ssh pem
kubectl hyperkube add-pem --pem ~/.ssh/my-cluster.pem
存储SSH Pem
kubectl hyperkube get-pem --cluster my-cluster.net
存储添加CA私钥
kubectl hyperkube add-ca-key --ca-key ca-key-file.key --cluser my-cluster.net
设置群集状态和/或环境引用
# Set arbitrary status string and environment reference for given cluster
kubectl hyperkube set-cluster-status --cluster my-cluster.net --status active --environment stage
获取环境的群集状态
# Returns list of clusters that are active for prod environment
kubectl hyperkube get-cluster-status --status active --environment prod
要求
- Serverless-无服务器框架
- Docker-用于无服务器部署
- HTTPie-推荐用于API客户端
- serverless-python-requirements插件。使用docker和pip为aws lambda函数打包更新的boto3版本。默认情况下,aws lambda boto3版本不支持aws secrets manager标记。
- click-用于hyperkube kubectl插件
- kubectl-1.12版或更高版本推荐用于稳定的插件支持。
部署无服务器API
sls deploy \
--stage dev \
--product k8s \
--owner myteam@foo.cloud \
--team myteam \
--environment dev
kubectl hyperkube get-pem --cluster my-cluster.net
存储添加CA私钥
kubectl hyperkube add-ca-key --ca-key ca-key-file.key --cluser my-cluster.net
设置群集状态和/或环境引用
# Set arbitrary status string and environment reference for given cluster
kubectl hyperkube set-cluster-status --cluster my-cluster.net --status active --environment stage
获取环境的群集状态
# Returns list of clusters that are active for prod environment
kubectl hyperkube get-cluster-status --status active --environment prod
要求
- Serverless-无服务器框架
- Docker-用于无服务器部署
- HTTPie-推荐用于API客户端
- serverless-python-requirements插件。使用docker和pip为aws lambda函数打包更新的boto3版本。默认情况下,aws lambda boto3版本不支持aws secrets manager标记。
- click-用于hyperkube kubectl插件
- kubectl-1.12版或更高版本推荐用于稳定的插件支持。
部署无服务器API
sls deploy \ --stage dev \ --product k8s \ --owner myteam@foo.cloud \ --team myteam \ --environment dev
这将启动hyperkube api。为hyperkube.yaml配置捕获api url、api密钥和stage。kubectl hyperkube
命令将利用配置与存储的k8s配置交互。
serverless将启动一个AWS API Gateway来处理转发到AWS Lambda functions的api请求。dynamodb表被配置为存储非敏感的集群配置详细信息,而上传配置(密码和证书)中的敏感信息存储在AWS Secrets Manager。