Helm部署

你可以使用 n9e helm chart 在 Kubernetes 集群中运行夜莺。

默认的夜莺用户名是 root,密码是 root.2020

不过,我们不建议您把夜莺部署到 Kubernetes 中,因为监控系统太过重要,如果 Kubernetes 集群出现问题,可能会导致监控系统无法正常工作。而此时您可能希望通过监控数据排查 Kubernetes 的问题,导致循环依赖。尤其是,其他团队此时想使用监控系统发现用不了,可能会来怼你。

获取 repo

git clone https://github.com/flashcatcloud/n9e-helm.git

配置chart

以下配置项可以在安装时通过 --set传入 或者 直接编辑 values.yaml

配置暴露夜莺服务的方式

  • Ingress: k8s集群中必须已经安装了ingress controller
  • ClusterIP: 通过集群的内部 cluster ip 暴露服务,选择该值时服务只能够在集群内部访问。
  • NodePort: 通过每个节点上的 IP 和静态端口(NodePort)暴露服务。在集群外通过NodeIP:NodePort 访问夜莺服务。
  • LoadBalancer: 使用云提供商的负载均衡器向外部暴露服务。

配置夜莺服务使用TLS

  • enabled: 是否使用tls方式。如果expose.typeingress 并且 enabledfalse时,记得删除expose.ingress.annotations中的ssl-redirect annotations。

  • certSource

    : TLS证书来源。 可选项为auto,secret,none。

    • auto: 自动生成TLS证书。
      • commonName: 用于生成证书的CN, 如果expose.type 不是 ingress, 此项必须填写。
    • secret: 从特定的secret中读取证书信息。TLS证书可以手动生成,或通过cert manager生成。
      • secretName: secret的名字,必须包含以下两个key的内容
        • tls.crt: 证书内容
        • tls.key: 私钥内容
    • none: 不使用TLS证书(ingress模式)。 如果 ingress controller配置了默认的TLS证书, 使用此选项。

配置external URL

external URL主要用于访问夜莺web服务

格式: protocol://domain[:port]。 通常:

  • 如果通过 Ingress 暴露服务, domain 应该配置为 expose.ingress.hosts.web
  • 如果通过 ClusterIP 暴露服务, domain 应该配置为 expose.clusterIP.name
  • 如果通过 NodePort 暴露服务, domain 应该配置为 k8s 集群内node的IP
  • 如果通过 LoadBalancer 暴露服务, domain 应该配置为从云提供商那里获取到的域名的CNAME(自有域名作为提供商域名的cname)

注意:

  1. 如果夜莺部署在proxy之后,那 domain 设置为proxy的URL
  2. 夜莺web服务的初始用户名为 root,初始密码为 root.2020

配置持久化存储

  • Disable: 关闭持久存储,pod生命周期结束后,数据消失。
  • Persistent Volume Claim(default): 需要设置StorageClass以便k8s提供动态卷支持。 如果已有持久卷, 就配置到 existingClaim

安装chart

使用 nightingale 名称进行安装:

helm install nightingale ./n9e-helm -n n9e --create-namespace

卸载

卸载/删除 nightingale:

helm uninstall  nightingale -n n9e