微服务世界是一个令人兴奋的地方,我们正在见证快速、频繁、有意义的进步。 OpenShift/Kubernetes 生态系统中最近最重要的进展之一是引入了基于 Operator 的部署,我们在最近的一篇博客文章中提到了。
在本博客中,我们将描述如何使用 Redis Enterprise Operator 打包和部署来简化更复杂的应用程序、用例和有状态应用程序的安装过程。
以下是该过程的逐步概述。
要求
开始之前,请确保您拥有
步骤 1 – 登录
这将切换到您的项目,而不是默认项目(您可以使用 oc project 命令验证您当前使用的项目)。
步骤 2 – 获取部署文件
特别是对于 redis-enterprise-cluster yaml 文件,您也可以下载并编辑以下示例之一:simple、persistent、service broker 或使用存储库中提供的那个。
步骤 3 – 准备您的 yaml 文件
让我们看一下每个 yaml,看看需要编辑什么
scc(安全上下文约束)yaml 定义了集群的安全上下文约束,稍后我们将应用于我们的项目。我们强烈建议不要更改此 yaml 文件中的任何内容。但是,您确实需要通过键入以下内容来应用它:oc apply -f scc.yaml
您应该收到以下响应
securitycontextconstraints.security.openshift.io “redis-enterprise-scc” 已配置
现在,您需要通过键入以下内容将 scc 绑定到您的项目
oc adm policy add-scc-to-group redis-enterprise-scc system:serviceaccounts:your_project_name
(如果您不记得您的项目名称,请键入 oc project)
rbac(基于角色的访问控制)yaml 定义了谁可以访问哪些资源。我们需要这个来允许我们的 Operator 应用程序部署和管理整个 Redis Enterprise 部署(所有集群)。因此,我们强烈建议不要更改此 yaml 文件中的任何内容。要应用它,请键入
kubectl apply -f rbac.yaml
您应该收到以下响应
role.rbac.authorization.k8s.io/redis-enterprise-operator 已创建
serviceaccount/redis-enterprise-operator 已创建
rolebinding.rbac.authorization.k8s.io/redis-enterprise-operator 已创建
如果您要部署服务代理,也请应用 sb_rbac.yaml 文件。首先,编辑 sb_rbac.yaml 命名空间字段以反映您在之前的步骤中创建或切换到的命名空间。 sb_rbac(服务代理基于角色的访问控制)yaml 定义了 Redis Enterprise 服务代理的访问权限。我们需要这个来允许我们的服务代理应用程序公开和管理数据库计划。
作为第一步,编辑文件并更改以下内容
namespace: your_project_name
我们强烈建议不要更改此 yaml 文件中的任何其他内容。
要应用它,只需键入
kubectl apply -f sb_rbac.yaml
您应该收到以下响应
clusterrole.rbac.authorization.k8s.io/redis-enterprise-operator-sb 已配置
clusterrolebinding.rbac.authorization.k8s.io/redis-enterprise-operator 已配置
下一步应用 crd.yaml,为您的 Redis Enterprise 集群资源创建一个CustomResourceDefinition。这提供了另一个 API 资源,由 k8s API 服务器处理并由我们接下来将部署的 operator 管理。我们强烈建议不要更改此 yaml 文件中的任何内容。
要应用它,请键入
kubectl apply -f crd.yaml
您应该收到以下响应
customresourcedefinition.apiextensions.k8s.io/redisenterpriseclusters.app.redis.com 已配置
应用此 yaml 将创建 operator 部署,该部署负责管理 Redis Enterprise 集群的 k8s 部署和生命周期。在许多其他职责中,它创建了一个有状态集,该状态集运行 Redis Enterprise 节点(作为 Pod)。
始终确保您拥有最新的operator.yaml。或者,您可以编辑以下标签:image:redis/operator:tag
要应用 operator.yaml,请键入
kubectl apply -f operator.yaml
您应该收到以下响应
deployment.apps/redis-enterprise-operator 已创建
现在,运行 kubectl get Deployment 并验证您的 redis-enterprise-operator 部署正在运行。典型的响应将如下所示
mycluster yaml 定义了新创建的资源的配置:Redis Enterprise 集群。可以将此 yaml 重命名为your_cluster_name.yaml 以保持整洁,但这并不是强制步骤。
但是,必须编辑此 yaml 以反映您的集群的特定配置。以下是您应该查看和编辑的主要字段
服务类型值可以是 ClusterIP 或 LoadBalancer。这是一个基于 k8s 服务类型的可选配置。默认值为 ClusterIP。
persistentSpec
enabled: <false/true>
检查您的 Redis Software 节点的启用/禁用标志,以查看是否具有持久性。默认值为 false。
这指定了用于节点持久磁盘的StorageClass。当启用持久性时,这是强制性的(例如,AWS 使用“gp2”作为默认值,而 GKE 使用“pd-standard”作为默认值)。
例如
limits
cpu: “2000m”
memory: 4Gi
requests
cpu: “2000m”
memory: 4Gi
默认值(如果未指定)为 2 个内核 (2000m) 和 4GB (4Gi)。
使用启用/禁用标志指定服务代理的持久性。默认值为 false。
persistentSpec
storageClassName: “gp2“
imagePullPolicy: IfNotPresent
Repository: redis/redis
versionTag: 5.2.0-14 –
版本标签,因为它出现在您的存储库中(例如,在DockerHub 上)。
这是一个可选配置。如果省略,则默认为最新版本。
步骤 4 – 创建您的集群
设置了 your_cluster_name yaml 后,您需要应用它来创建您的 Redis Enterprise 集群
kubectl apply -f your_cluster_name.yaml
运行 kubectl get rec 并验证创建是否成功(rec 是“RedisEnterpriseClusters”的快捷方式)。
您应该收到类似于以下的响应
NAME AGE
your_cluster_name 17s
您的集群将在短时间内准备就绪,通常在几分钟内。
要检查集群状态,请键入以下内容
kubectl get pod
您应该收到类似于以下的响应
NAME | READY | STATUS | RESTARTS | AGE |
---|---|---|---|---|
your_cluster_name-0 | 1/1 | 运行中 | 0 | 1m |
your_cluster_name-1 | 1/1 | 运行中 | 0 | 1m |
your_cluster_name-2 | 1/1 | 运行中 | 0 | 1m |
your_cluster_name-controller-x-x | 1/1 | 运行中 | 0 | 1m |
Redis-enterprise-operator-x-x | 1/1 | 运行中 | 0 | 5m |
现在您只需要创建数据库并开始使用它们。
步骤 5 – 创建数据库
为了创建数据库,我们将登录到 Redis Enterprise UI。
注意:your_cluster_name-0 是您的集群 pod 之一。您可以考虑在后台运行端口转发命令。
注意:Openshift UI 提供了用于创建其他路由选项的工具,包括外部路由。 这些内容包含在RedHat Openshift 文档中。
接下来,创建您的数据库。
注意:为了通过 Telnet 进行 Ping 测试,您可以像上面描述的 UI 端口一样,为新创建的数据库端口创建新路由。 创建数据库后,转到 Openshift 管理控制台,选择您的项目名称,然后转到
应用程序->服务。 您将看到 2 个新创建的服务,它们代表数据库及其 IP 和端口信息,类似于下面的屏幕截图。
结论
OpenShift 简化了 Kubernetes 的使用,并提供了相当大的附加价值。 对基于 Operator 的安装的支持现在使部署 Redis Enterprise 集群变得更加容易。 如果您想了解有关 Redis Enterprise OpenShift 版本的更多信息,请联系我们。