astriaorg / dev-cluster Goto Github PK
View Code? Open in Web Editor NEWConfiguration and scripts for running Astria
License: Apache License 2.0
Configuration and scripts for running Astria
License: Apache License 2.0
Create a faucet setup for devnet EVM.
Gives the ability to transfer tokens to an account, with a mechanism in which we are responsible for/has limits.
README should say that docker must be running before just
commands
Create a certificate and update scripts to run the cometbft node with TLS capability.
root issue astriaorg/astria#391
add:
k9s -n astria-dev-cluster
will add more as i go through
Separate issue to split up Uniswap demo data and EVM demo data.
I decided upon some naming conventions after having already done the celestia-local
work, so I need to go back and make some things consistent with the newer work.
{{pod name}}-{{service name}}-pv
{{pod name}}-{{service name}}-pvc
volumes.yaml
, storageclasses.yaml
, etcvalues.yaml
Helmify Sequencer. Blocking completion of #27
In the Readme we note where to find the faucet for a given rollup (https://github.com/astriaorg/dev-cluster#faucet) but we do not say where the block explorer for a rollup is.
It looks like this is at:
blockscout.<rollup name>.localdev.me
currently app: astria-dev-cluster
set in metadata for all deployments
Selectors need to be unique across deployments and other controllers—otherwise deployments start to conflict with each other and select each others' pods.
Using a single ingress object for all astria svc is messy with cloud ingress controllers
Split ingress tempalates for local v cloud
Private devnet requires we have a long lived deployed cluster where EVM can be accessed when a user has an API key from JSON RPCs, and data is posted to devnet (arabica) of Celestia.
Celestia-local is current cranking faster than normal, metro is slow. We should speed up metro block times, and slow down celestia times to get to point more similar to mainnet launch
I will sometimes get an error when Blockscout's Postgres is starting up related to data already existing. This blocks Blockscout from starting.
| The database cluster will be initialized with locale "en_US.utf8". │
│ The default database encoding has accordingly been set to "UTF8". │
│ The default text search configuration will be set to "english". │
│ │
│ Data page checksums are disabled. │
│ │
│ initdb: error: directory "/var/lib/postgresql/data" exists but is not empty │
│ If you want to create a new database system, either remove or empty │
│ the directory "/var/lib/postgresql/data" or run initdb │
│ with an argument other than "/var/lib/postgresql/data".
Refactor Celestia from regular k8s yaml manifests into a Helm Chart
For some reason https://github.com/astriaorg/dev-cluster/blob/main/helm/rollup/templates/secretproviderclass.yaml doesn't run.
Example Error:
Warning
FailedMount
3s (x6 over 21s)
kubelet
MountVolume.SetUp failed for volume "evm-private-key" : rpc error: code = Unknown desc = failed to mount secrets store objects for pod astria-dev-cluster/astria-faucet-6fb7b497f6-n7p4w, err: invalid path: must not be empty: ""
This is consumed by the rollup's faucet here: https://github.com/astriaorg/dev-cluster/blob/main/helm/rollup/templates/deployment.yaml#L142
Manual creation of the provider class resolved this.
When broken out into pods, they are no longer connected to the p2p network, configuration should be updated to enable this.
Blocked by astriaorg/astria#108 astriaorg/astria#19
Currently we have a geth pod, and are working on adding tooling to make that work nicely. (#12, #10)
We make it easy to run a second chain, and it's own set of infrastructure. This can be just commands + modified foundry with templated k8s with sh commands if that's the best implementation, but ideally just a couple of clean commands.
ie
export CHAIN_ID={}
export EVM_FUNDING_ADDR={}
just deploy-geth $CHAIN_ID $EVM_FUNDING_ADDRESS
just deploy-eth-explorer $CHAIN_ID
just deploy-faucet $CHAIN_ID $EVM_FUNDING_ADDRESS
See: https://github.com/actions/add-to-project
Attempting to follow these instructions (https://docs.github.com/en/issues/planning-and-tracking-with-projects/automating-your-project/adding-items-automatically) and duplicating the existing workflow gives a message of "maximum number of auto-add workflows reached" but we may be able to manually add an action.
Example from above link:
name: Add bugs to bugs project
on:
issues:
types:
- opened
jobs:
add-to-project:
name: Add issue to project
runs-on: ubuntu-latest
steps:
- uses: actions/add-to-project@RELEASE_VERSION
with:
# You can target a project in a different organization
# to the issue
project-url: https://github.com/orgs/<orgName>/projects/<projectNumber>
github-token: ${{ secrets.ADD_TO_PROJECT_PAT }}
labeled: bug, needs-triage
label-operator: OR
Note: we want to leave the labeled
input empty which will add all issues
It's possible for a persistent volume to get very large, and bad things happen when a user's disk runs out of space. To avoid borking some poor soul's computer who just wanted to run our chain, let's default to ephemeral storage but provide a value that can be overridden to create a persistent local volume.
Current celestia-app and celestia-node images are quite out of date. We need to update both images to the latest release candidate.
App rc5:
https://github.com/celestiaorg/celestia-app/pkgs/container/celestia-app/104158389?tag=v1.0.0-rc5
Node rc5:
https://github.com/celestiaorg/celestia-node/pkgs/container/celestia-node/105006714?tag=v0.11.0-rc5
Instead of sequencer-relayer
and conductor
connecting directly to the bridge, each should have their own light node, which connects to the bridge node.
Each light node should have it's own account, functioning as a wallet interface with the Celestia network.
We may need to update and have a default genesis for celestia-local which provides funds to multiple fixed account addresses. When running light nodes against a devnet or testnet network, operators
https://www.notion.so/astria-org/Uniswap-contract-deployment-fd8a095b171f4cefbeb3fe7c89d455cc?pvs=4
https://github.com/steezeburger/contracts-for-uniswap
https://github.com/astriaorg/deploy-v3
This is considered done when I have successfully performed a swap between two coins.
Currently my account hash is hardcoded into the geth configs.
It should be possible to use your own local account for the dev-cluster. This will require a template to get the user's hash to work with kustomization
Blocked by #32
Once we have the new sequencer integrated, update the dev cluster to run multiple sequencer pods (at least 2)
When attempting to go through dev-cluster
after a fresh git clone
the just create-control-plane
fails.
kind create cluster --config ./kubernetes/kind-cluster-config.yml
Creating cluster "astria-dev-cluster" ...
✓ Ensuring node image (kindest/node:v1.26.3) 🖼
✓ Preparing nodes 📦
✓ Writing configuration 📜
✗ Starting control-plane 🕹️
ERROR: failed to create cluster: failed to init node with kubeadm: command "docker exec --privileged astria-dev-cluster-control-plane kubeadm init --skip-phases=preflight --config=/kind/kubeadm.conf --skip-token-print --v=6" failed with error: exit status 1
Command Output: I0615 01:43:52.178033 131 initconfiguration.go:254] loading configuration from "/kind/kubeadm.conf"
Full error logs: https://gist.github.com/jbowen93/2d868f9923be7a3b65ffdc78ecc27bc5
using the same name for secret provider class across applications will result in them fighting each other for assignment of the secret provider class.
Need to make sep provider class for rollup / sequencer-faucet
Our k8s deployment is currently all in a single pod, we need to migrate to multiple pods.
Related to:
Blocked by:
The current workflow is not sustainable:
main
to gh-pages
branchjust package-and-publish-charts
gh-pages
branchWe can instead use https://github.com/helm/chart-releaser-action to handle this for us.
The faucet is not needed for every node, should be it's own dependency which can be enabled or disabled on chart.
The per rollup faucet is by default configured to have a 24h delay on token requests. I believe this is rate limited on a per IP address basis.
We should make this configurable and document how to change it.
Related to: #77
We should have an additional section in the README.md or a different Markdown file that gives some copy-paste examples of interacting with the rollup.
It may be best for this to link to https://github.com/astriaorg/astria-web3 but the desire is to make it easy for an end user to see that the rollup is working.
On reboot, all of our pods lose their chain information. Need to update to have options for persistent storage, required for a public devnet.
We need a way to generate test data in the EVM so that indexers can check if their system is working.
Possible options to look into:
Add image names to values.yaml
and use in the helm templates so that we can easily override images when working with the dev-cluster.
Blocked by astriaorg/astria#75
Blockscout now publishes it's own chart. We can make it a dependency of the rollup which can be enabled or disabled, and hopefully utilize their own chart.
A lot of our configmap keys are snake_case, but should be UPPERCASE_SNAKE_CASE.
export SOME_VAR
in init and start scripts (or setting envvars in deployment.ymls)Moving from podman to k8 setup with ingress rules and such makes this reusable by testing setups in conductor & sequencer potentially, and makes deployment to GKE simpler
The Composer section of the dev-cluster overview doc currently includes the an "Under Construction" comment:
https://github.com/astriaorg/dev-cluster/blob/sb/dev-cluster-overview-doc/docs/astria.md#composer-under-construction
This section needs to be updated to include the most recent status of the Composer now that it is include in the astria repo, and the "under construction" comment removed.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.