Postman和Java Client访问K8s

K8s的所有操作基本都是通过调用kube-apiserver这个组件进行的,它提供了restful api供外部系统访问,当然为了保证整个k8s集群的安全性,k8s提供了多种认证方式来保证集群的安全性:比如客户端证书、静态token、静态密码文件、ServiceAccountTokens等等。你可以同时使用一种或多种认证方式。只要通过任何一个都被认作是认证通过,我们一般都是使用证书方式:客户端证书认证叫作TLS双向认证(关于SSL/TLS认证的可以参考这篇文章《SSL/TLS协议运行机制的概述》),也就是服务器客户端互相验证证书的正确性,在都正确的情况下协调通信加密方案。下面来看下如何配置客户端证书验证,我们通过配置一个kubeconfig文件来讲解下

Postman和Java Client访问K8s_第1张图片

红框标出的3个参数分别如下:
certificate-authority CA 证书的路径。
client-certificate TLS 证书文件
client-key TLS Key 文件
注意以上3个文件是由k8s集群服务端授权生成的,需要服务端提供给客户端。
下面我们分别介绍下如何通过Postman和java client来调用kube-apiserver提供的api

Postman访问kube-apiserver

Postman和Java Client访问K8s_第2张图片
这里我们以获取集群某个namespaces下面所有的pod列表api来演示,我们直接通过Postman发起一个get请求,可以看到报403 Forbidden错误。这是因为k8s集群开启了客户端证书认证,我们可以通过下面的办法来解决这个问题。

  • 首先确保Postman是最新版本,最新版本可以支持添加证书
  • 打开设置,把SSL certificate verification关闭,然后点击证书 tab添加证书,分别输入kube-apiserver地址,证书文件和秘钥,然后添加
    Postman和Java Client访问K8s_第3张图片   Postman和Java Client访问K8s_第4张图片
  • 最后重新访问,可以看到此时http请求返回200,可以正常访问(注意postman请求地址不要添加端口号)
    Postman和Java Client访问K8s_第5张图片





    另外我们通过command+option+c可以打开postman的console,可以看到发送的请求会自动附带Client Certificate信息
    Postman和Java Client访问K8s_第6张图片

Java client访问kube-apiserver

pom.xml文件添加以下依赖

Postman和Java Client访问K8s_第7张图片

Postman和Java Client访问K8s_第8张图片

 

以上强调一下,上述配置的kubeconfig中需要显示指定访问的k8s cluster的server地址

你可能感兴趣的:(postman-k8s-api)