dot Redis 8 来了—它是开源的

了解更多

如何在 OpenShift 上使用 Operators 安装 Redis Enterprise 集群

微服务世界是一个令人兴奋的地方,我们正在见证快速、频繁、有意义的进步。 OpenShift/Kubernetes 生态系统中最近最重要的进展之一是引入了基于 Operator 的部署,我们在最近的一篇博客文章中提到了

在本博客中,我们将描述如何使用 Redis Enterprise Operator 打包和部署来简化更复杂的应用程序、用例和有状态应用程序的安装过程。

以下是该过程的逐步概述。

要求

开始之前,请确保您拥有

  1. 安装了 OpenShift 集群,至少包含 3 个节点(每个节点都满足开发安装的最低要求)。
  2. 已安装 1.8 或更高版本的kubectl 包
  3. 已安装 OpenShift cli。

步骤 1 – 登录

  • 以超级管理员身份登录您的 OpenShift 帐户(以便您可以访问所有默认项目)。
  • 创建一个新项目,填写项目的名称和其他详细信息,然后单击“创建”。
OpenShift "new project" screen
  • 单击管理员(右上角),然后单击“复制登录”。
OpenShift "copy login" screen
  • 将登录命令粘贴到您的 shell 中;它应该看起来像这样
    oc login https://your-cluster.acme.com –token=your$login$token
  • 接下来,验证您是否正在使用新创建的项目。输入
    oc project your_project_name

这将切换到您的项目,而不是默认项目(您可以使用 oc project 命令验证您当前使用的项目)。

步骤 2 – 获取部署文件

  • 克隆此存储库,其中包含部署文件
    git clone https://github.com/Redis/redis-enterprise-k8s-docs

特别是对于 redis-enterprise-cluster yaml 文件,您也可以下载并编辑以下示例之一:simplepersistentservice 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 部署正在运行。典型的响应将如下所示

redis-enterprise-deployment-response

mycluster yaml 定义了新创建的资源的配置:Redis Enterprise 集群。可以将此 yaml 重命名为your_cluster_name.yaml 以保持整洁,但这并不是强制步骤。

但是,必须编辑此 yaml 以反映您的集群的特定配置。以下是您应该查看和编辑的主要字段

  • name: “your_cluster_name” 例如 (demo-cluster)
  • nodes: number_of_nodes_in_the_cluster 必须是至少 3 个或更大的不均匀数字(这是为什么)。
  • uiServiceType: service_type

服务类型值可以是 ClusterIP 或 LoadBalancer。这是一个基于 k8s 服务类型的可选配置。默认值为 ClusterIP。

  • username: <your_email@your_domain.your_suffix>

persistentSpec
enabled: <false/true>

检查您的 Redis Software 节点的启用/禁用标志,以查看是否具有持久性。默认值为 false。

  • storageClassName: “gp2

这指定了用于节点持久磁盘的StorageClass。当启用持久性时,这是强制性的(例如,AWS 使用“gp2”作为默认值,而 GKE 使用“pd-standard”作为默认值)。

  • redisEnterpriseNodeResources: 每个节点所需的计算资源
    • limits – 指定 Redis 节点的最大资源。
    • requests – 指定 Redis 节点的最小资源。

例如
limits
cpu: “2000m”
memory: 4Gi
requests
cpu: “2000m”
memory: 4Gi

默认值(如果未指定)为 2 个内核 (2000m) 和 4GB (4Gi)。

  • serviceBrokerSpec –
    enabled: <false/true>

使用启用/禁用标志指定服务代理的持久性。默认值为 false。

persistentSpec
storageClassName: “gp2

  • redisEnterpriseImageSpec: 此配置控制使用的 Redis Enterprise 版本以及从何处获取。我们始终建议运行当前的 GA 版本。

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

您应该收到类似于以下的响应

NAMEREADYSTATUSRESTARTSAGE
your_cluster_name-01/1运行中01m
your_cluster_name-11/1运行中01m
your_cluster_name-21/1运行中01m
your_cluster_name-controller-x-x1/1运行中01m
Redis-enterprise-operator-x-x1/1运行中05m

现在您只需要创建数据库并开始使用它们。

步骤 5 – 创建数据库

为了创建数据库,我们将登录到 Redis Enterprise UI。

  • 首先,将端口转发到您的集群
    kubectl port-forward your_cluster_name-0 8443:8443

注意:your_cluster_name-0 是您的集群 pod 之一。您可以考虑在后台运行端口转发命令。

注意:Openshift UI 提供了用于创建其他路由选项的工具,包括外部路由。 这些内容包含在RedHat Openshift 文档中。

接下来,创建您的数据库。

  • 打开浏览器窗口并导航到 localhost:8443
Reds Enterprise login screen
  • 要检索您的密码,请导航到 OpenShift 管理控制台,选择您的项目名称,转到 资源->密钥->您的集群名称
  • 通过选择“显示密钥”来检索您的密码。
OpenShift "reveal secret" screen

注意:为了通过 Telnet 进行 Ping 测试,您可以像上面描述的 UI 端口一样,为新创建的数据库端口创建新路由。 创建数据库后,转到 Openshift 管理控制台,选择您的项目名称,然后转到

应用程序->服务。 您将看到 2 个新创建的服务,它们代表数据库及其 IP 和端口信息,类似于下面的屏幕截图。

OpenShift services screen

结论

OpenShift 简化了 Kubernetes 的使用,并提供了相当大的附加价值。 对基于 Operator 的安装的支持现在使部署 Redis Enterprise 集群变得更加容易。 如果您想了解有关 Redis Enterprise OpenShift 版本的更多信息,请联系我们。