安装部署

1. 基于 Docker Compose 部署后,首次注册账号并登录,跳转至错误页面怎么办?

安装部署 - 图1

该页面地址为 sysAdmin/orgs,即超级管理员管理页,该模块暂时还未包含在开源包内(我们将在近期开放该模块)。Erda 首次注册到账号会默认成为超级管理员,因此会自动尝试跳转到该页面。

您可以退出首次注册的账号,然后再次注册一个新账号,使用新的账号登录后将会跳转到个人仪表盘页面,如下图所示,您可以从点击页面左上方的 创建组织 开始体验 Erda。

安装部署 - 图2

2. 基于 Docker Compose 部署后,在 CenOS 环境下执行安装脚本时报错 invalid IP address in add-host: "host-gateway"

host-gateway 特性要求 Docker 版本在 20.10.0 及以上。

请升级 Docker,执行命令 sudo yum install docker-ce docker-ce-cli containerd.io

3. 安装 Erda 时初始化任务失败该如何处理?

  1. 请您首先确认 erda-init-image 日志,是否存在无法连接 MySQL 等情况,如果存在,请排查集群到 MySQL 网络是否可达。
  2. 初始化任务中如果出现 Table xxx already exists 错误,可能是由于您在 Erda 安装过程中出现过初始化任务中断的行为, 请检查数据库并清理残留数据,重新进行安装。

4. 基于 Helm 部署 Erda,每个节点挂载 NFS 是否是强制的?

若您希望将 Kubernetes 节点用于执行流水线任务,则节点挂载 NFS 是强制的,具体请参见 准备工作

您可以通过 标签设置 控制 Erda 的节点调度。

5. 完成 Erda 安装后,集群总览中未显示已添加的集群该如何处理?

:::tip 提示 此处已添加的集群是指导入 Erda 所在的 Kubernetes 集群。 :::

正常情况下,导入集群后 3 分钟左右即可在 集群总览 页面查看机器的数据列表,若数据为空,可从以下两个方面依次排查:

  1. 进入 管理中心 > 组织设置 > 组织信息 查看组织标识, 例如此处的标识为 erda

    安装部署 - 图3

    随后在 Kubernetes 节点中确认 dice/org-<企业标识>=true 标签是否正确。

    1. kubectl get no --show-labels | grep org
  2. 确认标签存在后,请进入 多云管理 > 资源管理 > 集群管理,确认导入的 集群标识 是否与 Erda 安装时指定的 erda.clusterName 一致。若不一致,您需要下线该集群,并重新添加。

  3. 经前两步排查,若仍无数据显示,请排查 erda-telegraf 组件日志。

6. 访问 Erda 会强制跳转 HTTPS 该如何处理?

Erda 默认配置的是 HTTP,如果开启 HTTPS 请参考 Erda 如何配置 HTTPS

以社区 ingress-nginx 为例,默认情况下会强制跳转 HTTPS,您可以修改 ingress-nginx 配置来禁用:

  1. kubectl edit cm ingress-nginx-controller -n <ingress-namespace>

::: tip 提示

不同版本的 ingress-nginx 配置文件存在差异,请根据您的 ingress-nginx 版本确认 Configmap Name

:::

  1. data:
  2. ssl-redirect: "false"

7. Erda 如何配置 HTTPS?

Erda 可以安装时配置 erda.clusterConfig.protocol 来开启 https,详细配置请参考 高可用部署可配置参数。 安装完成后,您可以根据部署场景配置证书。

8. Erda 安装完成访问 404 该如何处理?

  1. 请先确认是否按照 安装要求 部署 Ingress Controller, 以 Ingress-Nginx 为例。
  2. 查看 Ingress-Controller 日志,报错提示如下:
    1. "ingress does not contain a valid IngressClass"
  3. 当前版本 Erda 并不关心 IngressClass 配置,您可以更改 Ingress-Nginx 配置,启动参数增加 --watch-ingress-without-class=true

9. 安装 Erda 时 Registry 调度失败该如何处理?

请您优先确认 Registry 安装配置是否正确,Registry 在 Erda 安装配置中可以通 registry.custom.nodeIPregistry.custom.nodeName 参数来控制是否启用 host 模式。 nodeIP 是您指定的 Kubernetes 节点 IP, nodeName 是您指定的 Kubernetes 节点名称,两者要为同一节点的信息。

10. 导入集群后,创建项目时可分配资源为 0 该如何处理?

Erda 通过节点标签来采集调度节点的可用资源,标签未正确设置, 会导致项目可用资源为 0,您可以通过如下步骤进行排查:

  1. 请您先确认导入的集群是否在集群总览中显示,如果未显示请参考 集群总览中未显示已添加的集群该如何处理
  2. 为了保证应用的正常构建发布,环境标签 (workspace-*)、stateless-servicepack-job 是必需的。其余标签您可以参考 节点标签 按需设置。 标签可以通过 多云管理平台 > 集群总览 > 设置标签 来进行设置或查看。

安装部署 - 图4

11. 构建流水线打包时推送镜像失败该如何处理?

报错提示 server gave HTTP response to HTTPS client

Erda 部署的 Registry 需要您对 Docker 进行一些设置,请参考 准备工作

报错提示找不到 Registry 地址

您需要确认 Erda 的安装配置,是否指定了 registry.custom.nodeIP 以及 registry.custom.nodeName 参数。

  • 如果未指定,您需要确保您在 Kubernetes 节点可以通过内部域名(比如 kubernetes.default.svc.cluster.local)的方式访问 Registry。
  • 如果已指定,请确认流水线构建节点到 registry 节点网络是否可达。

