一、k8s集群安全机制
1. 概述
(1)访问k8s集群的时候,需要经过三个步骤完成具体操作
第一步:认证
第二步:鉴权(授权)
第三步:准入控制
(2)进行访问的时候,过程中都需要经过apiserver,apiserver做统一协调,比如门卫。
访问过程中需要证书、token、或者用户名+密码
如果访问pod,需要serverAccount。
- 第一步 认证 传输安全
*传输安全:对外不暴露8080端口,只能内部访问,对外部使用端口6443
*认证
客户端身份认证常用方式:
- https证书认证,基于ca证书
- http token认证,通过token识别用户
- http基本认证,用户名+密码认证
第二步 鉴权(授权)
- 基于RBAC进行鉴权操作
- 基于角色访问控制
第二步 鉴权(授权)
- 基于RBAC进行鉴权操作
- 基于角色访问控制
2. RBAC——基于角色的访问控制
- 角色
role:特定命名空间访问权限
ClusterRole:所有命名空间访问权限
- 角色绑定
rolebinding:角色绑定到主体
ClusterRoleBinding:集群角色绑定到主体
主体
user:用户
group:用户组
serviceAccount:服务账号
例子:
二、Ingress
- 把端口号对外暴露,通过IP+端口号进行访问
使用Service里面的NodePort实现 - NodePort缺陷
- 在每个节点上都会启动一个端口,在访问的时候通过任何节点,通过节点IP+暴露端口号实现访问
- 意味着每个端口只能使用一次,一个端口对应一个应用
- 实际访问中都是用域名,根据不同域名跳转到不同端口服务中
- Ingerss和Pod关系
- pod和ingress通过service关联的
- ingress作为统一入口,由service关联一组pod
4、ingress工作流程
- ingress不是k8s内置的,需要部署。
- 使用ingress——以nginx为例
第一步 部署ingress Controller
第二步 创建ingress规则
6、使用ingress对外暴露应用
(1)创建nginx应用,对外暴露端口使用NodePort
(2)部署ingress controller,详细yaml文件内容参考这篇文章
(3)创建ingress规则
(4)在Windows系统hosts文件中添加域名访问规则
没看懂没关系,详细操作以及yaml文件参考文章通过域名访问服务