Skip to content

Commit

Permalink
Merge pull request #162 from nanos/k8-example
Browse files Browse the repository at this point in the history
Update k8s example [#159]
  • Loading branch information
nanos authored Sep 3, 2024
2 parents fe6ce1a + c4bdbd3 commit cb3c980
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 48 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ FediFetcher is also available in a pre-packaged container, [FediFetcher](https:/
Persistent files are stored in `/app/artifacts` within the container, so you may want to map this to a local folder on your system.

An [example Kubernetes CronJob](./examples/k8s-cronjob.yaml) for running the container is included in the `examples` folder.
An [example Kubernetes CronJob](./examples/k8s-cronjob.md) for running the container is included in the `examples` folder.

An [example Docker Compose Script](./examples/docker-compose.yaml) for running the container periodically is included in the `examples` folder.

Expand Down
71 changes: 71 additions & 0 deletions examples/k8s-cronjob.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Running FediFetcher using a Kubernetes cronjob

> [!NOTE]
>
> The below are not step-by-step instructions. We assume that you mostly know what you are doing.
You should first create a k8s secret, in order to then expose the token as an environment variable (this also avoids anything which might log the command line from including the sensitive value):

```bash
kubectl create secret generic fedifetcher \
--from-literal=server_domain=example.com \
--from-literal=token="<token>"
```

Now define the cronjob, and don't forget to define your PVCs:

```yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: fedifetcher
spec:
schedule: "*/15 * * * *"
failedJobsHistoryLimit: 5
successfulJobsHistoryLimit: 5
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
restartPolicy: Never
containers:
- name: fedifetcher
image: ghcr.io/nanos/fedifetcher:latest
imagePullPolicy: IfNotPresent
env:
- name: FF_HOME_TIMELINE_LENGTH
value: "200"
- name: FF_MAX_FOLLOWERS
value: "10"

# Add any other options below as described in in the README.md file

# If you don't want to use a PVC you may comment the next two lines, but that will significantly
# affect performance, and is NOT recommended
- name: FF_STATE_DIR
value: "/data/"
- name: FF_SERVER
valueFrom:
secretKeyRef:
name: fedifetcher
key: server_domain
optional: false
- name: FF_ACCESS_TOKEN
valueFrom:
secretKeyRef:
name: fedifetcher
key: token
optional: false
# Comment the lines below if you do not use a PVC, but that will significantly
# affect performance and is NOT recommended
volumeMounts:
- mountPath: /data
name: fedifetcher
readOnly: false
volumes:
- name: fedifetcher
persistentVolumeClaim:
claimName: fedifetcher
```
47 changes: 0 additions & 47 deletions examples/k8s-cronjob.yaml

This file was deleted.

0 comments on commit cb3c980

Please sign in to comment.