要资料 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   成长之路  
会员   
 
追随技术信仰

随时听讲座
每天看新闻
 
 

Kubernetes教程
Kubernetes概述
Kubernetes设计架构
kubernetes设计理念
创建Kubernetes集群
基于Docker本地运行Kubernetes
使用Vagrant
本地运行Kubrenetes v1.0
Google Computer Engine入门
AWS EC2快速入门
在Azure上使用CoreOS和Weave的 Kubernetes
从零开始k8s
CoreOS部署Kubernetes集群
CloudStack部署Kubernetes集群
vSphere部署Kubernetes集群
Ferdora部署Kubernetes集群
CentOS部署Kubernetes集群
Ubuntu物理节点上部署Kubernets集群
Mesos部署Kubernetes集群
Kubernetes用户指南:应用程序管理
名词解释 Pods
名词解释 Labels
名词解释:Namespace
名词解释 Replication Controller
名词解释:Node
名词解释:ReplicaSets
名词解释 Services
名词解释 Volumes
名词解释:PV/PVC/StorageClass
名称解释:Deployment
名词解释:Secret
名词解释:StatefulSet
名词解释:DaemonSet
名词解释:Service Account
名词解释:CronJob
名词解释:Job
名词解释:Security Context和PSP
名词解释:Resource Quotas
名词解释:Network Policy
名词解释:Ingress
名词解释:ThirdPartyResources
名词解释:ConfigMap
名词解释:PodPreset
配置Kubernetes
管理应用:部署持续运行的应用
Horizontal Pod Autoscaling
管理应用:连接应用
管理应用: 在生产环境中使用Pods和容器
Kubernetes UI
Kube-API Server
授权插件
认证插件
API Server端口配置
Admission Controller
Service Accounts集群管理指南
使用Kubernetes在云上原生部署cassandra
Spark例子
Storm 示例
示例: 分布式任务队列 Celery, RabbitMQ和Flower
Kubernetes在Hazelcast平台上部署原生云应用
Meteor on Kuberenetes
配置文件使用入门
环境向导示例
在Kubernetes上运行你的第一个容器
kubectl
安装和设置kubectl
kubectl annotate
kubectl api-versions
kubectl apply
kubectl attach
kubectl cluster-info
kubectl config
 
 

认证插件
 
47 次浏览
9次  
 捐助

Kubernetes使用客户端证书,令牌,或者HTTP基本身份验证用户的API调用。

在API服务器中配置—client-ca-file=SOMEFILE选项,就会启动客户端证书认证。引用文件必须包含一个或多个认证机制,通过认证机制验证传给API服务器的客户端证书。当一个客户端证书通过认证,该证书主题的名字就被作为该请求的用户名。

在API服务器中配置选项:–token-auth-file=SOMEFILE, 启动Token认证。目前,Token没有有效期,必须重启API服务,Token列表的更改才会生效。

令牌文件格式路径:plugin/pkg/auth/authenticator/token/tokenfile/…,该文件是一个CSV文件,含有三行:Token,用户名,用户uid。

当http客户端使用Token认证,apiserver需要含有Bearer Sometoken值的一个Authorization头。

OpenID Connect ID Token,传递下面的参数给apiserver:

–oidc-issuer-url (必须) API Server连接到OpenID提供者的URL, 只接受HTTPS协议。

–oidc-client-id (必须) API Server用于验证Token用户,合法的ID Token在它的aud参数(aud claims 翻译待考虑)中包含该client-id。

–oidc-ca-file (可选) API Server用于和OpenID提供者建立和验证安全连接。

–oidc-username-claim (可选, 实验性参数) 指定用户名对应的OpenID。默认设置为sub参数,在指定域中是唯一的,不可变的。集群管理员可以选择其它参数如email,作为用户名,但不保证其唯一性和不变性。

请注意,这个标志仍然处于试验阶段,如果我们可以处理更多关于OpenID用户和Kubernetes用户的映射关系,便可以开始使用。因此,未来的变化还是很有可能的。

