开发者社区> 牧斌> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

阿里云kubernetes集群自制kubeconfig

简介: 使用kubeconfig文件来组织关于集群,用户,名称空间和身份验证机制的信息。 kubectl命令行工具使用kubeconfig文件来查找选择群集并与群集的API服务器进行通信所需的信息。默认情况下 kubectl使用的配置文件名称是在$HOME/.kube目录下 config文件,可以通过设置环境变量KUBECONFIG或者--kubeconfig指定其他的配置文件 。
+关注继续查看

前提条件:

  1、创建一个阿里云kubernetes集群

  2、拥有登陆到master的ssh权限。


阿里云集群证书使用cfssl安装部署。

制作经过集群ca证书签署的客户端证书:test.crt

然后,先登陆到master上,在/etc/kubernetes/pki/目录下找到集群的ca证书:ca.crt。使用命令:openssl x509 -in /etc/kubernetes/pki/ca.crt -text -noout 获取制作签署证书的请求文件的相关配置信息

openssl x509 -in /etc/kubernetes/pki/ca.crt -text -noout

Certificate:

    Data:

        Version: 3 (0x2)

        Serial Number: 763442 (0xba632)

    Signature Algorithm: sha256WithRSAEncryption

        Issuer: C=CN, ST=ZheJiang, L=HangZhou, O=Alibaba, OU=ACS, CN=root

        Validity

            Not Before: Nov  5 09:07:00 2018 GMT

            Not After : Oct 31 09:12:25 2038 GMT

        Subject: O=xxx, OU=default, CN=xxx



签发Client Certificate:

cfssl print-defaults csr > admin-csr.json  获取模版

cat admin-csr.json 

{

    "CN": "example.net",

    "hosts": [

        "example.net",

        "www.example.net"

    ],

    "key": {

        "algo": "ecdsa",

        "size": 256

    },

    "names": [

        {

            "C": "US",

            "L": "CA",

            "ST": "San Francisco"

        }

    ]


}

修改成对应的json文件

{

    "CN": "test", #kubeconfig访问时的name,这里设置为test

    "hosts": [],

    "key": {

        "algo": "ecdsa",

        "size": 256

    },

    "names": [

        {

            "C": "CN",       #跟上面从ca.crt中获取的保持一致。

            "L": "HangZhou",

            "ST": "ZheJiang"

        }

    ]
}


生成集群签署的客户端证书
命令:cfssl gencert -ca=/etc/kubernetes/pki/ca.crt -ca-key=/etc/kubernetes/pki/ca.key -profile=kubernetes admin-csr.json | cfssljson -bare test
结果:
2018/11/08 11:38:37 [INFO] generate received request
2018/11/08 11:38:37 [INFO] received CSR
2018/11/08 11:38:37 [INFO] generating key: ecdsa-256
2018/11/08 11:38:37 [INFO] encoded CSR
2018/11/08 11:38:37 [INFO] signed certificate with serial number 304546120737391319875079966613142481233317700840
2018/11/08 11:38:37 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
websites. For more information see the Baseline Requirements for the Issuance and Management
of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
specifically, section 10.2.3 ("Information Requirements").
[root@iZuf6d10hr1jufgj6yy9o5Z test]# ls
admin-csr.json  test.csr  test-key.pem  test.pem

test.pem和test-key.pem就是CA授权的客户端证书
制作kubeconfig,参考文档:k8s官网 新建一个config文件,内容如下:
apiVersion: v1
kind: Config
preferences: {}

clusters:
- cluster:
  name: example

users:
- name: example

contexts:
- context:
  name: example


执行命令:
kubectl config --kubeconfig=config set-cluster test-cluster --server=https://1.2.3.4 --certificate-authority=ca.crt


kubectl config --kubeconfig=config set-credentials test --client-certificate=test.pem --client-key=test-key.pem


kubectl config --kubeconfig=config set-context test-context --cluster=test-cluster --user=test



查看config

8276712d4a85d8d62122631bb9f5a04683c15977


将kubeconfig需要的证书拷贝到自己的ecs上,放在 $HOME/.kube/目录下 。或者将证书转换成base64编码,将config中certificate-authority、client-certificate、client-key修改成certificate-authority-data、client-certificate-data、client-key-data然后配置

base64后的证书信息


44de2b8bc95e7c6cc0909daf6aa55db6b83f8078



直接访问集群结果:
#kubectl get node
Error from server (Forbidden): nodes is forbidden: User "test" cannot list nodes at the cluster scope

需要将给test用户绑定clusterrolebinding,然后再访问集群。

命令:kubectl create clusterrolebinding test-clusterrolebinding --clusterrole=cs:admin --user=test

然后再访问集群就可以了。




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
TDengine x 阿里云计算巢:实现集群自动化部署,费用透明化管理
本文是涛思数据上架到计算巢的方案介绍,原文请查看:https://mp.weixin.qq.com/s/ItPoI6CeAIya17ChyFjXGA近年来,随着云技术的快速发展,企业上云成为一大趋势。中国信息通信研究院披露的数据显示,2021 年中国云计算市场规模达到 3102 亿元,增速达 48.4%,中国公有云市场将保持高速增长态势。不只是传统企业,在信息化时代,软件上云也逐渐具备了必要性和重
0 0
阿里云 ACK One 多集群管理再升级:GitOps 多集群持续集成,统一报警管理
本文介绍了 ACK One 近期发布的 2 个主要特性,增强了多集群应用分发与运维管理能力,包括应用分发 GitOps,统一报警管理。
0 0
阿里云:产业集群数字化-构建协同发展的新生态
产业集群是我国区域经济发展的发动机
0 0
【公开课】手把手基于阿里云 ACK 环境创建 Kubernetes 集群及部署应用|学习笔记
快速学习【公开课】手把手基于阿里云 ACK 环境创建 Kubernetes 集群及部署应用。
0 0
《阿里云数据库 MongoDB 专属集群版》电子版地址
《阿里云数据库 MongoDB 专属集群版》PPT
0 0
阿里云 ACK 集群网络 | 学习笔记
快速学习阿里云 ACK 集群网络
0 0
阿里云 ACK 集群控制器 | 学习笔记
快速学习阿里云 ACK 集群控制器
0 0
阿里云注册集群+Prometheus 解决多云容器集群运维痛点
面对跨区跨云厂商容器集群混用场景,我们该如何借助Prometheus+Grafana实现容器集群监控?立刻查看本文吧!
0 0
【协会新闻】机器人进集群--“走进阿里云”会员日活动圆满结束
3月9日下午,伴随午后的阳光,由广东省机器人协会、中国电子商会机器人专业委员会、琶洲算法产业联盟和阿里云客户成长部全球培训中心联合主举办的机器人产业科技应用沙龙——走进阿里云会员日活动在阿里巴巴集团广州阿里中心访客中心-杜甫草堂顺利举行。
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
《阿里云数据库 MongoDB 专属集群版》
立即下载
阿里云AI产品必知必会系列电子书
立即下载
阿里云云原生 Serverless 案例集
立即下载