无法在 Sentry 图表中更改 Helm zookeeper 的 storageClass values.yaml

Can't change Helm zookeeper's storageClass in Sentry charts values.yaml

我们想使用 Sentry 进行错误记录(我们的用例在本地),但由于我们对所有内容都使用 k8s,所以我们选择了 Sentry Kubernetes 图表。

我们使用的是云提供商,其中为 PVC blank/empty 保留 storageClass 不会创建 PVC,而是使系统处于挂起状态,因此我们需要手动更改 storageClass,如果你深入研究 k8s Helm 图表的 values.yaml 文件,或多或少会有描述。

需要的魔法是 storageClass: csi-disk,这让我们的云提供商知道它可以附加那种类型的 PVC(而不是像上面描述的那样什么都不做)

我们在下面所做的也与 bitnami 提供的 values.yaml 匹配:https://github.com/bitnami/charts/blob/master/bitnami/zookeeper/values.yaml, which we are supposed to check as mentioned in your charts' values.yaml: https://github.com/sentry-kubernetes/charts/blob/develop/sentry/values.yaml#L714

所有其他 Bitnami 图表都有效(PGDB 等)我在下面留下了一个示例并注释掉了其余部分。

但无论我做什么,我都无法将 storageClass 解析为 desiredManifest,而且我无法实时更改清单,因为它是一个 StatefulSet,所以我需要以某种方式正确解析 storageClass。

已经花了很多时间尝试一切,寻找拼写错误等

我们使用 Helm 和 ArgoCD,这是 ArgoCD 应用程序:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: sentry-dev
  namespace: argocd
  finalizers:
  - resources-finalizer.argocd.argoproj.io
spec:
  destination:
    namespace: sentry
    server: https://kubernetes.default.svc
  project: default
  source:
    repoURL: https://sentry-kubernetes.github.io/charts
    chart: sentry
    targetRevision: 13.0.1
    helm:
      values: |
        ingress:
          enabled: true
          annotations:
            kubernetes.io/ingress.class: nginx
            nginx.ingress.kubernetes.io/use-regex: "true"
            nginx.ingress.kubernetes.io/ssl-redirect: "true"
            nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
            cert-manager.io/cluster-issuer: "letsencrypt-prod"
          hostname: ...
          tls:
          # ...
        clickhouse:
          # ..
        filestore:
          # ..
        redis:
          master:
          #...
          replica:
          #...
        rabbitmq:
          persistence:
            enabled: true
            annotations:
              everest.io/disk-volume-type: SSD
            labels:
              failure-domain.beta.kubernetes.io/region: eu-de
              failure-domain.beta.kubernetes.io/zone: 
            accessModes:
            - ReadWriteOnce
            resources:
              requests:
                storage: 8Gi
            storageClass: csi-disk
        kafka:
        # ...
        postgresql:
        # ...
        zookeeper:
          enabled: true
          persistence:
            enabled: true
            annotations:
              everest.io/disk-volume-type: SSD
            labels:
              failure-domain.beta.kubernetes.io/region: eu-de
              failure-domain.beta.kubernetes.io/zone: 
            accessModes:
            - ReadWriteOnce
            resources:
              requests:
                storage: 8Gi
            storageClass: csi-disk
            storageClassName: csi-disk # tried both storageClass and storageClassName, together and separately!

所需的清单始终停留在(更改元数据和任何其他规范也失败,因此图表不接受任何 values.yaml 更改)

  volumeClaimTemplates:
    - metadata:
        annotations: null
        name: data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 8Gi

还有一个 GH 问题未解决:https://github.com/sentry-kubernetes/charts/issues/606

你能在 helm 之前创建 pvc 并将其用于现有声明吗?

最后我从 GitHub 问题中得到了答案,我将其重新发布在这里:

Kafka 有自己内部的 zookeeper 依赖,所以你可以这样做:

kafka:
  persistence:
    storageClass: csi-disk
  zookeeper:
    persistence:
      storageClass: csi-disk