Перейти к содержимому

Helm Chart

ArtifactHub
Окно терминала
helm repo add nora https://getnora-io.github.io/helm-charts
helm repo update
helm install nora nora/nora -n nora-system --create-namespace

Устанавливает NORA с локальным хранилищем (10 Gi PVC), включённой сборкой мусора и сервисом ClusterIP на порту 4000.

КлючПо умолчаниюОписание
image.repositoryghcr.io/getnora-io/noraОбраз контейнера
image.tag"" (appVersion из Chart)Переопределение тега
image.pullPolicyIfNotPresentПолитика скачивания
imagePullSecrets[]Секреты для приватных реестров
КлючПо умолчаниюОписание
service.typeClusterIPТип сервиса
service.port4000Порт сервиса
ingress.enabledfalseВключить Ingress
ingress.className""Класс Ingress
ingress.annotations{}Аннотации Ingress
ingress.hostsсм. values.yamlПравила маршрутизации
ingress.tls[]Конфигурация TLS
КлючПо умолчаниюОписание
persistence.enabledtrueВключить PVC
persistence.size10GiРазмер тома
persistence.storageClass""StorageClass (пустое = по умолчанию)
persistence.accessModes[ReadWriteOnce]Режимы доступа PVC
КлючПо умолчаниюОписание
config.server.host0.0.0.0Адрес привязки
config.server.port4000Порт
config.storage.modelocalБэкенд: local или s3
config.storage.path/data/storageПуть к данным
config.docker.proxy_timeout60Таймаут Docker upstream (с)
config.docker.upstreams[]Docker upstream-реестры
config.gc.enabledtrueВключить сборку мусора
config.gc.interval86400Интервал GC (с)
config.retention.enabledfalseВключить политики хранения
config.retention.interval86400Интервал retention (с)
КлючПо умолчаниюОписание
existingSecret""Существующий Secret с ключом secrets.toml (для учётных данных приватных реестров)
extraEnv[]Дополнительные переменные окружения — нативный Kubernetes env spec
extraEnvFrom[]Дополнительные envFrom записи (secretRef / configMapRef)
КлючПо умолчаниюОписание
resources.requests.cpu100mЗапрос CPU
resources.requests.memory128MiЗапрос памяти
resources.limits.memory512MiЛимит памяти
nodeSelector{}Привязка к узлам
tolerations[]Toleration-правила
affinity{}Правила affinity
КлючПо умолчаниюОписание
podSecurityContext.fsGroup1000Группа файловой системы
securityContext.runAsNonRoottrueЗапрет запуска от root
securityContext.runAsUser1000UID контейнера
securityContext.readOnlyRootFilesystemtrueКорневая FS только для чтения

extraEnv:
- name: NORA_AUTH_ENABLED
value: "true"
- name: NORA_RATE_LIMIT_ENABLED
value: "false"
extraEnv:
- name: NORA_STORAGE_S3_ACCESS_KEY
valueFrom:
secretKeyRef:
name: s3-credentials
key: access-key
- name: NORA_STORAGE_S3_SECRET_KEY
valueFrom:
secretKeyRef:
name: s3-credentials
key: secret-key

Все ключи Secret становятся переменными окружения:

extraEnvFrom:
- secretRef:
name: nora-all-secrets

4. existingSecret для учётных данных приватных реестров

Заголовок раздела «4. existingSecret для учётных данных приватных реестров»

Храните учётные данные Docker upstream вне values.yaml. Создайте Secret с ключом secrets.toml:

apiVersion: v1
kind: Secret
metadata:
name: nora-registry-creds
stringData:
secrets.toml: |
[[docker.upstreams]]
url = "https://private.registry.io"
auth = "user:token"

Укажите его в values:

existingSecret: nora-registry-creds

Эти upstream-реестры объединяются с config.docker.upstreams. При дублировании URL приоритет у Secret.

extraEnvFrom:
- configMapRef:
name: nora-feature-flags

ingress:
enabled: true
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/proxy-body-size: "0"
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
hosts:
- host: registry.example.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: nora-tls
hosts:
- registry.example.com

Используйте манифесты напрямую — см. Примеры Kubernetes.


config:
storage:
mode: s3
path: /data/storage # путь локального кэша
extraEnv:
- name: NORA_STORAGE_S3_URL
value: "https://s3.amazonaws.com"
- name: NORA_STORAGE_BUCKET
value: "nora-registry"
- name: NORA_STORAGE_S3_REGION
value: "us-east-1"
- name: NORA_STORAGE_S3_ACCESS_KEY
valueFrom:
secretKeyRef:
name: s3-credentials
key: access-key
- name: NORA_STORAGE_S3_SECRET_KEY
valueFrom:
secretKeyRef:
name: s3-credentials
key: secret-key

В chart v0.1.9 параметры env и secrets заменены на extraEnv и extraEnvFrom.

Было (v0.1.8):

env:
NORA_AUTH_ENABLED: "true"
secrets:
NORA_STORAGE_S3_SECRET_KEY: "my-key"

Стало (v0.1.9):

extraEnv:
- name: NORA_AUTH_ENABLED
value: "true"
- name: NORA_STORAGE_S3_SECRET_KEY
valueFrom:
secretKeyRef:
name: my-s3-secret
key: secret-key

Зачем: Старый параметр secrets хранил чувствительные значения в values.yaml — антипаттерн для GitOps. extraEnv с secretKeyRef оставляет секреты в Kubernetes Secrets, где им и место.


Окно терминала
helm uninstall nora -n nora-system