health check endpoints for each service
I am implementing Immich in k8s. For correctly setting up the probes I need to know correct health check endpoints. Are they documented somewhere?
19 Replies
I don't think we have probes documented anywhere, no. There is a help chart here: https://github.com/immich-app/immich-charts, but I'm not sure if it has any probes in it.
Not sure what this means, but it might just ping the port?
https://github.com/immich-app/immich-charts/blob/main/charts/apps/immich/values.yaml#L209
These are tcp probes. These will not give the true picture if the service is responsive or not. It’s better to have http probes. 200 status code will indicate service is working properly
The only probe I know of is one for the api:
http://localhost:2283/api/server-info/ping (or immich-server:3001/server-info/ping
Ok that works but I found another thing . /server-info is not protected. Although it does not have any sensitive info but still better to have some sort authentication in place
Yes, I think there's an open github issue for that already.
You could make an issue for liveness probes too, we could add them to each container in a consistent fashion.
I actually made my own chart with ingress and pvc included. I use traefik so removed proxy container and send traffic directly from ingress controller to services
Nice!
I actually don’t understand the need of the micro service container
It doesn’t seem to come in the picture. Because web and server don’t refer to it.
Can you explain why that’s needed ?
Sure
The immich-server container queues jobs using a package called bull, which relays them to consumers through redis. So it's uses redis to communicate with that container. It pushes jobs to redis and then microservices consumes and processes them.
An upload event, for example, queues the job to generate a thumbnail, extract exif, and/or transcode a video, and those jobs run in the the microservices process (in the background).
Ah ok. Makes sense
This is an awesome project! I would love to contribute to it. I work in Devops, k8s and cloud .
Sweet
It seems like there a few different ways people seem to install it. A decent amount of people use k8s, charts, other truenas, others unraid, some a community maintained all in one image, another group uses portainer, and some people use docker-compose. Then there's a variety of proxies. Some user nginx, other traefic, others caddy, other nginx proxy manager. Some use the project as is (keep nginx proxy), some use their own proxy directly, some use their own postgres container, some use their own redis container. Lots of variations.
We need all of them more or less for the project to work, but because it's self hosted some people can share infrastructure with other projects.
Yeah there quite a few ways . I for example use shared postgres and redis and traefik .
But not everyone is a docker networking expert so it is nice to just ship a working version with all the components.
Yeah, so then only web/server/microservices for you.
That’s true maybe create ansible playbooks for easier install.
But the best thing is to document in detail so people can choose their own path
Yeah, we have some documentation here:
https://immich.app/docs/install/ but who wants to spend time writing documentation 😛
I can probably contribute the chart I created . It will probably others help setup there installs
Yeah, that seems like a good idea
Cool I’ll create a PR for review
Sounds good. bo0tzz seems to do most of the devops stuff for immich
So he can probably take a look at it