运营商隐藏应用程序的复杂性和Kubernetes。而不是处理豆荚、StatefulSets吨YAML体现,和各种配置文件,用户谈判Kubernetes API提供一个现成的应用程序。操作员自动规定并公开应用程序所需的所有资源。不过,总有一个风险,用户想要做一些手工可以负面影响应用程序和操作符逻辑。
在这篇文章中,我们将解释如何限制用户的访问范围,避免手动更改数据库集群部署雷竞技下载官网Percona运营商。为此,我们将依靠Kubernetes基于角色的访问控制(RBAC))。
我们的目标
我们将有两个角色:管理员和开发人员。管理员将部署操作,创建必要的角色,和服务帐户。开发人员将能够:
- 创建、修改和删除自定义Percona运营商使用的资源雷竞技下载官网
- 列出所有的资源,用户可能想要调试的问题
开发人员将不能:
- 创建、修改或删除任何其他资源

结果,开发人员将能够部署和管理数据库集群通过一个自定义资源,但不能修改任何控股资源,像豆荚,服务,持久卷索赔等。
行动
我们将提供一个示例雷竞技下载官网基于Percona Percona运营商MySQL XtraDB集群(PXC)刚刚版本1.12.0发布。
管理员
创建一个专门的名称空间
我们将允许用户管理集群在一个名称空间刺激- - - - - -星展银行:
|
1
|
美元
kubectl
创建
名称空间
刺激- - - - - -星展银行
|
部署操作符
使用任何中描述的方法我们的文档运营商部署到名称空间。我个人最喜欢将简单的kubectl命令:
|
1
|
美元
kubectl
应用
- - - - - -f
https
:/ /生
.githubusercontent
com/雷竞技下载官网/雷竞技下载官网- - - - - -xtradb- - - - - -集群- - - - - -操作符/v1
。
12.0/部署/包
.yaml
|
创建ClusterRole
ClusterRole资源定义了权限的用户将Kubernetes中一个特定的资源。你可以找到YAML在github库。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
- - - - - -
apiGroups
:
(
“pxc.雷竞技下载官网percona.com”
]
资源
:
(
“*”
]
动词
:
(
“*”
]
- - - - - -
apiGroups
:
(
”“
]
资源
:
- - - - - -
豆荚
- - - - - -
豆荚/执行
- - - - - -
豆荚/日志
- - - - - -
configmaps
- - - - - -
服务
- - - - - -
persistentvolumeclaims
- - - - - -
秘密
动词
:
- - - - - -
得到
- - - - - -
列表
- - - - - -
看
|
正如你所看到的,我们允许任何操作pxc.雷竞技下载官网perconacom资源,但限制别人得到,列表和手表。
|
1
|
美元
kubectl
应用
- - - - - -f
https
:/ /github
com/spron- - - - - -在/博客- - - - - -数据/团/主/rbac- - - - - -运营商/clusterrole
.yaml
|
创建ServiceAccount
我们要生成一个kubeconfig服务帐户。这就是用户要使用连接到Kubernetes API。
|
1
2
3
4
5
|
apiVersion
:
v1
类
:
ServiceAccount
元数据
:
的名字
:
数据库- - - - - -经理
名称空间
:
刺激- - - - - -星展银行
|
|
1
|
美元
kubectl
应用
- - - - - -f
https
:/ /生
.githubusercontent
com/spron- - - - - -在/博客- - - - - -数据/主/rbac- - - - - -运营商/serviceaccount
.yaml
|
创建ClusterRoleBinding
我们需要分配ClusterRole到ServiceAccount。ClusterRoleBinding作为这两个之间的关系。
|
1
|
美元
kubectl
应用
- - - - - -f
https
:/ /github
com/spron- - - - - -在/博客- - - - - -数据/团/主/rbac- - - - - -运营商/clusterrolebinding
.yaml
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
apiVersion
:
rbac
.authorization
.k8s
.io/v1
类
:
ClusterRoleBinding
元数据
:
的名字
:
雷竞技下载官网- - - - - -数据库- - - - - -经理- - - - - -绑定
名称空间
:
刺激- - - - - -星展银行
roleRef
:
apiGroup
:
rbac
.authorization
.k8s
.io
类
:
ClusterRole
的名字
:
雷竞技下载官网- - - - - -pxc- - - - - -rbac
主题
:
- - - - - -
类
:
ServiceAccount
的名字
:
数据库- - - - - -经理
名称空间
:
刺激- - - - - -星展银行
|
开发人员
验证
可以- - - - - -我命令允许您验证服务帐户真的可以做我们想做的事。让我们试一试:
|
1
2
3
4
5
|
美元
kubectl
身份验证
可以- - - - - -我
创建
雷竞技下载官网perconaxtradbclusters
.pxc
.雷竞技下载官网percona
com
- - -作为=系统
:
serviceaccount
:
刺激- - - - - -星展银行
:
数据库- - - - - -经理
是的
美元
kubectl
身份验证
可以- - - - - -我
删除
服务
- - -作为=系统
:
serviceaccount
:
刺激- - - - - -星展银行
:
数据库- - - - - -经理
没有
|
所有的好。我可以创建Percona 雷竞技下载官网XtraDB集群,但是我不能删除服务。请注意,有时它可能是有用的,允许开发人员删除豆荚迫使集群复苏。如果你觉得需要,请修改ClusterRole。
应用
有很多方法可以使用此服务帐户。你可以阅读更多关于它Kubernetes文档中。快速演示,我们将生成一个kubeconfig,我们可以与我们的用户分享。
运行这脚本生成配置。它所做的:
- 获取服务帐户秘密资源名
- 提取证书颁发机构(ca.crt)内容的秘密
- 提取的令牌的秘密
- 得到的端点Kubernetes API
- 生成kubeconfig使用上述所有
|
1
|
美元
bash
生成- - - - - -kubeconfig
. sh
>
tmp- - - - - -kube
config
|
现在让我们来看看它的工作原理如预期:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
美元
KUBECONFIG=tmp- - - - - -kube
config
- - - - - -n
刺激- - - - - -星展银行
应用
- - - - - -f
https
:/ /生
.githubusercontent
com/雷竞技下载官网/雷竞技下载官网- - - - - -xtradb- - - - - -集群- - - - - -操作符/v1
。
12.0/部署/cr
.yaml
雷竞技下载官网perconaxtradbcluster
.pxc
.雷竞技下载官网percona
com/cluster1
创建
美元
KUBECONFIG=tmp- - - - - -kube
config
kubectl
- - - - - -n
刺激- - - - - -星展银行
得到
豆荚
的名字
准备好了
状态
重新启动
年龄
cluster1- - - - - -haproxy- - - - - -0
2/2
运行
0
15米
cluster1- - - - - -haproxy- - - - - -1
2/2
运行
0
14米
cluster1- - - - - -haproxy- - - - - -2
2/2
运行
0
14米
cluster1- - - - - -pxc- - - - - -0
3/3
运行
0
15米
cluster1- - - - - -pxc- - - - - -1
3/3
运行
0
14米
cluster1- - - - - -pxc- - - - - -2
3/3
运行
0
13米
雷竞技下载官网- - - - - -xtradb- - - - - -集群- - - - - -操作符- - - - - -77年bf8b9df5- - - - - -qglsg
1/1
运行
0
52米
|
我能够创建自定义资源和集群。让我们试着删除舱:
|
1
2
|
美元
KUBECONFIG=tmp- - - - - -kube
config
kubectl
- - - - - -n
刺激- - - - - -星展银行
删除
豆荚
cluster1- - - - - -haproxy- - - - - -0
错误
从
服务器
(
被禁止的
)
:
豆荚
“cluster1-haproxy-0”
是
被禁止的
:
用户
“系统:serviceaccount: prod-dbs:数据库管理器”
不能
删除
资源
“豆荚”
在
API
集团
”“
在
的
名称空间
“prod-dbs”
|
自定义资源呢?
|
1
2
|
美元
KUBECONFIG=tmp- - - - - -kube
config
kubectl
- - - - - -n
刺激- - - - - -星展银行
删除
pxc
cluster1
雷竞技下载官网perconaxtradbcluster
.pxc
.雷竞技下载官网percona
com
“cluster1”
删除
|
结论
雷竞技下载官网Percona运营商自动化Kubernetes数据库的部署和管理。最小特权原则应该应用于最小化的能力没有经验的用户影响可用性和数据完整性。Kubernetes带有复杂的基于角色的访问控制功能,允许你这样做而不需要重塑它在平台或应用程序。






