diff --git a/charts/radius/.gitignore b/charts/radius/.gitignore new file mode 100644 index 0000000..4a424df --- /dev/null +++ b/charts/radius/.gitignore @@ -0,0 +1 @@ +secret.yaml diff --git a/charts/radius/Chart.yaml b/charts/radius/Chart.yaml new file mode 100644 index 0000000..7c7a1d9 --- /dev/null +++ b/charts/radius/Chart.yaml @@ -0,0 +1,10 @@ +apiVersion: v2 +appVersion: "0.4" +description: A Helm chart for Kubernetes +name: radius +type: application +version: 0.1.0 +maintainers: + - name: xom4ek + email: aleksei.lazarev@p2p.org +icon: https://avatars.githubusercontent.com/u/98524494?s=200&v=4 diff --git a/charts/radius/README.md b/charts/radius/README.md new file mode 100644 index 0000000..206d060 --- /dev/null +++ b/charts/radius/README.md @@ -0,0 +1,74 @@ +# radius Helm Chart + +## Introduction +This repository contains a Helm chart for Kubernetes, specifically for the AVS named "radius". +More information about radius you can find here `https://docs.radius-labs.com/introduction/tech-documentation/operator-onboarding` + +## Table of Contents +- [radius Helm Chart](#radius-helm-chart) + - [Introduction](#introduction) + - [Table of Contents](#table-of-contents) + - [Steps to Follow:](#steps-to-follow) + - [Configuration](#configuration) + - [Dependencies](#dependencies) + - [Troubleshooting](#troubleshooting) + - [Contributors](#contributors) + - [License](#license) + +## Steps to Follow: + +1. Generate keys via the following URLs: + - [Eigenlayer Operator Installation Guide](https://docs.eigenlayer.xyz/eigenlayer/operator-guides/operator-installation) + - [TheRadius](https://atlantic-walker-f10.notion.site/Operator-Guide-5077a0f8377447689a85fb1030e68df9) + - [Depository](https://github.com/radiusxyz/depository/tree/main) + +2. -Create a secret in Kubernetes for any workflow you want. Example you can find in `./examples`- +> Dont use secret in open way, try to figure out with [vault](https://github.com/hashicorp/vault) / [sealed-secrets](https://github.com/bitnami-labs/sealed-secrets) / [sops](https://github.com/getsops/sops) +3. Fill the placeholders in your `values.yaml` file: + - YOUR_WALLET_KEY + - YOUR_PUBLIC_DOMAIN + +4. Run the following command to upgrade and install the chart: + ```sh + helm upgrade -i radius p2p-avs/radius -f values.$NETWORK.yaml + ``` + +## Configuration +The following table lists the configurable parameters of the radius chart and their default values. + +| Parameter | Description | Default | +|-----------------------------|---------------------------------------------------------------|------------------------------| +| `replicaCount` | Number of replicas | `1` | +| `service.type` | Type of Kubernetes service | `ClusterIP` | +| `service.ports` | Service ports | `{...}` | +| `ingress.enabled` | Enable ingress | `false` | +| `ingress.host` | Ingress host | `example.com` | +| `node.image.repository` | Node image repository | `theradius/loggia` | +| `node.image.tag` | Node image tag | `latest` | +| `node.image.pullPolicy` | Image pull policy | `Always` | +| `node.resources.requests` | CPU/Memory resource requests | `2 CPU / 8Gi Memory` | +| `node.resources.limits` | CPU/Memory resource limits | `4 CPU / 16Gi Memory` | +| `serviceAccount.create` | Specifies whether a service account should be created | `true` | +| `serviceAccount.name` | Name of the service account | `""` | +| `vmPodScrape.enabled` | Enable VM Pod scraping | `true` | +| `register.enabled` | Enable register functionality | `true` | +| `register.image.repository` | Register image repository | `theradius/loggia` | +| `register.image.tag` | Register image tag | `latest` | +| `register.image.pullPolicy` | Register image pull policy | `Always` | +| `configs.operator.yaml` | Operator configuration | `empty` | + +## Dependencies +This chart depends on several Kubernetes resources and should be used in a Kubernetes cluster. Ensure that you have Kubernetes and Helm installed and configured in your environment. + +## Troubleshooting +If you encounter any issues during installation or usage, check the following: + +- Ensure that all required Kubernetes resources are available. +- Validate your `values.yaml` file against the provided `values.schema.json`. +- Check the logs of the Helm deployment for any errors. + +## Contributors +- xom4ek (Aleksei Lazarev) - aleksei.lazarev@p2p.org + +## License +This project is licensed under the MIT License. See the LICENSE file for details. diff --git a/charts/radius/example/README.md b/charts/radius/example/README.md new file mode 100644 index 0000000..7b23374 --- /dev/null +++ b/charts/radius/example/README.md @@ -0,0 +1,5 @@ +## Generate keys + +For generate keys read this doc https://docs.eigenlayer.xyz/eigenlayer/operator-guides/operator-installation + +> Dont use secret in open way, try to figure out with [vault](https://github.com/hashicorp/vault) / [sealed-secrets](https://github.com/bitnami-labs/sealed-secrets) / [sops](https://github.com/getsops/sops) diff --git a/charts/radius/example/wallet-secret.yaml b/charts/radius/example/wallet-secret.yaml new file mode 100644 index 0000000..bcfac10 --- /dev/null +++ b/charts/radius/example/wallet-secret.yaml @@ -0,0 +1,32 @@ +apiVersion: v1 +stringData: + + ecdsa-private-key: | + + { + "address": "sadflkasmdflkamsldfas;df", + "crypto": { + "cipher": "aes-128-ctr", + "ciphertext": "as;dmflaskmdflasmdlfkmalsdf", + "cipherparams": { + "iv": "lakmdslfkmalsdmflkasdmfl" + }, + "kdf": "scrypt", + "kdfparams": { + "dklen": 123, + "n": 123123, + "p": 12, + "r": 823, + "salt": "daslkfmklasdmfklmasdlkfmlakdsf" + }, + "mac": "alsdkmflkamsdlfkmasldfmlaksdmlf" + }, + "id": "alsdfmlkasmdlfkmasldf", + "version": 3 + } + + ecdsa-private-key-password: anlNASLdnfaljksdnLANSDlnalsdkjnASLKJDNlwnqlo21n3lkASLDndalsd +kind: Secret +metadata: + name: YOURSECREWITHWALLET +type: Opaque diff --git a/charts/radius/templates/_helpers.tpl b/charts/radius/templates/_helpers.tpl new file mode 100644 index 0000000..e3d67c0 --- /dev/null +++ b/charts/radius/templates/_helpers.tpl @@ -0,0 +1,68 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "radius.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "radius.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "radius.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "radius.labels" -}} +helm.sh/chart: {{ include "radius.chart" . }} +{{ include "radius.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{- define "radiusRegister.labels" -}} +helm.sh/chart: {{ include "radius.chart" . }} +{{ include "radiusRegister.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "radius.selectorLabels" -}} +app.kubernetes.io/name: {{ include "radius.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "radiusRegister.selectorLabels" -}} +app.kubernetes.io/name: {{ include "radius.name" . }}-register +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} diff --git a/charts/radius/templates/configmap.tpl b/charts/radius/templates/configmap.tpl new file mode 100644 index 0000000..6612e5c --- /dev/null +++ b/charts/radius/templates/configmap.tpl @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "radius.fullname" . }}-config + labels: + {{- include "radius.labels" . | nindent 4 }} + {{- with .Values.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end}} +data: + {{- if .Values.configs }} + {{- toYaml .Values.configs | nindent 2 }} + {{- end }} diff --git a/charts/radius/templates/ingress.tpl b/charts/radius/templates/ingress.tpl new file mode 100644 index 0000000..bbbd468 --- /dev/null +++ b/charts/radius/templates/ingress.tpl @@ -0,0 +1,28 @@ +{{- if .Values.ingress.enabled -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ include "radius.fullname" . }} + labels: + {{- include "radius.labels" . | nindent 4 }} + {{- with .Values.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end}} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + ingressClassName: nginx + rules: + - host: {{ .Values.ingress.host }} + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: {{ include "radius.fullname" . }} + port: + name: node-api +{{- end }} diff --git a/charts/radius/templates/pvc.tpl b/charts/radius/templates/pvc.tpl new file mode 100644 index 0000000..9dd4677 --- /dev/null +++ b/charts/radius/templates/pvc.tpl @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ include "radius.fullname" . }} + {{- with .Values.pvc.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "radius.labels" . | nindent 4 }} + {{- with .Values.pvc.labels }} + {{- toYaml . | nindent 4 }} + {{- end}} +spec: + storageClassName: {{.Values.pvc.storageClassName }} + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.pvc.size }} diff --git a/charts/radius/templates/register.tpl b/charts/radius/templates/register.tpl new file mode 100644 index 0000000..18a469d --- /dev/null +++ b/charts/radius/templates/register.tpl @@ -0,0 +1,30 @@ +{{- if .Values.register.enabled }} +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ include "radius.fullname" . }}-register-job + labels: + {{- include "radiusRegister.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": "post-install" +spec: + template: + metadata: + labels: + {{- include "radiusRegister.labels" . | nindent 8 }} + spec: + containers: + - name: register + image: "{{ .Values.register.image.repository }}:{{ .Values.register.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.register.image.pullPolicy }} + args: + {{- toYaml .Values.register.args | nindent 12 }} + env: + {{- toYaml .Values.node.env | nindent 12 }} + volumeMounts: + {{- toYaml .Values.node.volumeMounts | nindent 12 }} + restartPolicy: Never + volumes: + {{- toYaml .Values.volumes | nindent 8 }} + backoffLimit: 2 +{{- end }} diff --git a/charts/radius/templates/service.tpl b/charts/radius/templates/service.tpl new file mode 100644 index 0000000..b54b233 --- /dev/null +++ b/charts/radius/templates/service.tpl @@ -0,0 +1,27 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "radius.fullname" . }} + {{- with .Values.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "radius.labels" . | nindent 4 }} + {{- with .Values.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end}} +spec: + type: {{ .Values.service.type }} + ports: + {{- range .Values.service.ports }} + - name: {{ .name }} + port: {{ .port }} + protocol: {{ .protocol }} + targetPort: {{ .targetPort }} + {{- end }} + selector: + {{- with .Values.labels }} + {{- toYaml . | nindent 4 }} + {{- end}} + app: {{ include "radius.fullname" . }} diff --git a/charts/radius/templates/serviceaccount.tpl b/charts/radius/templates/serviceaccount.tpl new file mode 100644 index 0000000..8b2e4fe --- /dev/null +++ b/charts/radius/templates/serviceaccount.tpl @@ -0,0 +1,15 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "radius.fullname" . }} + labels: + {{- include "radius.labels" . | nindent 4 }} + {{- with .Values.labels }} + {{- toYaml . | nindent 4 }} + {{- end}} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} + {{- end }} diff --git a/charts/radius/templates/statefulset.tpl b/charts/radius/templates/statefulset.tpl new file mode 100644 index 0000000..edcd64c --- /dev/null +++ b/charts/radius/templates/statefulset.tpl @@ -0,0 +1,90 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: {{ include "radius.fullname" . }} + labels: + {{- include "radius.labels" . | nindent 4 }} + {{- with .Values.labels }} + {{- toYaml . | nindent 4 }} + {{- end}} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + {{- include "radius.selectorLabels" . | nindent 6 }} + {{- with .Values.labels }} + {{- toYaml . | nindent 6 }} + {{- end}} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + app: {{ include "radius.fullname" . }} + {{- include "radius.selectorLabels" . | nindent 8 }} + {{- with .Values.labels }} + {{- toYaml . | nindent 8 }} + {{- end}} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ .Values.serviceAccount.name | default (include "radius.fullname" .) }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: node + {{- with .Values.node.command }} + command: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.node.args }} + args: + {{- toYaml . | nindent 12 }} + {{- end }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.node.image.repository }}:{{ .Values.node.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.node.image.pullPolicy }} + ports: + {{- toYaml $.Values.node.ports | nindent 10 }} + {{- if .Values.lifecycleHooks }} + lifecycle: + {{- toYaml .Values.node.lifecycleHooks | nindent 12 }} + {{- end }} + {{- if .Values.node.livenessProbe }} + livenessProbe: + {{- toYaml .Values.node.livenessProbe | nindent 12 }} + {{- end }} + {{- if .Values.node.readinessProbe }} + readinessProbe: + {{- toYaml .Values.node.readinessProbe | nindent 12 }} + {{- end }} + resources: + {{- toYaml .Values.node.resources | nindent 12 }} + volumeMounts: + {{- with .Values.node.volumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} + env: + {{- toYaml .Values.node.env | nindent 12 }} + volumes: + {{- with .Values.volumes }} + {{- toYaml . | nindent 8 }} + {{- end }} + + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/radius/templates/vmPodScrape.tpl b/charts/radius/templates/vmPodScrape.tpl new file mode 100644 index 0000000..c94818b --- /dev/null +++ b/charts/radius/templates/vmPodScrape.tpl @@ -0,0 +1,16 @@ +{{- if .Values.vmPodScrape.enabled -}} +apiVersion: operator.victoriametrics.com/v1beta1 +kind: VMPodScrape +metadata: + name: {{ include "radius.fullname" . }} +spec: + selector: + matchLabels: + {{- include "radius.selectorLabels" . | nindent 6 }} + {{- with .Values.labels }} + {{- toYaml . | nindent 6 }} + {{- end}} + podMetricsEndpoints: + - port: metrics + scheme: http +{{- end }} diff --git a/charts/radius/values.holesky.yaml b/charts/radius/values.holesky.yaml new file mode 100644 index 0000000..2d0bc99 --- /dev/null +++ b/charts/radius/values.holesky.yaml @@ -0,0 +1,141 @@ +nameOverride: "" +fullnameOverride: "" + +replicaCount: 1 +labels: {} + +imagePullSecrets: [] +service: + annotations: {} + type: ClusterIP + ports: + - name: node-api + port: 8000 + protocol: TCP + targetPort: 8000 + +ingress: + annotations: {} + enabled: true + host: YOUR_PUBLIC_DOMAIN + +pvc: + size: 150Gi + storageClassName: "oci-bv" + labesl: {} + annotations: {} + +configs: + operator.toml: | + + # Sequencer + database_path = "~/.radius/database/sequencer" + sequencer_rpc_url = "YOUR_PUBLIC_DOMAIN:PORT" # This must be the public IP address of the host machine on which the sequencer container runs. + + # Ethereum + ethereum_rpc_url = "http://127.0.0.1:8545" ## replace with your rpc + ethereum_websocket_url = "ws://127.0.0.1:8545" ## replace with your rpc + signing_key = "YOUR_WALLET_KEY" # Replace the text with the operator private key + + # SSAL + ssal_contract_address = "0x35A562f2B6b83F7840D93386d75Ba76Cc286DcA1" + cluster_id = "0x37b9eb99da89a819891ff2fb21018a965edba5c3998d36d9337b6af61544f1e3" + seeder_rpc_url = "http://52.79.222.106:3000" + # EigenLayer AVS + delegation_manager_contract_address = "0xA44151489861Fe9e3055d95adC98FbD462B948e7" + stake_registry_contract_address = "0x12B6bf07dFA1a62a1521f59bdC65019234884315" + avs_directory_contract_address = "0x055733000064333CaDDbC92763c58BF0192fFeBf" + avs_contract_address = "0xf2dd3971Fb9E1192d3C9834cEe69A4157FE50B23" + +register: + enabled: false + image: + repository: theradius/loggia + pullPolicy: Always + tag: ~ + args: + - register ## not used right now + +node: + volumeMounts: + - name: radius + mountPath: ~/.radius/database + - name: config + mountPath: ~/config.toml + subPath: config.toml + + + image: + repository: theradius/loggia + pullPolicy: Always + tag: ~ + ports: + - name: node-api + containerPort: 8000 + protocol: TCP + resources: {} + # limits: + # cpu: 4 + # memory: 16Gi + # requests: + # cpu: 2 + # memory: 8Gi + env: [] + args: [] + readinessProbe: + httpGet: + path: / + port: 8000 + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 3 + failureThreshold: 3 + successThreshold: 1 + # livenessProbe: + # httpGet: + # path: /metrics + # port: 9090 + # initialDelaySeconds: 1200 + # periodSeconds: 30 + # timeoutSeconds: 3 + # failureThreshold: 2 + # successThreshold: 1 + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + podAnnotations: {} + + podSecurityContext: {} + # fsGroup: 2000 + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + # +volumes: + - name: config + configMap: + name: radius-config + - name: radius + persistentVolumeClaim: + claimName: radius + +vmPodScrape: + enabled: false diff --git a/charts/radius/values.schema.json b/charts/radius/values.schema.json new file mode 100644 index 0000000..f510757 --- /dev/null +++ b/charts/radius/values.schema.json @@ -0,0 +1,287 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "properties": { + "affinity": { + "properties": {}, + "type": "object" + }, + "configs": { + "properties": { + "config.toml": { + "type": "string" + } + }, + "type": "object" + }, + "fullnameOverride": { + "type": "string" + }, + "imagePullSecrets": { + "type": "array" + }, + "ingress": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "enabled": { + "type": "boolean" + }, + "host": { + "type": "string" + } + }, + "type": "object" + }, + "labels": { + "properties": {}, + "type": "object" + }, + "nameOverride": { + "type": "string" + }, + "node": { + "properties": { + "args": { + "type": "array" + }, + "env": { + "type": "array" + }, + "image": { + "properties": { + "pullPolicy": { + "type": "string" + }, + "repository": { + "type": "string" + }, + "tag": { + "type": "string" + } + }, + "type": "object" + }, + "livenessProbe": { + "properties": { + "initialDelaySeconds": { + "type": "integer" + }, + "periodSeconds": { + "type": "integer" + }, + "tcpSocket": { + "properties": { + "port": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "ports": { + "items": { + "properties": { + "containerPort": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "protocol": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "readinessProbe": { + "properties": { + "initialDelaySeconds": { + "type": "integer" + }, + "periodSeconds": { + "type": "integer" + }, + "tcpSocket": { + "properties": { + "port": { + "type": "integer" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "resources": { + "properties": {}, + "type": "object" + }, + "volumeMounts": { + "items": { + "properties": { + "mountPath": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "nodeSelector": { + "properties": {}, + "type": "object" + }, + "pvc": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "labesl": { + "properties": {}, + "type": "object" + }, + "size": { + "type": "string" + }, + "storageClassName": { + "type": "string" + } + }, + "type": "object" + }, + "register": { + "properties": { + "args": { + "items": { + "type": "string" + }, + "type": "array" + }, + "enabled": { + "type": "boolean" + }, + "image": { + "properties": { + "pullPolicy": { + "type": "string" + }, + "repository": { + "type": "string" + }, + "tag": { + "type": "string" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "replicaCount": { + "type": "integer" + }, + "service": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "ports": { + "items": { + "properties": { + "name": { + "type": "string" + }, + "port": { + "type": "integer" + }, + "protocol": { + "type": "string" + }, + "targetPort": { + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "serviceAccount": { + "properties": { + "annotations": { + "properties": {}, + "type": "object" + }, + "create": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "podAnnotations": { + "properties": {}, + "type": "object" + }, + "podSecurityContext": { + "properties": {}, + "type": "object" + }, + "securityContext": { + "properties": {}, + "type": "object" + } + }, + "type": "object" + }, + "tolerations": { + "type": "array" + }, + "vmPodScrape": { + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "volumes": { + "items": { + "properties": { + "configMap": { + "properties": { + "name": { + "type": "string" + } + }, + "type": "object" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + } + }, + "type": "object" +} diff --git a/charts/radius/values.yaml b/charts/radius/values.yaml new file mode 100644 index 0000000..e1c77b4 --- /dev/null +++ b/charts/radius/values.yaml @@ -0,0 +1,133 @@ +nameOverride: "" +fullnameOverride: "" + +replicaCount: 1 +labels: {} + +imagePullSecrets: [] +service: + annotations: {} + type: ClusterIP + ports: + - name: node-api + port: 80 + protocol: TCP + targetPort: 80 + +ingress: + annotations: {} + enabled: false + host: YOUR_PUBLIC_DOMAIN + +pvc: + size: 150Gi + storageClassName: "oci-bv" + labesl: {} + annotations: {} + +configs: + config.toml: | + + # Sequencer + database_path = "/home/.radius/database/sequencer" + sequencer_rpc_url = "http://YOUR_PUBLIC_DOMAIN" # This must be the public IP address of the host machine on which the sequencer container runs. + + # Ethereum + ethereum_rpc_url = "http://127.0.0.1:8545" ## replace with your rpc + ethereum_websocket_url = "ws://127.0.0.1:8545" ## replace with your rpc + signing_key = "YOUR_WALLET_KEY" # Replace the text with the operator private key + + # SSAL + ssal_contract_address = "0x67d269191c92Caf3cD7723F116c85e6E9bf55933" + cluster_id = "0x38a941d2d4959baae54ba9c14502abe54ffd4ad0db290295f453ef9d7d5a3f2d" + seeder_rpc_url = "http://127.0.0.1:3000" + + # EigenLayer AVS + delegation_manager_contract_address = "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9" + stake_registry_contract_address = "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9" + avs_directory_contract_address = "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707" + avs_contract_address = "0x9E545E3C0baAB3E08CdfD552C960A1050f373042" + +register: + enabled: false + image: + repository: theradius/loggia + pullPolicy: Always + tag: "" + args: + - register + +node: + volumeMounts: + - name: radius + mountPath: /home/.radius/database + - name: config + mountPath: /home/config.toml + subPath: config.toml + + + image: + repository: theradius/loggia + pullPolicy: Always + tag: "" + ports: + - name: node-api + containerPort: 80 + protocol: TCP + resources: {} + # limits: + # cpu: 4 + # memory: 16Gi + # requests: + # cpu: 2 + # memory: 8Gi + env: [] + args: [] + readinessProbe: + tcpSocket: + port: 80 + initialDelaySeconds: 15 + periodSeconds: 10 + livenessProbe: + tcpSocket: + port: 80 + initialDelaySeconds: 15 + periodSeconds: 10 +nodeSelector: {} + +tolerations: [] + +affinity: {} + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + podAnnotations: {} + + podSecurityContext: {} + # fsGroup: 2000 + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + # +volumes: + - name: config + configMap: + name: radius-config + - name: radius + persistentVolumeClaim: + claimName: radius + +vmPodScrape: + enabled: false