如何配置 Spinnaker 以使用 ElastiCache redis 集群?

How do you configure Spinnaker to use an ElastiCache redis cluster?

instructions here 之后,我正在尝试将 Spinnaker 配置为使用 ElastiCache redis 集群,并启用集群模式。

Spinnaker: 1.40.2
Halyard: 0.35
Cloud driver provider: k8s (1.7.4)
Cloud: AWS

我在集群模式下配置了一个 ElastiCache Redis 集群,它有自己的配置端点:

redis-spinnaker.1234.clustercfg.use1.cache.amazonaws.com:6379

它有一个节点:

我创建了以下文件:halyard/default/service-settings/redis.yml

overrideBaseUrl: redis://redis-spinnaker.1234.clustercfg.use1.cache.amazonaws.com:6379

我也试过了

overrideBaseUrl: redis://redis-spinnaker-0001-001.1234.0001.use1.cache.amazonaws.com:6379

请注意,这两个地址都可以从群集访问。

当我运行halyard deploy apply,spin-gate超时

/ Deploy spin-gate
  Timed out

And the whole deploy times out.
Problems in Global:
! ERROR Unexpected exception:
  DaemonTaskInterrupted(interruptedTime=1507614194943, message=Task interrupted at
  Tue Oct 10 05:43:14 UTC 2017 with message: Interrupted during reap by exception:
  null)

- Failed to deploy Spinnaker. Task killed because it was taking too
  long.

在这一点上,我不确定该怎么做才能使这项工作正常进行?

我在 elasticache redis 方面取得了一些进展,如下所示:

$ cat .hal/default/service-settings/redis.yml 
overrideBaseUrl: redis://xxx.use1.cache.amazonaws.com:6379

$ cat .hal/default/profiles/gate-local.yml 
redis:
  configuration:
    secure: true

大门-local.yml变化来自https://github.com/spinnaker/spinnaker/issues/1309#issuecomment-260971228

不是 100% 确定它能正常工作,但至少所有 spinnaker 服务都启动了,即使我关闭了升降索启动的 redis 副本集,它表面上也能正常工作

这里有一组说明,供任何其他想要使用外部 redis 的人使用(基于我的 GH issue):

# ~/.hal/default/service-settings/redis.yml
enabled: false
overrideBaseUrl: redis://:password@c1.us-central1-2.gce.cloud.redislabs.com:6379

# ~/.hal/default/service-settings/redis-bootstrap.yml
enabled: false
overrideBaseUrl: redis://:password@c1.us-central1-2.gce.cloud.redislabs.com:6379

如@DavidBlack所说的elasticache具体,你还需要

# ~/.hal/default/profiles/gate-local.yml 
redis:
  configuration:
    secure: true

通过删除副本集、服务等来执行此操作,或者可能更简单(取决于您的情况): hal deploy clean && hal deploy apply

如果您 hal deploy clean,请不要忘记重新应用任何其他配置(例如 kubernetes 服务的外部 IP,如果您已设置)。

我无法让 spinnaker 使用集群/复制的 elasticache redis,所以我只使用一个 ElastiCache redis 节点,然后将 spinnaker-local.yml 中的 service.redis.host 设置为适当的 redis 端点并设置redis.configuration.securegate-local.yml 到 true

对于任何使用 Spinnaker 运算符的人,我让 elasticsearch redis 使用以下设置:

  • Redis 版本:5.0.6
  • 已启用集群模式:否
  • 传输中加密:是
  • 静态加密:是
  • Redis 授权:是

k8s秘密:rediss://:AUTH_TOKEN@master.spinnaker-test.XXX.YYY.cache.amazonaws.com:6379

profiles:
  gate:
    redis:
      configuration:
        secure: true

service-settings:  
  redis:
    overrideBaseUrl: encrypted:k8s!n:spinnaker-secrets!k:redis-url-dev
    skipLifeCycleManagement: true

部署完成后,您需要手动删除操作员之前创建的 Redis 部署。