zoukankan      html  css  js  c++  java
  • k8s使用自定义证书将客户端认证接入到API Server

    自定义证书使用kubectl认证接入API Server
    kubeconfig是API Server的客户端连入API Server时使用的认证格式的客户端配置文件。
    使用kubectl config view查看其配置

     1 kubectl config view
     2 apiVersion: v1
     3 clusters:  #集群列表
     4 - cluster:
     5     certificate-authority-data: DATA+OMITTED
     6     server: https://192.168.1.100:6443
     7   name: kubernetes
     8 contexts:    #上下文列表(使用哪个账号访问哪个集群)
     9 - context:
    10     cluster: kubernetes
    11     user: kubernetes-admin
    12   name: kubernetes-admin@kubernetes
    13 current-context: kubernetes-admin@kubernetes  #当前使用的账号
    14 kind: Config
    15 preferences: {}
    16 users:   #用户列表
    17 - name: kubernetes-admin
    18   user:
    19     client-certificate-data: REDACTED
    20     client-key-data: REDACTED

    创建、删除集群用户上下文列表
    kubectl config (set-clusterdelete-cluster)(set-credentials)(set-contextdelete-context)
    创建账号前需要创建账号用于服务器端的认证的证书及密钥
    切换用户:kubectl config use-context

    使用kubeadm创建的集群,集群的证书及密钥在/etc/kubernetes/pki下。里面的证书和私钥都有各自的功能;
    如:apiserver-kubectl-client.crt和apiserver-kubectl-client.key就可以用来给创建的账户所使用。

    示例:
    使用openssl创建用于自己创建账号所使用的证书及密钥(自签)
    使用带有自签证书的用户在集群中创建用户,切换用户查看权限:
    1.创建一个smbands的用户私钥:
      (umask 077; openssl genrsa -out smbands.key 2048)
      注意:证书持有者名称就是用户名,所以用户名必须与证书持有者名称一致;
      如:用户名为smbands,那么持有者也应该为smbands。创建完成后会生成一个smbands.key的文件。
    2.基于刚生成的私钥去生成一个证书生成请求smbands.csr
       openssl req -new -key smbands.key -out smbands.csr -subj "/CN=smbands"
       会生成一个生成证书请求文件smbands.csr
    3.使用ca.crt签署证书
       openssl x509 -req -in smbands.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out smbands.crt -days 365
       生成smbands的用户证书smbands.crt
    使用:openssl x509 -in smbands.crt -text -noout查看生成的证书信息

    使用创建的用户在集群中创建账户和上下文
    1.在集群中创建用户:
      kubectl config set-credentials smbands --client-certficate=URL/smbands.crt --client-key=URL/smbands.key --embed-certs=true
    2.在集群中为新建的用户定义上下文,使用户可以切换至创建的用户:
      kubectl config set-context smbands@kubernetes(用户名@集群名) --cluster=kubernetes --user=smbands
    3.切换集群账户:
      kubectl config use-context smbands@kubernetes
    此时集群账户就切换为smbands了,不过这样默认的用户是没有管理员权限的。下一篇将会写到如何使用RBAC将自定义用户绑定到自定义角色分配自定义权限。
    此时的kubeconfig如下显示:

     1 kubectl config view
     2 apiVersion: v1
     3 clusters:
     4 - cluster:
     5     certificate-authority-data: DATA+OMITTED
     6     server: https://192.168.1.100:6443
     7   name: kubernetes
     8 contexts:
     9 - context:
    10     cluster: kubernetes
    11     user: kubernetes-admin
    12   name: kubernetes-admin@kubernetes
    13 - context:
    14     cluster: kubernetes
    15     user: smbands
    16   name: smbands@kubernetes
    17 current-context: smbands@kubernetes
    18 kind: Config
    19 preferences: {}
    20 users:
    21 - name: kubernetes-admin
    22   user:
    23     client-certificate-data: REDACTED
    24     client-key-data: REDACTED
    25 - name: smbands
    26   user:
    27     client-certificate-data: REDACTED
    28     client-key-data: REDACTED
  • 相关阅读:
    SqlMembershipProvider的配置
    自定义HtppHandler和HttpModule
    [导入]Sql Server 2005 Express中配置用户
    [导入]Asp.net中使用客户端脚本的方法
    JumpServer 架构浅解
    你准备好开始DevOps了吗?
    为什么是戒了爱你
    今天考试了
    [心疼女友]
    这个世界看不清
  • 原文地址:https://www.cnblogs.com/Smbands/p/10901543.html
Copyright © 2011-2022 走看看