Kubernetes API的配置和使用

我们经常会使用Kubectl命令行工具管理 K8s 集群,获取诸如Pods等资源的信息,但是有时候也会在应用程序中通过调用API的方式去获取集群信息。本篇介绍如何配置和使用。

1625356773025.jpg

如图所示,无论是具体的User用户,还是Service Account,都需要经过三个步骤能调用API:认证、鉴权和准入控制。一般情况都是通过Service Account的名义去查询集群信息,所以以SA为例,讲一下如何对某个SA赋权,对集群某个namespace只读权限。整体思路是基于RBAC原理。

一、创建SA

首先肯定需要创建SA,在default的namespace下,名为api-view。

kubectl create sa api-view -n default

二、创建Role

RBAC原理的话,下一步是创建“权限”,在k8s里就是role或者ClusterRole。两者区别是Role需要指定namespace,ClusterRole可以对集群作用域的资源都有效。本例创建的是Role,作用域是default,权限是对pod可以进行get、watch、list等读权限。

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pod-reader
  namespace: default
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

写完yaml文件后执行生效

kubectl apply -f role-read.yaml

三、创建RoleBinding

下一步是通过RoleBinding绑定SA和Role,roleRef里填写的是刚创建的Role:pod-reader,subject里填的是SA。

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: rolebinding-api-view-serviceaccount
  namespace: default
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: api-view
  namespace: default

同理执行生效

kubectl apply -f role-binding-api-veiw.yaml

四、获取Token

接下来就是获取token信息,执行步骤如下

kubectl get secret | grep api-view # 先查到secret
kubectl describe secret api-view-token-fdcng -n default # 获取token
1625357787629.jpg

五、调用API

准备工作已经全部就绪,可以拿着token去访问k8s api server了。

curl -k https://127.0.0.1:6443/api/v1/namespaces/default/pods -H "Authorization: Bearer <token xxxx>"

API的列表可以参考官网
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • https://www.cnblogs.com/tylerzhou/p/11094872.html[https:/...
    peerben阅读 3,573评论 0 0
  • API 访问控制 如上图所示,用户(User和Service Account)在调用API时会经过三个步骤:认证、...
    A_Zeee阅读 13,671评论 0 6
  • 网上基于Role+RoleBinding+ServiceAccount组合进行权限控制的介绍比较多,本篇主要介绍使...
    暴走的初号机阅读 7,486评论 0 1
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,924评论 2 7
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 11,279评论 0 4