diff --git a/yonote-chart/Chart.lock b/yonote-chart/Chart.lock index ac3ee00..80c7196 100644 --- a/yonote-chart/Chart.lock +++ b/yonote-chart/Chart.lock @@ -20,11 +20,11 @@ dependencies: - name: redis repository: https://charts.bitnami.com/bitnami version: 16.12.1 -- name: keycloak - repository: https://charts.bitnami.com/bitnami - version: 21.6.1 +- name: app + repository: https://dysnix.github.io/charts + version: 0.3.15 - name: minio repository: https://charts.bitnami.com/bitnami version: 14.6.20 -digest: sha256:f05d7ee9b89cf6aa733e8fccce0daf3f8a427a108248f39ccd4b01bdd83a4f1b -generated: "2024-07-12T16:09:51.328475497+03:00" +digest: sha256:022c18f3135baeab718569f7118bbe95a3fe0171329f4617c2e8e99bbf5c5d6e +generated: "2024-07-15T18:23:07.749459565+03:00" diff --git a/yonote-chart/Chart.yaml b/yonote-chart/Chart.yaml index 8e51918..3b84f88 100644 --- a/yonote-chart/Chart.yaml +++ b/yonote-chart/Chart.yaml @@ -1,6 +1,13 @@ apiVersion: v2 name: yonote-chart version: 1.2.0 +description: + Generic application Helm chart. + This chart includes multiple dependencies. The base of this chart is derived from the Dynix app chart. +maintainers: + - name: Dysnix + email: support@dysnix.com + url: https://github.com/dysnix/charts/tree/main/dysnix/app dependencies: - name: app @@ -40,9 +47,9 @@ dependencies: condition: yonote-redis.enabled alias: yonote-redis - - name: keycloak - version: "21.6.1" - repository: https://charts.bitnami.com/bitnami + - name: app + version: "0.3.15" + repository: https://dysnix.github.io/charts condition: keycloak.enabled alias: keycloak diff --git a/yonote-chart/charts/app-0.3.15.tgz b/yonote-chart/charts/app-0.3.15.tgz new file mode 100644 index 0000000..b7125eb Binary files /dev/null and b/yonote-chart/charts/app-0.3.15.tgz differ diff --git a/yonote-chart/charts/minio-14.6.20.tgz b/yonote-chart/charts/minio-14.6.20.tgz new file mode 100644 index 0000000..e3c59bc Binary files /dev/null and b/yonote-chart/charts/minio-14.6.20.tgz differ diff --git a/yonote-chart/charts/postgresql-11.6.6.tgz b/yonote-chart/charts/postgresql-11.6.6.tgz new file mode 100644 index 0000000..b743d2b Binary files /dev/null and b/yonote-chart/charts/postgresql-11.6.6.tgz differ diff --git a/yonote-chart/charts/redis-16.12.1.tgz b/yonote-chart/charts/redis-16.12.1.tgz new file mode 100644 index 0000000..8be70f6 Binary files /dev/null and b/yonote-chart/charts/redis-16.12.1.tgz differ diff --git a/yonote-chart/secret-values.yaml b/yonote-chart/secret-values.yaml new file mode 100644 index 0000000..d767534 --- /dev/null +++ b/yonote-chart/secret-values.yaml @@ -0,0 +1,34 @@ +global: + yonote: + config: + secret: + stringData: + DATABASE_URL: 'postgres://{{ .Values.global.postgresql.auth.username }}:{{ .Values.global.postgresql.auth.password }}@yonote-db/{{ .Values.global.postgresql.auth.database }}' + POSTGRES_PASSWORD: wsGZ6kXhr5 + AWS_ACCESS_KEY_ID: "" # Ваш идентификатор ключа доступа к AWS. Поведение в SelfHosted: устанавливает логин сервис аккаунта для доступа приложения к Minio S3 хранилищу + AWS_SECRET_ACCESS_KEY: "" # Ваш секретный ключ доступа AWS. Поведение в SelfHosted: устанавливает пароль сервис аккаунта для доступа приложения к Minio S3 хранилищу + OIDC_CLIENT_SECRET: "" + SECRET_KEY: "" # Сгенерируйте 32-байтовый случайный ключ в шестнадцатеричном коде. Вам следует использовать `openssl rand -hex 32` в вашем терминале для генерации случайного значения. + SMTP_PASSWORD: "" + UTILS_SECRET: "" # Сгенерируйте уникальный случайный ключ. Формат не важен, но вы все равно можете использовать`openssl rand -hex 32` в вашем терминале, чтобы создать это. + TELEGRAM_BOT_TOKEN: "" + UNSPLASH_API_ACCESS_KEY: "" + LICENSE_KEY: "" # Обратитесь в отдел продаж для получения + SERVICE_WORKER_PUBLIC_KEY: "" + SERVICE_WORKER_PRIVATE_KEY: "" + # Генерация ключей (web-push) Service Worker + # 1) Установить Node.js и npm + # 2) Выполнить команду для генерации ключей + # npx web-push generate-vapid-keys + # 3) Полученные значения ввести в .env файл (SERVICE_WORKER_PUBLIC_KEY, SERVICE_WORKER_PRIVATE_KEY) + keycloak: + config: + secret: + stringData: + KEYCLOAK_ADMIN_PASSWORD: 12345 + KC_DB_PASSWORD: 1234 + + postgresql: + auth: + password: wsGZ6kXhr5 + postgresPassword: QQYw4UjOU \ No newline at end of file diff --git a/yonote-chart/values.yaml b/yonote-chart/values.yaml index 30ce5a9..2feee39 100644 --- a/yonote-chart/values.yaml +++ b/yonote-chart/values.yaml @@ -1,16 +1,15 @@ global: + name: yonote-app postgresql: auth: database: yonote username: yonote - password: example_pass - postgresPassword: example_pass_postgres yonote: ingress: ingressClassName: traefik - dbMigrationEnv: production-ssl-disabled + dbMigrationEnv: production-ssl-disabled # Режим подключения к базе данных при выполнении миграций. При использовании SSL подключения, установите значение `production` keycloak: hostName: auth.example.com @@ -21,22 +20,23 @@ global: config: plain: data: - DEPLOYMENT: undefined #Режим приложения + NODE_ENV: production FORCE_HTTPS: "false" - PGSSLMODE: disable + PGSSLMODE: disable # Отключает SSL подключение к базе данных. Уберите эту строку, если вы используете SSL подключение к PostgreSQL - BIND_HOST: 0.0.0.0 #Хост по умолчанию - PORT: "3000" #Порт по умолчанию + BIND_HOST: 0.0.0.0 # Хост по умолчанию + PORT: "3000" # Порт по умолчанию REDIS_URL: redis://yonote-redis-master:6379 - DEFAULT_LANGUAGE: ru_RU #Язык по умолчанию + DEFAULT_LANGUAGE: ru_RU # Язык по умолчанию ENABLE_UPDATES: "false" - AI_URL: http://engate.wilix.dev:5001 + AI_URL: 1234 + AI_API_KEY: 1234 - URL: 'http://app.{{ .Values.global.yonote.baseListenAddress }}' #Базовый url приложения - COLLABORATION_URL: 'wss://app.{{ .Values.global.yonote.baseListenAddress }}' #сервер, для нормальной работы это не нужно устанавливать + URL: 'http://app.{{ .Values.global.yonote.baseListenAddress }}' # Базовый url приложения + COLLABORATION_URL: 'wss://app.{{ .Values.global.yonote.baseListenAddress }}' # Cервер, для нормальной работы это не нужно устанавливать OIDC_DISPLAY_NAME: email OIDC_SCOPES: openid email @@ -47,15 +47,17 @@ global: OIDC_USERINFO_URI: 'http://{{ .Values.global.yonote.keycloak.hostName }}/realms/{{ .Values.global.yonote.keycloak.realmName }}/protocol/openid-connect/userinfo' AWS_S3_ACL: private - AWS_S3_UPLOAD_BUCKET_URL: example-url-s3 #Адрес S3 хранилища - AWS_S3_UPLOAD_BUCKET_NAME: yonote-bucket #Имя хранилища - полный URL = http://127.0.0.1:9000/yonote-bucket + AWS_S3_UPLOAD_BUCKET_URL: example-url-s3 # Адрес S3 хранилища + AWS_S3_UPLOAD_BUCKET_NAME: yonote-bucket # Имя хранилища - полный URL = http://127.0.0.1:9000/yonote-bucket AWS_REGION: "" - AWS_S3_UPLOAD_MAX_SIZE: "226214400" #Максимальный размер хранилища - AWS_S3_FORCE_PATH_STYLE: "false" #Следует ли принудительно использовать URL-адреса стиля пути для объектов S3 + AWS_S3_UPLOAD_MAX_SIZE: "226214400" # Максимальный размер хранилища + AWS_S3_FORCE_PATH_STYLE: "false" # Следует ли принудительно использовать URL-адреса стиля пути для объектов S3 + S3_PROXY_ENABLED: false # Включает или выключает проксирование загрузки/выгрузки файлов на S3 через бэкенд, принимает boolean + S3_MULTIPART_PART_SIZE: 1000 # Настройка размера частей для multipart загрузки на S3 хранилище, принимает число, по умолчанию 1000 (1GB), значение в мегабайтах. - SUBDOMAINS_ENABLED: "true" #Поддержка поддоменов для команд - BASENAME_FOR_SUBDOMAIN: '{{ .Values.global.yonote.baseListenAddress }}' #Имя хоста - NOT_ALLOWED_SUBDOMAINS: app,collaboration,auth,api,dev,docs,doc,admin,test,quota,billing,i,storage,host,updates #запрещенные поддомены + SUBDOMAINS_ENABLED: "true" # Поддержка поддоменов для команд + BASENAME_FOR_SUBDOMAIN: '{{ .Values.global.yonote.baseListenAddress }}' # Имя хоста + NOT_ALLOWED_SUBDOMAINS: app,collaboration,auth,api,dev,docs,doc,admin,test,quota,billing,i,storage,host,updates # Запрещенные поддомены TELEGRAM_API_URL: https://api.telegram.org @@ -68,29 +70,9 @@ global: SMTP_FROM_EMAIL: "" SMTP_REPLY_EMAIL: "" SMTP_PORT: "" - SMTP_SECURE: "" #connection will be upgraded: https://nodemailer.com/smtp/ + SMTP_SECURE: "" # connection will be upgraded: https://nodemailer.com/smtp/ SMTP_REQUIRE_TLS: "" - secret: - stringData: - DATABASE_URL: 'postgres://{{ .Values.global.postgresql.auth.username }}:{{ .Values.global.postgresql.auth.password }}@yonote-db/{{ .Values.global.postgresql.auth.database }}' - POSTGRES_PASSWORD: - AI_API_KEY: "" - AWS_ACCESS_KEY_ID: "" #Ваш идентификатор ключа доступа к AWS. Поведение в SelfHosted: устанавливает логин сервис аккаунта для доступа приложения к Minio S3 хранилищу - AWS_SECRET_ACCESS_KEY: "" #Ваш секретный ключ доступа AWS. Поведение в SelfHosted: устанавливает пароль сервис аккаунта для доступа приложения к Minio S3 хранилищу - OIDC_CLIENT_SECRET: "" - SECRET_KEY: "" - SMTP_PASSWORD: "" - UTILS_SECRET: "" - YANDEX_METRIKA_ID: "" - TELEGRAM_BOT_TOKEN: "" - UNSPLASH_API_ACCESS_KEY: "" - REDIS_URL: "" #redis://username:password>@:6379 - LICENSE_KEY: "" - SERVICE_WORKER_PUBLIC_KEY: "" - SERVICE_WORKER_PRIVATE_KEY: "" - QUOTA_TOKEN: "" - yonote_cron_calendar_events: cron_enabled: "true" url: http://yonote-web/api/cron.calendar_events @@ -99,8 +81,6 @@ global: cron_enabled: "true" url: http://yonote-web/api/cron.schedule -name: yonote - yonote-web: fullnameOverride: yonote-web nameOverride: yonote-web @@ -112,9 +92,8 @@ yonote-web: tag: 1.19.5 pullPolicy: IfNotPresent - args: - #- ./build/server/index.js - #- '--services=web' + command: ["/bin/sh", "-c"] + args: ['yarn start:selfhosted --services=web'] initContainers: - name: yonote-migration @@ -205,9 +184,8 @@ yonote-websocket: tag: 1.19.5 pullPolicy: IfNotPresent - args: - #- ./build/server/index.js - #- '--services=websockets' + command: ["/bin/sh", "-c"] + args: ['yarn start:selfhosted --services=websockets'] resources: limits: @@ -283,9 +261,8 @@ yonote-whiteboard: tag: 1.19.5 pullPolicy: IfNotPresent - args: - #- ./build/server/index.js - #- '--services=whiteboard' + command: ["/bin/sh", "-c"] + args: ['yarn start:selfhosted --services=whiteboard'] resources: limits: @@ -361,9 +338,8 @@ yonote-worker: tag: 1.19.5 pullPolicy: IfNotPresent - args: - #- ./build/server/index.js - #- '--services=worker' + command: ["/bin/sh", "-c"] + args: ['yarn start:selfhosted --services=worker'] resources: limits: @@ -431,9 +407,8 @@ yonote-collaboration: tag: 1.19.5 pullPolicy: IfNotPresent - args: - #- ./build/server/index.js - #- '--services=collaboration' + command: ["/bin/sh", "-c"] + args: ['yarn start:selfhosted --services=collaboration'] checksums: null @@ -525,60 +500,10 @@ yonote-redis: requests: cpu: 50m memory: 128Mi - -keycloak: - enabled: true - fullnameOverride: yonote-keycloak - nameOverride: keycloak - hostName: auth.example.com - realmName: yonote - - auth: - adminUser: admin - adminPassword: "12345" - - ingress: - enabled: true - annotations: - kubernetes.io/ingress.class: traefik - hosts: - - host: keycloak.example.com - paths: - - path: / - pathType: ImplementationSpecific - tls: - - secretName: keycloak-tls - hosts: - - keycloak.example.com - - postgresql: - name: postgresql - enabled: true - postgresqlUsername: keycloak - postgresqlPassword: keycloak - postgresqlDatabase: keycloak - persistence: - size: 500Mi - - # externalDatabase: #Если используете не встроенную БД - # host: - # port: 5432 - # database: keycloak - # user: keycloak - # password: - # existingSecret: app-postgresql - # existingSecretKey: postgresql-password - - extraEnv: | - - name: KC_SPI_ADMIN_REALM - value: 'yonote' - - service: - type: ClusterIP - port: 8080 minio: enabled: true + name: minio fullnameOverride: yonote-minio nameOverride: minio accessKey: "minioadmin" @@ -614,4 +539,105 @@ minio: - name: mybucket policy: none - name: anotherbucket - policy: none \ No newline at end of file + policy: none + +keycloak-database: + name: keycloak-db + enabled: true + fullnameOverride: yonote-keycloak-db + nameOverride: db + primary: + persistence: + size: 512Mi + +keycloak: + name: keycloack + enabled: true + nameOverride: keycloak + fullnameOverride: yonote-keycloak + image: + registry: images.updates.yonote.ru + repository: yonote-keycloak + tag: latest + + command: + - /bin/sh + - -c + - | + "/opt/keycloak/bin/kc.sh" "start" + + configMaps: + configs: + data: + KEYCLOAK_ADMIN: root + #KEYCLOAK_ADMIN_PASSWORD: ${KC_PASSWORD} + KC_PROXY: edge + KC_HOSTNAME_STRICT: "false" + KC_HOSTNAME_ADMIN: auth.yonote.develop.wilix.dev/admin + KC_HOSTNAME: auth.yonote.develop.wilix.dev + KC_DB: postgres + KC_DB_URL: postgres + KC_DB_URL_DATABASE: keycloak + KC_DB_USERNAME: keycloak + #KC_DB_PASSWORD: ${KC_DB_PASSWORD} + KC_HOSTNAME_STRICT_HTTPS: "false" + KC_HOSTNAME_PATH: "/" + + envFrom: + - configMapRef: + name: '{{ template "app.fullname" . }}-configs' + - secretRef: + name: '{{ template "app.fullname" . }}-secrets' + + checksums: + - secrets.yaml + - configmaps.yaml + + containerPorts: + - containerPort: 8080 + name: app + protocol: TCP + + resources: + limits: + cpu: 500m + memory: 512Mi + requests: + cpu: 150m + memory: 128Mi + + service: + service: + type: ClusterIP + port: 8080 + targetPort: 8080 + + ingress: + enabled: true + certManager: true + pathType: ImplementationSpecific + hostname: auth.example.com + path: / + tls: true + + livenessProbe: + enabled: true + failureThreshold: 6 + initialDelaySeconds: 60 + periodSeconds: 15 + successThreshold: 1 + timeoutSeconds: 5 + httpGet: + path: / + port: app + + readinessProbe: + enabled: true + failureThreshold: 6 + initialDelaySeconds: 60 + periodSeconds: 15 + successThreshold: 1 + timeoutSeconds: 5 + httpGet: + path: / + port: app \ No newline at end of file