首页 > 其他分享 >例子

例子

时间:2024-05-10 10:34:11浏览次数:9  
标签:kubectl kubernetes -- devuser kubeconfig cfssl 例子

例子

需要注意的是,k8s不会提供用户管理,那么User、Group、ServiceAccount指定的用户又是从哪里来的呢?

k8s组件(kubelet、kube-proxy)或其他自定义的用户在向CA申请证书时,需要提供一个证书请求文件

API Server会把客户端证书的CN字段作为User,把names.O字段作为Group

kubelet使用TLS Bootstraping认证时,API Server可以使用Bootstrap Tokens或者Token authentication file验证=token,无论哪一种,k8s都会为token绑定一个默认的User和Group

Pod使用ServiceAccount认证时,service-account-token中的JWT会保存User信息

有了用户信息,再创建一对角色/角色绑定(集群角色/集群角色绑定)资源对象,就可以完成权限绑定了

创建一个dev命名空间,使devuser能在dev命名空间中访问集群资源

创建证书请求

vim /root/test-yaml/cert/devuser/devuser-csr.json

{
  "CN": "devuser",
  "hosts": [],
  "keys": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "BeiJing",
      "L": "BeiJing",
      "O": "k8s",
      "OU": "System"
    }
  ]
}

下载证书创建工具

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64

mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo

chmod +x /usr/local/bin/*

创建证书

cd /etc/kubernetes/pki
cfssl gencert -ca=ca.crt -ca-key=ca.key -profile=kubernetes /root/test-yaml/cert/devuser/devuser-csr.json | cfssljson -bare devuser

# -ca 指定证书
# -ca-key 指定私钥

设置集群参数

export KUBE_APISERVER="https://172.21.16.17:6443"

cd /root/test-yaml/cert/devuser
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/pki/ca.crt \
--embed-certs=true \
--server=${KUBE_APISERVER} \
--kubeconfig=devuser.kubeconfig

# --certificate-authority 指定证书
# --embed-certs 开启证书认证
# --server 指定服务器
# --kubeconfig 指定生成的文件

设置客户端认证参数

kubectl config set-credentials devuser \
--client-certificate=/etc/kubernetes/pki/devuser.pem \
--client-key=/etc/kubernetes/pki/devuser-key.pem \
--embed-certs=true \
--kubeconfig=devuser.kubeconfig

# --client-certificate 指定客户端证书
# --client-key 指定客户端私钥
# --embed-certs 开启证书认证
# --kubeconfig 指定生成的文件

设置上下文参数,绑定命名空间

kubectl create namespace dev

kubectl config set-context kubernetes \
--cluster=kubernetes \
--user=devuser \
--namespace=dev \
--kubeconfig=devuser.kubeconfig

将证书文件赋予用户(部分为客户端命令)

useradd devuser
mkdir /home/devuser/.kube
cp /root/test-yaml/cert/devuser/devuser.kubeconfig /home/devuser/.kube/config
chown -R devuser.devuser /home/devuser/*

将clusterrole赋予dev命名空间中的devuser用户

kubectl create rolebinding devuser-admin-binding --clusterrole=admin --user=devuser --namespace=dev

切换默认上下文,使集群读取到配置信息

kubectl config use-context kubernetes --kubeconfig=/home/devuser/.kube/config
此时客户端 kubectl get pod 获取不到资源
kubectl run nginx -image=nginx 创建一个pod
kubectl get pod 来查看
因为不加命名空间默认是default,服务端也查看是在dev命名空间下,所以切换成功

标签:kubectl,kubernetes,--,devuser,kubeconfig,cfssl,例子
From: https://www.cnblogs.com/lixunblogs/p/18167060

相关文章

  • 案例分析:通过两个学生项目的例子,推断出这些团队的血型:1、STG游戏的跳票(为了完美,推迟了
    案例分析:通过两个学生项目的例子,推断出这些团队的血型:1、STG游戏的跳票(为了完美,推迟了7天,但是7天之后也没有发布……)我怀着无比沉痛的心情宣布,我们的游戏因尚未达到预期的可玩性,为了不丢人现眼,延迟发布i天(i<=7)。我们在起初的计划中,以发布后一周的下载量作为项目衡量的标准。虽......
  • 案例分析:通过两个学生项目的例子,推断出这些团队的血型:
    根据这两个案例,我们可以推断出两个团队的血型:STG游戏团队:这个团队倾向于AB型血。他们非常注重完美主义,愿意为了达到自己设定的标准而推迟项目发布。然而,这种完美主义可能导致项目进度受阻,甚至出现跳票的情况。他们会花费额外的时间和精力来确保产品质量,但有时会忽视时间管理和项......
  • 一个pybind11的例子
    首先在当前文件夹下安装pybind11。然后编写以下3个文件:1、CMakeLists.txtcmake_minimum_required(VERSION3.5)project(exampleLANGUAGESCXX)add_subdirectory(pybind11)pybind11_add_module(barbar.cpp)2、foo.pyimportbarhello_world=bar.HelloWorl......
  • 一个CMake的例子
    首先编写4个文件:1、CMakeLists.txt内容:cmake_minimum_required(VERSION3.15)project(Demo)include_directories(${PROJECT_BINARY_DIR}/headers)aux_source_directory(${PROJECT_BINARY_DIR}/sourcesSRC_DIR)add_library(dynamic_librarySHARED${SRC_DIR})add_libr......
  • 同步与互斥的失败例子-02
    一句话理解同步与互斥:我等你用完厕所,我再用厕所。什么叫同步?就是条件不允许,我要等等。什么是互斥?你我早起都要用厕所,谁先抢到谁先用,中途不被打扰。同步与互斥经常放在一起讲,是因为它们之的关系很大,“互斥”操作可以使用“同步”来实现。我“等”你用完厕所,我再用厕所。这不就是......
  • 大语言模型(LLM)的逻辑推理能力的例子 —— 以ChatGPT3.5为例
    例子:......
  • spring-securty-oauth2使用例子
    oauth2概念https://www.cnblogs.com/LQBlog/p/16996125.html环境搭建1.引入依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-oauth2</artifactId></depen......
  • stm32 例子 人数统计
      1单纯统计进出人数 #definepin_RED1PA0#definepin_RED2PA1intpeople_useNum=0;intstate_RED1=0;//红外1intstate_RED2=0;//红外2intcar_state[2]={0,0};intcar_oldstate[2]={0,0};voidsetup(){Serial.begin(9600);pi......
  • C#的窗体假关闭操作例子 - 开源研究系列文章
          晚上编码的时候,想到了以前编写的窗体关闭的事情,就是带托盘图标的应用,有一个主显示操作窗体,但是主窗体点击关闭按钮的时候,实际上是窗体隐藏而非真正关闭,这个在其它的一些应用程序里有这个效果。于是就想到了这个例子,记录下来,如果其他读者也有这个问题,那直接复用此例子......
  • stm32例子 串口接受oled屏幕不卡显示
      #include<Arduino.h>#include<U8g2lib.h>#ifdefU8X8_HAVE_HW_SPI#include<SPI.h>#endif#ifdefU8X8_HAVE_HW_I2C#include<Wire.h>#endifU8G2_SSD1306_128X64_NONAME_F_SW_I2Cu8g2(U8G2_R0,/*clock=*/PB6,/*data=*/PB......