Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update k8s example [#159] #162

Merged
merged 2 commits into from
Sep 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.