栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

API-server认证机制下

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

API-server认证机制下

前面演示了如何通过静态token和x509的方式完成认证,接着看看如何集成外部认证服务完成kube-apiserver的认证。

为了演示如何通过webhook完成认证,首先需要创建webhook服务,并在本地启动它,具体webhook服务的代码请看这里。 这里的makefile配置的操作系统是Linux,如果是mac电脑,需要修改makefile中“GOOS=darwin”。该webhook的服务大致的作用是讲APIServer的发送过来的请求进行decode,如果decode成功则把信息转发给认证服务(这里用的github,因为github上可以生存token,然后完成认证的功能,实际项目中应该是转发到企业的认证服务上)。github认证完成后,返回认证结果信息,webhook将认证结果信息返回给apiserver。

webhook服务在本地启动后,可以访问3000端口checkwebhook服务是否启动成功。

webhook服务启动后,如何让APIServer知道需要把请求转发到webhook呢?这里就需要先创建webhook-config.json文件,具体内容如下,可以看到下面的api对象是一个Config对象,这里最主要的是server信息配置,这里的IP地址是本机的IP地址,因为上面的webhook服务启动后是监听3000端口,所以这里server地址是http://xxx:3000/authenticate.

{
  "kind": "Config",
  "apiVersion": "v1",
  "preferences": {},
  "clusters": [
    {
      "name": "github-authn",
      "cluster": {
        "server": "http://xx.xx.xx.xx:3000/authenticate"
      }
    }
  ],
  "users": [
    {
      "name": "authn-apiserver",
      "user": {
        "token": "secret"
      }
    }
  ],
  "contexts": [
    {
      "name": "webhook",
      "context": {
        "cluster": "github-authn",
        "user": "authn-apiserver"
      }
    }
  ],
  "current-context": "webhook"
}

接着,将该文件存放到集群中的/etc/config目录下,然后修改/etc/kubernetes/manifests/kube-apiserver.yaml,增加webhook-config的配置。

修改kube-apiserver.yaml文件后,kube-apiserver会自动重启,执行“kubectl get pod”能正常返回信息则重启成功,如果提示localhost:xxx:6443 connect refuse,说明kube-apiserver重启失败,需要检查kube-apiserver.yaml文件配置是否正确。

kube-apiserver.yaml文件修改成功后,接着在github上生成一个token.

修改~/.kube/config文件,新增一个user,且user的token是刚刚在github生成的token

此时,用githubuser获取pod信息,会返回403的信息,说明认证已经通过,只是该用户无权限访问pod资源而已。

kubectl get po --user githubuser

以上就是通过集成外部认证服务完成kube-apiserver认证的过程。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/893921.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号