mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-12 02:24:21 -05:00
Run multiple Gitea pods in Kubernetes #2418
Closed
opened 2025-11-02 04:35:26 -06:00 by GiteaMirror
·
17 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#2418
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @abulfatmasimov on GitHub (Oct 18, 2018).
1972383[x]):Description
We would like to know if running multiple Gitea instances inside Kubernetes is supported. We managed to scale it up to run in multiple pods by pointing to the same database and using shared Kubernetes volume amongst pods via pointing paths in Gitea configuration to the shared volume. I do not see any problems so far, but would like to know what would be potential issues we could face with running multiple instances which share same database and storage.
@BetaCat0 commented on GitHub (Oct 19, 2018):
Hi @abulfat-masimov . Here's one problem you should care about so far is that the SSH key storage problem under multi-instance. Generally SSH public keys are stored in
/data/gitea/sshdirectory when using system based SSH tool. That may rasie an unexpected authorzation error using SSH for operations. I suggest enabling Gitea build-in SSH server by specifingSTART_SSH_SERVER = trueand also change theSSH_LISTEN_PORTin[server]config part (still use defaultSSH_PORT = 22for serving). You can take a look at Complete List for more infomation . Hope this can help.@abulfatmasimov commented on GitHub (Oct 19, 2018):
Hi @BetaCat0 , thank you for response and suggestions. Looks like another potential issue could be with indexers, at least I could not find way to point ISSUE_INDEXER_PATH and REPO_INDEXER_PATH to shared volume. They always appear under /app/gitea directory, which is not shared.
Also I am thinking of possible data corruptions with many Gitea processes writing to the same files.
Maybe it is not good idea to run multiple instances of Gitea yet until it is fully supported.
I wonder if there are any plans around Gitea in Kubernetes in roadmap?
@BetaCat0 commented on GitHub (Oct 19, 2018):
That's a problem and we are planning to create an independent index server to solve this. @abulfat-masimov
@techknowlogick commented on GitHub (Oct 19, 2018):
Presslabs have had success running Gitea in k8s: https://www.presslabs.com/news/sftp-gitea/ you may be able to ask them for some implementation details.
@Sluggerman commented on GitHub (Oct 19, 2018):
great, thanks @techknowlogick! I'll reach out to them to ask if they have Gitea running in scaled mode.
@feluxe commented on GitHub (Oct 22, 2018):
I was thinking about a solution for this as well. I currently have this in mind:
Create a shared volume (one that supports
ReadWriteMany, e.g. CephFS cluster deployed via Rook).Run multiple instances of gitea:
cacheandsessionfor each instance.Note: I'm not sure if 3) is even necessary with CephFS? From my understanding, it comes with a locking mechanism to handle reads/writes of multiple clients.
Note: I haven't tested this yet... I think for 4) to work gitea would need to have an option to disable indexing for an instance entirely.
Note: Again. I'm not sure if 4) is necessary with CephFS.
I'd love to hear some feedback before I jump into this. :)
@bogdanpetrea commented on GitHub (Oct 23, 2018):
@techknowlogick: That article is about dropping the SFTP support and unfortunately it's about running a single instance of Gitea in a non-Kubernetes environment. We are currently working on running Gitea on Kubernetes, but we decided to have multiple Gitea instances, logically separated from each other. That's not really the scaling you are probably looking for.
@abulfatmasimov commented on GitHub (Oct 23, 2018):
I guess even if we manage to forward write traffic (POST,PUT) to a single Gitea instance to mitigate risks with corruption, yet it will not be scalable solution as such. I think If something like pessimistic locking could be implemented in Gitea to support simultaneous writes, that would be a real game changer.
@lunny commented on GitHub (Oct 23, 2018):
@feluxe I think 3) is unnecessary. 4) needs some codes change.
@BetaCat0 commented on GitHub (Oct 23, 2018):
@feluxe This looks like somekind of a master-replica solution. As @abulfat-masimov said, it still needs a R/W router to avoid risks of corruption and may not alleviate the writing pressure of main instance (potential SPOF problem).
@jfelten commented on GitHub (Nov 7, 2018):
I've been thinking about this, but lack understanding of where the resource conflicts might be. I think the best way would be to use a stateful set that uses a common queue service for write requests. A lot would depend on the type of file storage and persistence, but I believe postgres at least can be fed from a queue. Other than that you could have a stateful set with db replication set up somehow and fancy file storage that handles concurrency for you. I created a helm chart for gitea but it only uses a single replica, which is enough for our usage.
@schmitch commented on GitHub (Dec 6, 2018):
actually the biggest problem is that redis-ha is not supported.
I mean you can run a redis service of your cloud provider. but you can't use redis-ha helm chart since redis clients need to be sentinal aware.
@benyanke commented on GitHub (Dec 25, 2018):
What's the current state of this? I'm currently considering setting up Gitea for a production environment, and curious if fully HA mode is supported yet.
@stale[bot] commented on GitHub (Feb 23, 2019):
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs during the next 2 weeks. Thank you for your contributions.
@stale[bot] commented on GitHub (Mar 9, 2019):
This issue has been automatically closed because of inactivity. You can re-open it if needed.
@DhavalW commented on GitHub (Mar 19, 2019):
Hello, this issue seems to have auto closed. Has it been implemented ?
I'm considering Gitea for production use as well and would like to know if thats a good idea.
@lunny commented on GitHub (Mar 19, 2019):
I think you can follow @feluxe 's comment.