详细配置请参考 开始安装

12. Erda 导入已创建的 Erda Kubernetes 集群,该集群也需要安装 Erda 吗?

不需要,只需待导入的 Kubernetes 集群满足 安装要求 即可,集群导入后 Erda 将自动对目标集群初始化,安装 Erda 组件及依赖。

:::tip 提示 当前版本导入的集群若需要使用流水线功能,您需要按照 准备工作 对目标集群进行一些简单的设置,并且确保该集群节点可对 Kubernetes Service 进行 DNS 解析。 :::

13. 阿里云 ACK 部署 Erda 需要满足什么要求?

Erda 支持使用阿里云 ACK 专有版及托管版部署。 使用托管版时,在任一可以使用 kubectl 的 Work 节点按照文档部署 Erda 即可,无需关注 Master 节点。

14. 部署时如何配置 SMTP 邮件服务器?

在 CRD erda 中 eventbox 组件里面配置如下环境变量:

  1. DICE_EMAIL_SMTP_DISPLAY_USER
  2. DICE_EMAIL_SMTP_HOST
  3. DICE_EMAIL_SMTP_PASSWORD
  4. DICE_EMAIL_SMTP_PORT
  5. DICE_EMAIL_SMTP_USERNAME

15. Kubernetes 1.16,Helm 安装提示 must include at least one of v1beta1 该如何处理?

如果您的 Kubernetes 集群为 1.16 版本,使用 Helm 安装时提示如下错误:

  1. Error: ValidatingWebhookConfiguration.admissionregistration.k8s.io "elastic-webhook.k8s.elastic.co" is invalid: webhooks[0].admissionReviewVersions: Invalid value: []string{"v1"}: must include at least one of v1beta1

请参考 链接 并开启 Kubernetes admissionregistration 对应版本的 API。

16. 开源版本是否只支持 Kubernetes 1.16 - 1.20、Centos 7.4+?

以上版本已经过验证,其他环境暂未覆盖。后续将陆续覆盖其他常见环境,敬请期待。

17. Erda 是否支持纳管 Openshift、Rancher 等集群?

当前 Erda 暂未对 Openshift、Rancher 等 Kubernetes 发行版进行适配测试,后续计划对常见的 Kubernetes 发行版及云厂商基于 Kubernetes 的容器编排服务进行适配,敬请期待。

如果您已在以上环境中进行过验证,欢迎参与到 Erda 的贡献中

18. 安装 Erda 失败,如何执行重新安装?

您可以参考 卸载 Erda 对残留数据进行清理,清理完成后重新执行安装操作。

19. 使用 Docker Compose 启动 Erda,组件容器报错 dial tcp x.x.x.x:3306: connect: connection refused 该如何处理?

3306 为 MySQL 端口,该错误提示表示无法连接至 MySQL。

请确认 MySQL 容器是否正常运行:

  • 若 MySQL 非正常运行,请通过 MySQL 容器日志排查数据库失败原因;
  • 若 MySQL 正常运行,需找到对应的组件,尝试 docker rm ${container-id} 后使用 docker-compose up -d 重新拉起该组件。

目前出现该问题的多为 Windows 用户,因此极有可能是 Docker Compose 在 Windows 系统下的 depends-on 存在问题,具体原因仍在排查中。

20. Ingress Controller 部署完成后访问 Erda 404,如何处理?

该问题说明请求未按照 Erda 配置的 Ingress 规则访问到对应的后端服务,需要排查 ingress-controller 的日志,确认请求异常的原因。

常见错误

  1. nginx-ingress-controller 常见错误 “ingress does not contain a valid IngressClass” 导致 ingress 规则不生效:

Erda 当前版本并不需要关注 ingressClass,所以需要增加参数跳过,通过如下命令获取部署的 nginx-ingress-controller,可能是 daemonset 或者 deployment 方式部署。

  1. kubectl get ds / deploy --all-namespaces | grep nginx

增加启动参数

  1. args:
  2. - /nginx-ingress-controller
  3. ...
  4. - --watch-ingress-without-class=true # 增加该参数

再次访问平台即可。

21. Erda 组件正常,首次访问提示 “请求错误” 如何处理?

首先请确认 Erda 组件是否是 Running 的状态,可以通过如下命令查看,以部署在 erda-system 下为例:

  1. kubectl get erda erda -n erda-system

确认 Erda 组件正常后,请确认您配置的 DNS 解析规则,以泛域名为 erda.io,您需要配置如下解析规则:

  1. *.erda.io A记录解析到 LB 地址, 比如 10.0.0.1
  2. erda.io A记录解析到 LB 地址, 10.0.0.1

使用 erda.io 访问平台即可,以 xxx.erda.io 访问平台进行组织创建均会出现该问题。

22. 使用 Docker Compose 部署 Erda,完成安装后访问服务 502 怎么办?

使用 docker ps | grep openapi,获取镜像 ID,通过镜像 ID 查看 OpenAPI 容器的日志。

若 OpenAPI 有报错日志 level=error msg="fail to run provider openapi: dial tcp xx.xx.xx.xx:6379: connect: connection refused" ,随后持续重启,此时可查看 erda-redis 容器是否拉起。 若 redis 无法运行,大概率为网络问题导致镜像无法拉取,端口冲突,或挂载的本地文件存在问题。下载 docker-compose 文件,针对 redis 修改 docker-compose yml 文件,随后运行 docker-compose down 和 up 重启组件。