LBRY on Kubernetes with Helm #71
No reviewers
Labels
No labels
Accepted
area: devops
area: discovery
area: docs
area: livestream
area: proposal
consider soon
Epic
good first issue
hacktoberfest
help wanted
icebox
In Review
level: 1
level: 2
level: 3
level: 4
needs: exploration
needs: grooming
needs: priority
needs: repro
needs: tech design
on hold
priority: blocker
priority: high
priority: low
priority: medium
resilience
Tom's Wishlist
type: bug
type: discussion
type: improvement
type: new feature
type: refactor
type: task
type: testing
unplanned
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: LBRYCommunity/lbry-docker#71
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "k8s-lbry"
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?
This is a working Helm chart and HOWTO for running lbrycrd, chainquery, lbrynet, and spee.ch on Kubernetes, using the containers from this repo.
README
This requires changes to the lbrycrd image outlined in #70
Would you be interested in showing a reasonable platform agnostic playthrough of this guide via a video similar to your Cloud-init?
There's quite a lot to review here so I would like to sit down with you in slack today and look over its functionality and give it a run through test. Maybe record a video for embedding into the tutorial.
I want to refine this process a bit with a few more goals:
@EnigmaCurry I would say a shared volume is the solution for shared data between spee.ch and lbrynet.
The makefile could be a really good option however BASH is generally more available than Make is it possible to just use a bash script?
I've updated my k8s-lbry branch with the new additions outlined above.
Right now I'm building my own spee.ch container from https://gist.github.com/EnigmaCurry/57e9773d9b3748b248a52fcebd447fba
Things to do before merge:
no channel password provided
, although logging into the channel appears to work, and I do see the password in the log when the account was created.contrib/k8s-lbry/kick-ascii
directory. Turn on github pages in the repository settings for themaster
branch.contrib/k8s-lbry/repository
. Alternatively, we could just keep it as S3, and host it elsewhere. I think the latter option is a bit cleaner.Looks like the Readme is 97% of the way there let us get it the last 3% and I'll push this into the repository!
Ideally, this should be hosted on this repository completely.
Is this a whole env-var? Looks like a combination between a variable and a command. This should be clearer.
@ -0,0 +1,876 @@
# LBRY on Kubernetes with Helm
One of the things that I would love for the documentation is to avoid making assumptions of knowledge in general. So when a user jumps into wanting to host their own K8's based instance of this we should assume that the user will want links back to the official documentation for various processes.
@ -0,0 +56,4 @@
<!-- tocstop -->
## Requirements
Just for the sake of ramping up adoption of this method, we should definitely attempt to have a proper screencast captured and hosted on LBRY for this.
Nothing worse than making the wrong assumptions we should really aim to have a full zero to hero guide for everything.
@ -0,0 +93,4 @@
If everything is working, you should see a list of one or more nodes running and
showing `STATUS=Ready`
## Security Notice
We need to also refer to vulnerability reporting and any responsible disclosure stuff in a security notice.
@ -0,0 +147,4 @@
```
curl -Lo run.sh https://raw.githubusercontent.com/EnigmaCurry/lbry-docker/k8s-lbry/contrib/k8s-lbry/run.sh
Possibly put a comment here mentioning that people should always review the contents of a curl'd script for secure operations involving money.
@ -0,0 +225,4 @@
k8s-lbry kubectl get svc nginx-ingress-controller -o wide
```
If you find a hostname instead of an IP address, this means your load balancer
Could we not replace part of this with a script that would just use the OS's included
dig
installation to do this? If that sounds like a proper pain in the ass nevermind but just sounds like a step we can do for them potentially.@ -0,0 +468,4 @@
* mysql for storing the speech database.
Edit `values-dev.yaml`.
Can you update references to these files with URL's referencing their location in the repository? Just might help people know where the defaults are.
@ -0,0 +492,4 @@
Copy the wallet in case the volume gets destroyed:
```
k8s-lbry speech-lbrynet-copy-wallet /tmp/k8s-lbry-speech-lbrynet-wallet-backup.json
Could we potentially
cat
and pipe this intoapt-get install qrencode
on the host somehow so the user could scan it into a wallet app or something for backup?Can these things be moved into a directory within this repository?
@ -0,0 +541,4 @@
fi
}
setup-alias() {
This should verify that the user's shell is BASH if you're planning on adding this.
I copied everything from https://github.com/enigmacurry/kick-ascii into this directory. This is just the upstream README. I can actually just delete the file, its not needed..
@ -0,0 +225,4 @@
k8s-lbry kubectl get svc nginx-ingress-controller -o wide
```
If you find a hostname instead of an IP address, this means your load balancer
This whole paragraph is an implementation detail that only affects AWS users (I'm not sure if it affectrs all AWS users, or if it was just my config). On DigitalOcean its a non-issue. I will add a comment they can use
dig
themselves. Scripting this away might make this harder to debug I think, plus end-users might have a better idea of how to route via two ip address than me?@ -0,0 +468,4 @@
* mysql for storing the speech database.
Edit `values-dev.yaml`.
values-dev.yaml does not exist in the repository, only values.yaml does. values-dev is created by run.sh when the user runs setup.
@ -0,0 +492,4 @@
Copy the wallet in case the volume gets destroyed:
```
k8s-lbry speech-lbrynet-copy-wallet /tmp/k8s-lbry-speech-lbrynet-wallet-backup.json
I don't think I want to introduce a new dependency, but adding instructions to do this is a great idea!
@ -0,0 +492,4 @@
Copy the wallet in case the volume gets destroyed:
```
k8s-lbry speech-lbrynet-copy-wallet /tmp/k8s-lbry-speech-lbrynet-wallet-backup.json
actually if the dependency is only for one subcommand, maybe its ok. Lemme think about this. Its a grand idea.
how about this?
Only problem with that though is if the user thinks they don't need the parentheses. The env var is only supposed to be temporary for that one command.
I'll just leave a note to run it with the parens.
@ -0,0 +93,4 @@
If everything is working, you should see a list of one or more nodes running and
showing `STATUS=Ready`
## Security Notice
added!
@ -0,0 +147,4 @@
```
curl -Lo run.sh https://raw.githubusercontent.com/EnigmaCurry/lbry-docker/k8s-lbry/contrib/k8s-lbry/run.sh
added
@ -0,0 +225,4 @@
k8s-lbry kubectl get svc nginx-ingress-controller -o wide
```
If you find a hostname instead of an IP address, this means your load balancer
added note to use dig if available, but otherwise leaving this as-is.
@ -0,0 +1,876 @@
# LBRY on Kubernetes with Helm
added
@ -0,0 +56,4 @@
<!-- tocstop -->
## Requirements
asciicast links should resolve to lbryio.github.io now.
@ -0,0 +492,4 @@
Copy the wallet in case the volume gets destroyed:
```
k8s-lbry speech-lbrynet-copy-wallet /tmp/k8s-lbry-speech-lbrynet-wallet-backup.json
OK after thinking about it, I think this is the wrong place to implement this. I feel like lbrynet itself should have this feature. Otherwise someone might look at the lbrynet docs, and not know what to do with this qrcode.
@ -0,0 +541,4 @@
fi
}
setup-alias() {
Now it does. thank you.
Just waiting on @tiger5226 to enable the github pages for this repo so I can rebase and merge this at this point.
its enabled