dot 快速的未来将在您所在的城市举办的活动中到来。

加入我们在 Redis 发布会上

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

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

在这篇博文中,我们介绍了如何使用 Redis Enterprise Operator 打包和部署来简化更复杂应用程序、用例和有状态应用程序的安装过程。

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

要求

在开始之前,请确保您拥有

  1. 已安装的OpenShift 集群,至少包含 3 个节点(每个节点都满足开发安装的最低要求)。
  2. 已安装的kubectl 包,版本为 1.8 或更高版本。
  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 文件,您也可以下载和编辑以下示例之一:简单持久化服务代理,或者使用存储库中提供的文件。

步骤 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 部署是否正在运行。典型的响应将类似于以下内容

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 软件节点的启用/禁用标志,以了解持久化。默认值为 false。

  • storageClassName: “gp2

这将指定用于您节点持久化磁盘的存储类。当启用持久化时,这**是强制性的**(例如,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 管理控制台,选择您的项目名称,转到 资源->密钥->your_cluster_name
  • 通过选择“显示密钥”来检索您的密码。
OpenShift "reveal secret" screen

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

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

OpenShift services screen

结论

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