微服务的世界是一个令人兴奋的地方,我们正在见证快速、频繁、有意义的进步。OpenShift/Kubernetes 生态系统中最重大的近期进步之一是引入了基于 Operator 的部署,我们在最近的一篇博文中对此进行了探讨。
在这篇博文中,我们介绍了如何使用 Redis Enterprise Operator 打包和部署来简化更复杂应用程序、用例和有状态应用程序的安装过程。
以下是该过程的分步概述。
要求
在开始之前,请确保您拥有
步骤 1 - 登录
这将切换到您的项目,而不是默认项目(您可以使用 oc project 命令验证您当前使用的项目)。
步骤 2 - 获取部署文件
特别地,对于 redis-enterprise-cluster yaml 文件,您也可以下载和编辑以下示例之一:简单、持久化、服务代理,或者使用存储库中提供的文件。
步骤 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 的 namespace 字段,以反映您在之前步骤中创建或切换到的命名空间。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 集群资源创建一个自定义资源定义。这将提供另一个 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 软件节点的启用/禁用标志,以了解持久化。默认值为 false。
这将指定用于您节点持久化磁盘的存储类。当启用持久化时,这**是强制性的**(例如,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 版本的信息,请联系我们。