• k8s 创建UserAccount


    参考:

    https://kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/#normal-user

    1·创建个人证书

    1. # 生成user私钥
    2. openssl genrsa -out zhanglei.key 2048
    3. # 创建证书签署请求
    4. openssl req -new -key zhanglei.key -out zhanglei.csr -subj "/O=org/CN=neozhao"
    5. # 使用集群证书签署个人证书
    6. openssl x509 -req -in neozhao.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out zhanglei.crt -days 365

    2·生成配置文件

    1. # 设置集群参数
    2. kubectl config set-cluster kubernetes \
    3. --certificate-authority=/etc/kubernetes/pki/ca.crt \
    4. --embed-certs=true \
    5. --server=https://192.168.110.6:6443 \
    6. --kubeconfig=./config
    7. # 设置客户端认证参数
    8. kubectl config set-credentials zhanglei \
    9. --client-certificate=zhanglei.crt \
    10. --client-key=zhanglei.key \
    11. --embed-certs=true \
    12. --kubeconfig=./config
    13. # 设置上下文参数
    14. kubectl config set-context zhanglei-config \
    15. --cluster=kubernetes \
    16. --user=zhanglei \
    17. --kubeconfig=./config
    18. # 设置默认上下文
    19. kubectl config use-context zhanglei-config \
    20. --kubeconfig=./config

    3.设置权限

    1. apiVersion: rbac.authorization.k8s.io/v1
    2. kind: ClusterRole
    3. metadata:
    4. namespace: loggie
    5. name: loggie-user-role
    6. rules:
    7. - apiGroups:
    8. - ""
    9. resources:
    10. - nodes
    11. - pods/log
    12. - patch
    13. - update
    14. verbs:
    15. - get
    16. - watch
    17. - list
    18. - apiGroups:
    19. - ""
    20. resources:
    21. - pods
    22. - serviceaccounts
    23. - namespaces
    24. verbs:
    25. - get
    26. - watch
    27. - list
    28. - create
    29. - patch
    30. - update
    31. - delete
    32. - apiGroups:
    33. - apiextensions.k8s.io
    34. resources:
    35. - customresourcedefinitions
    36. verbs:
    37. - create
    38. - patch
    39. - update
    40. - get
    41. - list
    42. - watch
    43. - apiGroups:
    44. - rbac.authorization.k8s.io
    45. resources:
    46. - clusterrolebindings
    47. - clusterroles
    48. - serviceaccounts
    49. verbs:
    50. - create
    51. - patch
    52. - update
    53. - get
    54. - list
    55. - watch
    56. - delete
    57. - apiGroups:
    58. - ""
    59. resources:
    60. - events
    61. - configmaps
    62. - services
    63. verbs:
    64. - get
    65. - watch
    66. - list
    67. - update
    68. - create
    69. - patch
    70. - apiGroups:
    71. - extensions
    72. - apps
    73. resources:
    74. - deployments
    75. verbs:
    76. - get
    77. - list
    78. - watch
    79. - apiGroups:
    80. - apps
    81. resources:
    82. - daemonsets
    83. verbs:
    84. - get
    85. - list
    86. - watch
    87. - update
    88. - create
    89. - patch
    90. - delete
    91. - apiGroups:
    92. - loggie.io
    93. resources:
    94. - logconfigs
    95. - logconfigs/status
    96. - clusterlogconfigs
    97. - clusterlogconfigs/status
    98. - sinks
    99. - interceptors
    100. verbs:
    101. - get
    102. - list
    103. - watch
    104. - update
    105. - patch
    106. - apiGroups:
    107. - coordination.k8s.io
    108. resources:
    109. - leases
    110. verbs:
    111. - create
    112. - get
    113. - list
    114. - update

    4.绑定权限

    1. apiVersion: rbac.authorization.k8s.io/v1
    2. kind: ClusterRoleBinding
    3. metadata:
    4. name: loggie-user-role-bind
    5. namespace: loggie
    6. roleRef:
    7. apiGroup: rbac.authorization.k8s.io
    8. kind: ClusterRole
    9. name: loggie-user-role
    10. subjects:
    11. - apiGroup: rbac.authorization.k8s.io
    12. kind: User
    13. name: loggie

    5.非master节点创建用户

    创建private key

    1. openssl genrsa -out john.key 2048
    2. openssl req -new -key john.key -out john.csr -subj "/CN=john"
    3. openssl req -in john.csr -text

    任意用户创建CSR(CertificateSigningRequest)

    1. cat <<EOF | kubectl apply -f -
    2. apiVersion: certificates.k8s.io/v1
    3. kind: CertificateSigningRequest
    4. metadata:
    5. name: john
    6. spec:
    7. request: $(cat john.csr | base64 | tr -d '\n')
    8. signerName: kubernetes.io/kube-apiserver-client
    9. usages:
    10. - client auth
    11. EOF
    12. kubectl get csr john

    k8s管理员批准CSR,并导出证书

    1. kubectl certificate approve john
    2. kubectl get csr john -o jsonpath='{.status.certificate}'| base64 -d > john.crt

  • 相关阅读:
    springboot基础(28):jdbcTemplate
    二叉树刷题
    实验:vlan的基本配置
    Stable Diffusion 关键词tag语法教程
    Jmeter 命令式执行脚本,使用windows bat 命令进行全自动静默获取token
    redis系列之——高可用(主从、哨兵)
    Altair:Python数据可视化库的魅力之旅
    完整数字华容道02:软件结构设计
    Java SE String类(一):常用方法(上)
    Python logging模块:别再用print来打印啦~
  • 原文地址:https://blog.csdn.net/qq_32783703/article/details/126728612