You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am trying to put together a Kubernetes deployment and I am a little stuck with assigning the proper values for the environment.
Here's the full document so far:
Deployment
apiVersion: v1kind: Namespacemetadata:
name: solidtime
---
apiVersion: v1kind: ConfigMapmetadata:
name: solidtime-envnamespace: solidtimedata:
APP_DOMAIN: solidtime.birb.itAPP_URL: "https://solidtime.domain.tld"APP_NAME: "SolidTime"VITE_APP_NAME: "SolidTime"APP_ENV: "production"APP_DEBUG: "false"APP_FORCE_HTTPS: "true"TRUSTED_PROXIES: "0.0.0.0/0,2000:0:0:0:0:0:0:0/3"# AuthenticationAPP_KEY: ""PASSPORT_PRIVATE_KEY: ""PASSPORT_PUBLIC_KEY: ""SUPER_ADMINS: ""# LoggingLOG_CHANNEL: "stderr_daily"LOG_LEVEL: "info"# DatabaseDB_CONNECTION: "pgsql"#DB_SSLMODE: "require"# MailMAIL_MAILER: "smtp"MAIL_HOST: ""MAIL_PORT: ""MAIL_ENCRYPTION: "tls"MAIL_FROM_ADDRESS: "[email protected]"MAIL_FROM_NAME: "SolidTime"MAIL_USERNAME: ""MAIL_PASSWORD: ""# QueueQUEUE_CONNECTION: "database"# File storageFILESYSTEM_DISK: "local"PUBLIC_FILESYSTEM_DISK: "public"
---
apiVersion: postgresql.easymile.com/v1alpha1kind: PostgresqlDatabasemetadata:
name: solidtime-dbnamespace: solidtimespec:
# Engine configuration linkengineConfiguration:
# Resource namename: default-cluster-instancenamespace: postgres# Database namedatabase: solidtime# Master role name# Master role name will be used to create top group role.# Database owner and users will be in this group role.# Default is ""masterRole: "solidtime-role"# Should drop on delete ?# Default set to falsedropOnDelete: true# Wait for linked resource deletion to accept deletion of the current resource# See documentation for more information# Default set to falsewaitLinkedResourcesDeletion: true
---
apiVersion: postgresql.easymile.com/v1alpha1kind: PostgresqlUserRolemetadata:
name: solidtime-db-usernamespace: solidtimespec:
# Modemode: MANAGED# Role prefix to be used for user created in database enginerolePrefix: "solidtime"# User password rotation duration in order to roll user/password in secretuserPasswordRotationDuration: 720h# Privileges listprivileges:
- # Privilege for the selected databaseprivilege: OWNER# Database linkdatabase:
name: solidtime-db# Generated secret name with information for the selected databasegeneratedSecretName: solidtime-db-creds
---
apiVersion: apps/v1kind: Deploymentmetadata:
name: solidtime-appnamespace: solidtimelabels:
app: solidtimespec:
replicas: 1selector:
matchLabels:
app: solidtimetemplate:
metadata:
labels:
app: solidtimespec:
volume:
- name: generic-storage-vol
- name: logs-storage-vol
- name: app-storage-volcontainers:
- name: httpimage: solidtime/solidtime:latest # FIXMEports:
- name: httpcontainerPort: 8000envFrom:
- configMapRef:
name: solidtime-envenv:
- name: DB_HOSTvalueFrom:
secretKeyRef:
name: solidtime-db-credskey: HOST
- name: DB_DATABASEvalueFrom:
secretKeyRef:
name: solidtime-db-credskey: DATABASE
- name: DB_USERNAMEvalueFrom:
secretKeyRef:
name: solidtime-db-credskey: LOGIN
- name: DB_PASSWORDvalueFrom:
secretKeyRef:
name: solidtime-db-credskey: PASSWORD
- name: AUTO_DB_MIGRATEvalue: "true"
- name: CONTAINER_MODEvalue: http
- name: OCTANE_SERVERvalue: frankenphpvolumeMounts:
- name: generic-storage-volmountPath: /var/www/html/storage"
- name: logs-storage-volmountPath: /var/www/html/storage/logs"
- name: app-storage-volmountPath: /var/www/html/storage/app"
- name: schedulerimage: solidtime/solidtime:latest # FIXMEenvFrom:
- configMapRef:
name: solidtime-envenv:
- name: DB_HOSTvalueFrom:
secretKeyRef:
name: solidtime-db-credskey: HOST
- name: DB_DATABASEvalueFrom:
secretKeyRef:
name: solidtime-db-credskey: DATABASE
- name: DB_USERNAMEvalueFrom:
secretKeyRef:
name: solidtime-db-credskey: LOGIN
- name: DB_PASSWORDvalueFrom:
secretKeyRef:
name: solidtime-db-credskey: PASSWORD
- name: CONTAINER_MODEvalue: "scheduler"volumeMounts:
- name: generic-storage-volmountPath: /var/www/html/storage"
- name: logs-storage-volmountPath: /var/www/html/storage/logs"
- name: app-storage-volmountPath: /var/www/html/storage/app"
- name: workerimage: solidtime/solidtime:latest # FIXMEenvFrom:
- configMapRef:
name: solidtime-envenv:
- name: DB_HOSTvalueFrom:
secretKeyRef:
name: solidtime-db-credskey: HOST
- name: DB_DATABASEvalueFrom:
secretKeyRef:
name: solidtime-db-credskey: DATABASE
- name: DB_USERNAMEvalueFrom:
secretKeyRef:
name: solidtime-db-credskey: LOGIN
- name: DB_PASSWORDvalueFrom:
secretKeyRef:
name: solidtime-db-credskey: PASSWORD
- name: CONTAINER_MODEvalue: "worker"volumeMounts:
- name: generic-storage-volmountPath: /var/www/html/storage"
- name: logs-storage-volmountPath: /var/www/html/storage/logs"
- name: app-storage-volmountPath: /var/www/html/storage/app"
---
# todo: service, traefik ingressRoute
So far, so good. Here's what I am left with:
Do I need the horizon mode?
What do I need exactly for the PASSPORT_ variables? Depending on what, I could use an initContainer.
Sadly I have no way of "statically" defining my Mailgun credentials (I wish I could use external-secrets with the Webhook feature to do that...). Are there other ways/places to store it? If possible, it'd be nice to not have to put them into the manifest.
What exactly is the difference between APP_DOMAIN and APP_URL as well as APP_NAME and VITE_APP_NAME?
Are there more logging options? Long term, I want to put some Prometheus exporters and log aggregators ontop - so it'd be helpful in advance to see what I can do with the log settings.
This'll run inside k3s and might make a neat Helm chart down the line. :)
Kind regards,
Ingwie
The text was updated successfully, but these errors were encountered:
Hi @IngwiePhoenix, glad to see that you want to try to run solidtime on K8S. Our solidtime cloud also runs on Kubernetes and we do have plans to create a official Helm chart for self-hosting. Currently I'm building a generic Helm chart for Laravel applications called Larakube. The official solidtime Helm chart will most likely be based on that in the future.
Sadly I have no way of "statically" defining my Mailgun credentials
Sorry I don't understand the question. You can store the mailgun credentials in a secret and load it in the deployment like you did for the DB_PASSWORD
What exactly is the difference between APP_DOMAIN and APP_URL as well as APP_NAME and VITE_APP_NAME?
APP_DOMAIN is for the example with the reverse proxy, you can ignore that if you build your own setup. APP_URL is the url that soldtime run under. You can ignore APP_NAME and VITE_APP_NAME.
Are there more logging options? Long term, I want to put some Prometheus exporters and log aggregators ontop - so it'd be helpful in advance to see what I can do with the log settings.
Hello!
I am trying to put together a Kubernetes deployment and I am a little stuck with assigning the proper values for the environment.
Here's the full document so far:
Deployment
So far, so good. Here's what I am left with:
horizon
mode?PASSPORT_
variables? Depending on what, I could use aninitContainer
.external-secrets
with the Webhook feature to do that...). Are there other ways/places to store it? If possible, it'd be nice to not have to put them into the manifest.APP_DOMAIN
andAPP_URL
as well asAPP_NAME
andVITE_APP_NAME
?This'll run inside k3s and might make a neat Helm chart down the line. :)
Kind regards,
Ingwie
The text was updated successfully, but these errors were encountered: