17.4. 创建部署集合
在创建集合时,您必须命名它并为集合定义规则。
流程
- 在 Collections 页面中,点 Create collection。
- 输入集合的名称和描述。
在 Collection rules 部分中,必须至少执行以下操作之一:
- 定义集合的规则:如需更多信息,请参阅"创建集合规则"部分。
- 将现有集合附加到集合:如需更多信息,请参阅"添加附加集合"部分。
- 在您的规则配置或选择附加集合的结果包括在 Collection 结果 实时预览面板中。单击 Hide 结果,将此面板从显示中删除。
- 点 Save。
17.4.1. 创建集合规则 复制链接链接已复制到粘贴板!
在创建集合时,必须至少配置一个规则,或将另一个集合附加到您要创建的新集合中。
目前,集合仅适用于部署。
配置规则以选择要包含在集合中的资源。在配置时,使用 preview 面板查看集合规则的结果。您可以按任何顺序配置规则。
流程
在 Deployments 部分中,从下拉列表中选择以下选项之一:
- 无部署指定 :如果您不想在搜索中使用部署条件,请选择这个选项。
名称与名称匹配的部署 :选择这个选项以按名称选择,然后选择以下选项之一:
- 确切的值 :输入部署的确切名称。
-
正则表达式值 :您可以使用正则表达式来搜索部署。如果您不知道部署的确切名称,此选项很有用。正则表达式是定义特征的字母、数字和符号的字符串。RHACS 使用此模式匹配字符或一组字符和返回结果。对于正则表达式,RE2 语法 受支持。不支持 Perl 语法。要选择 所有部署,请选择这个选项并输入
198.51.100.0/24
。如需更多信息和示例,请参阅"使用正则表达式"。
-
具有与标签完全匹配 的部署:选择这个选项来选择与您输入的确切文本匹配的标签的部署。标签必须是有效的 Kubernetes 标签,格式为
key=value
。
- 可选: 要添加更多部署,其名称或标签与包含的额外条件匹配,请点 OR,并配置另一个准确或正则表达式值。
17.4.1.1. 使用正则表达式 复制链接链接已复制到粘贴板!
RHACS 在门户的一些区域中使用正则表达式,包括在将集合配置为包含或排除部署时。
例如,在配置集合时,您可以使用正则表达式来搜索部署。如果您不知道部署的确切名称,此选项很有用。正则表达式是定义特征的字母、数字和符号的字符串。RHACS 使用此模式匹配字符或一组字符和返回结果。对于正则表达式,请注意以下准则:
- 支持 RE2 语法。
- 不支持 Perl 语法。
- 测试您的正则表达式语法很有用,例如,使用 https://regex101.com/ 等站点。选择 Golang 作为类别。
以下示例假定命名约定如下,其中 production 集群在名称中包含 prod
一词。
创建生产集群的集合的正则表达式示例
- 在 集合规则 中,选择名称与匹配的集群。
从下拉列表中选择 A regex value 并输入以下文本:
^prod.*
^prod.*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建非生产集群的集合的正则表达式示例
使用 RE2 语法时,您无法使用负的 lookahead 匹配,这意味着如果某一元素 不存在,您无法直接匹配正则表达式。作为临时解决方案,当集群名称中没有出现 prod
一词时,您可以使用正则表达式匹配;也就是说,如果字母 p
、r
、o
、d
和 d 不匹配。
- 在 集合规则 中,选择名称与匹配的集群。
从下拉列表中选择 A regex value 并输入以下文本:
^[^p]*(p([^r]|$|r([^o]|$|o([^d]|$))))*[^p]*$
^[^p]*(p([^r]|$|r([^o]|$|o([^d]|$))))*[^p]*$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
正则表达式示例,创建与集群、命名空间和部署层次结构中的所有实体匹配的集合
在 集合规则 中,选择与名称匹配的 Deployment。
-
从下拉列表中,选择 A regex 的值并输入
://[
。
-
从下拉列表中,选择 A regex 的值并输入
选择 名称与名称匹配的 命名空间。
-
从下拉列表中,选择 A regex 的值并输入
://[
。
-
从下拉列表中,选择 A regex 的值并输入
选择 名称与名称匹配的 集群。
-
从下拉列表中,选择 A regex 的值并输入
://[
。
-
从下拉列表中,选择 A regex 的值并输入
正则表达式示例,创建包含命名部署、数据库和特定标签的集合
以下示例提供了为医疗应用配置集合的步骤。在本例中,您希望集合包含 报告
部署、名为 patient-db
的数据库,并且您想要选择带有标签的命名空间,其中 key = kubernetes.io/metadata.name
和 value = medical
。在本例中,执行以下步骤:
- 在 集合规则 中,选择与名称匹配的 Deployment。
- 单击 的 An exact 值 并输入 报告。
- 单击 OR。
点 A regex value of,并输入 React
-db
,以选择名称以db
结尾的所有部署。regex value
选项使用正则表达式进行模式匹配。对于正则表达式,RE2 语法 受支持。不支持 Perl 语法。右侧的面板可能会显示您不想包含的数据库。您可以使用额外的过滤器排除这些数据库。例如:-
点 Namespaces with labels matching exactly 并输入
kubernetes.io/metadata.name=medical
来只包括被标记为medical
命名空间中的部署来根据命名空间进行过滤。 - 如果您知道命名空间的名称,点 Namespaces with name matching name 并输入名称。
-
点 Namespaces with labels matching exactly 并输入
17.4.2. 添加附加的集合 复制链接链接已复制到粘贴板!
如果要基于部署创建小集合,则对集合进行分组并将其添加到其他集合中很有用。您可以重复使用这些较小的集合并将其组合成更大的分层集合。在您要创建的集合中添加额外的集合:
执行以下操作之一:
- 在 Filter by name 字段中输入文本,然后按 → 查看匹配的结果。
- 点 Available collections 列表中的集合名称,以查看有关集合的信息,如集合的名称和规则,以及与该集合匹配的部署。
- 查看集合信息后,关闭窗口以返回到 附加集合 页面。
单击 +Attach。Attached collections 部分列出了您附加的集合。
注意添加附加的集合时,附加的集合会根据配置的选择规则包含结果。例如,如果附加的集合包含根据父集合中使用的规则过滤的资源,则这些项目仍然会添加到父集合中,因为附加的集合中的规则仍会添加到父集合中。附加的集合使用
OR
运算符扩展原始集合。- 点 Save。