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

feat(nextcloud): add notify_push support #581

Draft
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

wrenix
Copy link
Collaborator

@wrenix wrenix commented Jun 9, 2024

Pull Request

Description of the change

Not yet tested

Benefits

  • support notify_push
  • improve ServiceMonitor (to collect data from nextcloud-exporter and notify_push)

Possible drawbacks

Applicable issues

Additional information

Checklist

TODO

  • redis password from existing secret (or URL)
  • put redis password from env to secrets
  • solve bootstrap problem (nextcloud and notify_push needs to be online)

@wrenix wrenix force-pushed the feat/notify_push branch 2 times, most recently from 4c3cee5 to 46eb0e9 Compare June 9, 2024 22:57
@wrenix wrenix mentioned this pull request Jun 9, 2024
3 tasks
@wrenix wrenix force-pushed the feat/notify_push branch 3 times, most recently from f5f716e to 6ed673a Compare June 9, 2024 23:19
@AndreKoepke
Copy link

Can we ensure that the notify_push-plugin is installed? Maybe something like this?

 lifecycle:
      postStart:
        exec:
          command: ["occ",  "app:install notify_push"]

And we have to active that plugin by running sudo -u www-data ./occ notify_push:setup https://NEXTCLOUD_HOST/push. Maybe we should add a little script like this (pseudocode):

if (!notify_push installed)
  install notify_push
/occ notify_push:setup https://NEXTCLOUD_HOST/push

@provokateurin
Copy link
Member

I think it makes sense to give this option so the installation and setup is completely automatic, but I'd rather put it behind a second config flag:

notify_push:
	enabled: true
	automatic_setup: true

Maybe some people don't want to have this done automatically, so it's nice to give them the option.

@wrenix
Copy link
Collaborator Author

wrenix commented Jun 14, 2024

Therefore we has that hook of the container script (see #525), i write a ConfigMap for it.

PS: the same way, then in #480 (@provokateurin you wanted to take a look there ...)

PSS: Does somebody test this/my code?

@AndreKoepke
Copy link

AndreKoepke commented Jun 17, 2024

andre@server:~/k8s/nextcloud$ helm upgrade -n nextcloud akops-nextcloud -f values.yml ./helm/charts/nextcloud/
Error: UPGRADE FAILED: template: nextcloud/templates/notify_push/deployment.yaml:41:31: executing "nextcloud/templates/notify_push/deployment.yaml" at <$.Values.global.image.registry>: nil pointer evaluating interface {}.image

Copy link

@AndreKoepke AndreKoepke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When I remove the global-references, then I got this error:

andre@server:~/k8s/nextcloud$ helm upgrade -n nextcloud akops-nextcloud -f values.yml ./helm/charts/nextcloud/
Error: UPGRADE FAILED: YAML parse error on nextcloud/templates/notify_push/deployment.yaml: error converting YAML to JSON: yaml: line 41: did not find expected key

charts/nextcloud/templates/notify_push/deployment.yaml Outdated Show resolved Hide resolved
charts/nextcloud/templates/notify_push/deployment.yaml Outdated Show resolved Hide resolved
@wrenix
Copy link
Collaborator Author

wrenix commented Jun 18, 2024

Oh sorry, that was a copy-paste error.
normally i has on my helm-charts a global.image part to overwrite for registry and so on.

@AndreKoepke
Copy link

AndreKoepke commented Jun 18, 2024

I was able to try an install. The result was this:

Configuring Redis as session handler
=> Searching for scripts (*.sh) to run, located in the folder: /docker-entrypoint-hooks.d/before-starting
==> Running the script (cwd: /var/www/html): "/docker-entrypoint-hooks.d/before-starting/notify_push.sh"
notify_push already installed
✓ redis is configured
🗴 push server is not receiving redis messages (received 272721789, got 0)
==> Failed at executing "/docker-entrypoint-hooks.d/before-starting/notify_push.sh". Exit code: 1

Edit

I have a password for redis and it was not set. Can add this like this?

            - name: REDIS_URL
              value: "redis://:<PASSWORD>@{{ template "nextcloud.redis.fullname" . }}-master:{{ .Values.redis.master.service.ports.redis }}"

When I did this locally, then we have the chicken-egg-problem ...
The notify_push application needs a running nextcloud-instance to fully start. And the nextcloud-instance need a running notify_push.

Maybe there is a better hook after nextcloud has started?

@wrenix
Copy link
Collaborator Author

wrenix commented Jun 18, 2024

okay, redis password should work:

  • but not on existing secrets TODO
    We has to reorganize the secrets.

PS: found that the redis password is not stored by default in a secret ....


oh yes, that is a bootstrap problem. maybe we could remove it on one part.

value: "http{{ if .Values.notifyPush.https }}s{{ end }}://{{ template "nextcloud.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local:{{ .Values.service.port }}"
ports:
- name: http
containerPort: 7867

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
containerPort: 7867
containerPort: 80

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, that is strange - I do like to run pods with less priority and permission (port over 1000) and reNAT it with the service to an port like 80 ...

That is the reason why I set the ENV and this port to 7867.
So I like to debug, why the ENV does not work correct.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm also notify_push mean, this is the default port:
https://github.com/nextcloud/notify_push?tab=readme-ov-file#configuration

So, how should it work this way 🤔

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I got a connection timeout when I started it and only saw the port 80 in the service. I was a bit in hurry.

Your right, this should be the correct port-setting.

@AndreKoepke
Copy link

With the fixed port, I still unable to run it.

Logs from notify_push pod:

[2024-06-19 06:44:36.746890 +00:00] ERROR [notify_push] src/main.rs:78: Self test failed: Error while communicating with nextcloud instance: error sending request for url (http://akops-nextcloud.nextcloud.svc.cluster.local:8080/index.php/apps/notify_push/test/version): error trying to connect: tcp connect error: Connection refused (os error 111)

@jessebot
Copy link
Collaborator

@wrenix I'm updated your push file to be .tpl instead of .gotmpl to match the rest of the tpl files. I may also pop in here and write a quick test so this gets tested in CI?


# test the helm chart with notify push enabled
- name: Notify Push Enabled
helm_args: '--helm-extra-set-args "--set=notifyPush.enabled=true"'
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to remove or tweak this @wrenix 🙏

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the rename of the templates (and the merge of #480 )

and yes i will replace that part into a ci/ct-*-values.yaml ala #526

Copy link
Collaborator Author

@wrenix wrenix Aug 11, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh i see that i have missed to #598 ala #526 ...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feature] High Performance File Backend
4 participants