目前,该ID Token会通过一些第三方应用程序获取。这意味着应用程序必须和API Server共享该配置–oidc-client-id。

如Token文件,当从HTTP客户端使用Token认证方式,API Server希望在Authorization头添加一个Bearer SOMETOKEN的值。

启动基本认证,需要在API Server配置选项—basic_auth_file=SOMEFILE。当前,基本认证凭据是无限期的,而且重启API Server,密码的修改才会生效。需要注意,基本认证方式是更安全的模式,更容易使用,更通用。

基本认证文件格式,plugin/pkg/ auth/authenticator /password/passwordfile/…,该文件是一个CSV文件,含有三个值,密码,用户名和用户id。 如果在HTTP客户端使用基本认证,APIServer需要一个值是Basic BASE64ENCODEDUSER:PASSWOR的Authorization头。

Keystone认证会在API Server启动的时候把–experimental-keystone-url=’AuthURL’参数传给API Server,该认证就会生效。该插件在plugin/pkg/auth /authenticator/request/ keystone/keystone.go文件中实现。

插件开发

我们计划给Kubernetes API Server解决Token问题。使用“bedrock”认证用户,外部提供者给Kubernetes。我们计划使Kubernetes和一个Bedrock认证提供者(如github.com,google.com,Enterprise Directory, Kerberos等等)之间的接口开发更容易。

附录

创建证书

客户端证书认证,用户可以手动产生证书,也可以使用已经存在的脚本部署。

部署脚本路径在cluster/saltbase/salt/generate-cert/make-ca-cert.sh。执行该脚本需要两个参数,一个是API Server的IP地址,另一个是IP:或者DNS:主题备用名称的列表。该脚本会产生三个文件,ca.crt,server.crt和server.key。最后,添加下面的参数作为API Server的启动参数, –client-ca-file=/srv/kubernetes/ca.crt,–tls-cert-file=/srv/kubernetes/server.cert,–tls-private-key-file=/srv/kubernetes/server.key。

Easyrsa可以用来为你的集群手动生成证书。

1. 下载,解压,初始化Easyrsa3的补丁版本。

curl -L -O https://storage.googleapis.com/kubernetes-release/easy-rsa/easy-rsa.tar.gz
tar xzf easy-rsa.tar.gz
cd easy-rsa-master/easyrsa3
./easyrsa init-pki

2. 产生一个CA. (–batch设置自动模式。–req-cn使用默认CN。)

./easyrsa –batch “–req-cn=${MASTER_IP}@date +%s” build-ca nopass

3. 产生服务器证书和秘钥。(build-server-full [文件名]:给客户端和服务器生成一个本地的秘钥对和信号)

./easyrsa –subject-alt-name=”IP:${MASTER_IP}” build-server-full kubernetes-master nopass

4. 复制pki/ca.crt,pki/issued/kubernetes-master.crt,pki/private/kubernetes-master.key到你的目录。

5. 记得填写参数–client-ca-file=/yourdirectory/ca.crt,–tls-certfile=/yourdirectory/server.cert,–tls-private-key-file=/yourdirectory/server.key,并作为API Server的启动参数。

Openssl也可以用来给你的集群手动生成证书。

1. 使用2048bit生成ca.key:openssl genrsa -out ca.key 2048

2. 根据ca.key生成ca.crt。(-days设置证书的有效时间)。

openssl req -x509 -new -nodes -key ca.key -subj “/CN= ${MASTER_IP}” -days 10000 -out ca.crt

3. 使用2048bit生成server.key:openssl genrsa -out server.key 2048

4. 根据server.key生成server.csr。

5. 根据ca.key,ca.crt和server.csr生成server.crt。

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000

6. 查看证书:openssl x509 -noout -text -in ./server.crt。 最后,记得填写参数,并作为APIServer的启动参数。


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



47 次浏览
9次
 捐助
 

每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号