[!WARNING]
This chart requires access to a private image registry, please request access from the owner of the repository.
Waktu Solat is a simple web application that posts local prayer times to federated social network.
[!NOTE]
You may refer to Orked for help with setting up a Kubernetes cluster that meets all the following prerequisites.
[!IMPORTANT]
The following items are required to be set up prior to installing this chart.
An image pull secret is required to access the private image registry that hosts the required image.
If you have the necessary credentials, create a named image pull secret (i.e. ghcr-token-secret
) in the default
namespace:
kubectl create secret docker-registry ghcr-token-secret --docker-server=<container-registry> --docker-username=<registry-username> --docker-password=<registry-token> --docker-email=<registry-email> -n default
Copy the image pull secret from the default
namespace to the destination namespace:
kubectl get secret ghcr-token-secret -n default -o yaml | sed "s/namespace: .*/namespace: <destination-namespace>/" | kubectl apply -f -
Add the name of the image pull secret to the imagePullSecrets
array in your installation’s values file:
imagePullSecrets:
- name: "ghcr-token-secret"
A unique, secure secret key is required for each WaktuSolat installation.
Generate a secret key using the following command:
python -c 'import random; print("".join([random.choice("abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)") for i in range(50)]))'
Set the generated secret key as the value of the waktusolat.secret
setting in your installation’s values file:
secret: "<generated-secret>"
A secure application access token is required for each configured account.
Follow the subsections below on how to generate an access token for each account.
Set the access token as the value of the waktusolat.account
account’s token
setting in your installation’s values file:
token: "<access-token>"
Replace <access-token>
with the account’s generated access token.
Login to your Mastodon (bot) account. If you do not currently have one, you will need to register one first on any available Mastodon instance.
Click the Preferences menu item.
In the Preferences page, navigate to the Development section.
From the Your applications list, click the New application button.
In the New application form, fill in the following required details:
Application name: Add in a unique, descriptive name for your application i.e. WaktuSolat
Scopes:
read
write
Click the Save changes button.
After being redirected back to the Your applications page, click the link on the name of the application you just created.
In the specific Application page, copy the value of the confidential Your access token field.
Login to your Bluesky (bot) account. If you do not currently have one, you will need to register one first on any available Bluesky instance.
Click the Settings menu item.
In the Settings page, navigate to the App Passwords section.
In the App Passwords page, click the Add App Password button.
In the prompted form, add in a unique, descriptive name for the App Password (i.e. WaktuSolat
) and click the Create App Password button to submit the form.
Copy the value of the confidential App Password that has been generated and click the Done button.
[!NOTE]
The following configuration recommendations might not be the default settings for this chart but are highly recommended. Please carefully consider them before configuring your installation.
This section does not apply to this chart.
[!NOTE]
The following configurations are expected or recommended to be set up from within the application after completing the installation.
This section does not apply to this chart.
Add the repo to your local helm client:
helm repo add mika https://irfanhakim-as.github.io/charts
Update the repo to retrieve the latest versions of the packages:
helm repo update
Get the values file of the WaktuSolat chart or an existing installation (release).
Get the latest WaktuSolat chart values file for a new installation:
helm show values mika/waktusolat > values.yaml
Alternatively, get the values file of an existing WaktuSolat release:
helm get values ${releaseName} --namespace ${namespace} > values.yaml
Replace ${releaseName}
and ${namespace}
accordingly.
Edit your WaktuSolat values file with the intended configurations:
nano values.yaml
Pay extra attention to the descriptions and sample values provided in the chart values file.
Install a new release for WaktuSolat or upgrade an existing WaktuSolat release:
helm upgrade --install ${releaseName} mika/waktusolat --namespace ${namespace} --create-namespace --values values.yaml --wait
Replace ${releaseName}
and ${namespace}
accordingly.
Verify that your WaktuSolat release has been installed:
helm ls --namespace ${namespace} | grep "${releaseName}"
Replace ${namespace}
and ${releaseName}
accordingly. This should return the release information if the release has been installed.
[!CAUTION]
Uninstalling a release will irreversibly delete all the resources associated with the release, including any persistent data.
Uninstall the desired release:
helm uninstall ${releaseName} --namespace ${namespace} --wait
Replace ${releaseName}
and ${namespace}
accordingly.
Verify that the release has been uninstalled:
helm ls --namespace ${namespace} | grep "${releaseName}"
Replace ${namespace}
and ${releaseName}
accordingly. This should return nothing if the release has been uninstalled.
Key | Type | Default | Description |
---|---|---|---|
db.host | string | "" |
The hostname or IP address of the WaktuSolat database server. |
db.name | string | "" |
The name of the database being used by WaktuSolat. |
db.password | string | "" |
The password associated with the WaktuSolat database user. |
db.port | string | "" |
The port number the WaktuSolat database server is listening for connections. Default: "5432" . |
db.type | string | "" |
The database engine or backend being used by WaktuSolat. Default: "postgresql" . |
db.user | string | "" |
The username or user account for accessing the WaktuSolat database. |
image.redis.pullPolicy | string | "" |
The policy that determines when Kubernetes should pull the Redis container image. Default: "alpine" . |
image.redis.registry | string | "" |
The registry where the Redis container image is hosted. Default: "docker.io" . |
image.redis.repository | string | "" |
The name of the repository that contains the Redis container image used. Default: "redis" . |
image.redis.tag | string | "" |
The tag that specifies the version of the Redis container image used. Default: "alpine" . |
image.waktusolat.pullPolicy | string | "" |
The policy that determines when Kubernetes should pull the WaktuSolat container image. Default: "IfNotPresent" . |
image.waktusolat.registry | string | "" |
The registry where the WaktuSolat container image is hosted. Default: "ghcr.io" . |
image.waktusolat.repository | string | "" |
The name of the repository that contains the WaktuSolat container image used. Default: "irfanhakim-as/waktusolat" . |
image.waktusolat.tag | string | "" |
The tag that specifies the version of the WaktuSolat container image used. Default: Chart appVersion . |
imagePullSecrets | list | [] |
Credentials used to securely authenticate and authorise the pulling of container images from private registries. |
ingress.clusterIssuer | string | "" |
The name of the cluster issuer for Ingress. Default: "letsencrypt-dns-prod" . |
ingress.customAnnotations | list | [] |
Additional configuration annotations to be added to the Ingress resource. Items: .prefix , .name , .value . |
ingress.enabled | bool | false |
Specifies whether Ingress should be enabled for hosting WaktuSolat services. |
ingress.www | bool | false |
Specifies whether the WWW subdomain should be enabled. |
replicaCount | string | "" |
The desired number of running replicas for WaktuSolat. Default: "1" . |
resources.scheduler | object | {} |
Scheduler container resources. |
resources.waktusolat | object | {} |
WaktuSolat container resources. |
scheduler.apscheduler | bool | true |
Specifies whether APScheduler should be used by WaktuSolat as the task scheduler. |
scheduler.celery | bool | false |
Specifies whether Celery should be used by WaktuSolat as the task scheduler. |
scheduler.schedule.clean_db.hour | string | "" |
The hours at which the task scheduler cleans up the database. Default: "0" . |
scheduler.schedule.clean_db.minute | string | "" |
The minutes at which the task scheduler cleans up the database. Default: "0" . |
scheduler.schedule.clean_db.second | string | "" |
The seconds at which the task scheduler cleans up the database. Default: “0” (apscheduler ). |
scheduler.schedule.notify_solat_schedule.hour | string | "" |
The hours at which the task scheduler schedules the daily prayer time post. Default: "5" . |
scheduler.schedule.notify_solat_schedule.minute | string | "" |
The minutes at which the task scheduler schedules the daily prayer time post. Default: "0" . |
scheduler.schedule.notify_solat_schedule.second | string | "" |
The seconds at which the task scheduler schedules the daily prayer time post. Default: “0” (apscheduler ). |
scheduler.schedule.notify_solat_times.hour | string | "" |
The hours at which the task scheduler schedules the daily prayer time notifications. Default: "*" . |
scheduler.schedule.notify_solat_times.minute | string | "" |
The minutes at which the task scheduler schedules the daily prayer time notifications. Default: "*/1" . |
scheduler.schedule.notify_solat_times.second | string | "" |
The seconds at which the task scheduler schedules the daily prayer time notifications. Default: “0” (apscheduler ). |
scheduler.schedule.post_scheduler.hour | string | "" |
The hours at which the task scheduler posts scheduled posts. Default: "*" . |
scheduler.schedule.post_scheduler.minute | string | "" |
The minutes at which the task scheduler posts scheduled posts. Default: "*" . |
scheduler.schedule.post_scheduler.second | string | "" |
The seconds at which the task scheduler posts scheduled posts. Default: “*/1” (apscheduler ). |
scheduler.timezone | string | "" |
The timezone for the task scheduler used by WaktuSolat to schedule time-dependent operations. Default: "Etc/UTC" . |
service.redis.nodePort | string | "" |
The optional node port to expose for Redis when the service type is NodePort. |
service.redis.port | string | "" |
The Redis port on which the WaktuSolat server should listen for connections. Default: "6379" . |
service.type | string | "" |
The type of service used to expose WaktuSolat services. Default: "ClusterIP" . |
service.waktusolat.nodePort | string | "" |
The optional node port to expose for WaktuSolat when the service type is NodePort. |
service.waktusolat.port | string | "" |
The WaktuSolat port on which the WaktuSolat server should listen for connections. Default: "80" . |
storage.log.accessMode | string | "" |
The access mode defining how the log storage can be mounted. Default: "ReadWriteMany" . |
storage.log.enabled | bool | false |
Specifies whether persistent storage should be provisioned for log storage. |
storage.log.mountPath | string | "" |
The path where the log storage should be mounted on the container. Default: "/var/log/apache2" . |
storage.log.storage | string | "" |
The default amount of persistent storage allocated for the log storage. Default: "50Mi" . |
storage.log.storageClassName | string | "" |
The storage class name used for dynamically provisioning a persistent volume for the log storage. Default: "longhorn" . |
storage.log.subPath | string | "" |
The subpath within the log storage to mount to the container. Leave empty if not required. |
waktusolat.account | list | [] |
Account configurations. Items: .api , .id , .host , .token , .bot , .discoverable , .enabled , .display_name , .fields , .locked , .note . |
waktusolat.debug | bool | false |
Specifies whether WaktuSolat should run in debug mode. Default: false . |
waktusolat.domain | string | "" |
The ingress domain name that hosts the WaktuSolat server. Default: "localhost" . |
waktusolat.feed | list | [] |
WaktuSolat feed configurations. Items: .endpoint , .id , .enabled . |
waktusolat.location | list | [] |
The code of locations WaktuSolat should fetch and update prayer times for. Default: "wlp-0" . |
waktusolat.post_limit | string | "" |
The limit number of posts to be scheduled for posting per run. Default: "0" (Unlimited). |
waktusolat.retry_post | string | "" |
Specifies whether to retry posting if the post fails to be sent. Default: "false" . |
waktusolat.secret | string | "" |
A 50-character secret key used for secure session management and cryptographic operations within the WaktuSolat service. |
waktusolat.serverAdmin | string | "" |
The email address displayed by Apache for server administration contact. Default: “admin@example.com”. |
waktusolat.visibility | string | "" |
The default visibility of posts made by the WaktuSolat service. Default: "public" . |