deploy: declare the fleet, one values file per service (#34)

156 services, generated from what is RUNNING on lux-k8s — not from k8s/, whose
manifests were applied by hand over a long period and whose currency is unknown.
Some are ahead of the cluster, some behind, some describe things long deleted.
The running fleet is the only statement of what is true, so it is what was read;
the disagreement between k8s/ and deploy/ is a drift audit waiting to happen
rather than something to paper over.

Each file is values for ONE shared chart, pulled by version from
oci://oci.hanzo.ai/charts/app:0.1.0. Referenced, never vendored — a copy per
repository is how two fleets end up with two definitions of the same thing and
neither one is wrong.

The inventory IS the directory: deploy/<namespace>/<name>.yaml. Adding a service
is adding a file, and there is no second list to keep in step with it.

Verified against live before committing: every rendered object was diffed
against the object actually running, and **BREAKING = 0** — every workload here
can be adopted in place rather than recreated. That was not true an hour ago.
134 of these select on `app:` or `k8s-app:` rather than the chart's own labels,
and spec.selector is immutable, so adopting them was impossible until the chart
learned to state the selector a workload already carries. Each file records its
own; it is the selector only, and the standard label set still lands on metadata.

Not here, on purpose: chain CRs (LuxChain, LuxNetwork, LuxIndexer, LuxGateway,
LuxMPC) are not services and have their own controllers. Secrets are not here
and never will be — the chart cannot carry a secret value at all, only a KMS
path. The placeholder Secret manifests in k8s/ that read CHANGE_ME_VIA_KMS are
the older pattern and want to become KMSSecret resources.

applicationset.yaml is ready but NOT applied: this cluster runs no CD today,
which is why k8s/ drifted in the first place. It deliberately carries no
`automated` block — the chart adds labels to the pod template, a pod template
change is a rollout, and switching sync on would restart all 156 at once.
Services move over one at a time, each gated by hack/diff-live.py.

Co-authored-by: hanzo-dev <[email protected]>
This commit is contained in:
z
2026-07-28 16:59:28 -07:00
committed by GitHub
co-authored by hanzo-dev
parent a05508a5ad
commit 78205412d4
158 changed files with 10621 additions and 0 deletions
+83
View File
@@ -0,0 +1,83 @@
# deploy — the fleet, declared
Every service in this cluster is one values file:
```
deploy/<namespace>/<name>.yaml
```
That is the whole inventory. Adding a service is adding a file; there is no
second list to keep in step with it.
Each file is values for **one shared chart**, pulled by version:
```
oci://oci.hanzo.ai/charts/app:0.1.0
```
The chart is referenced, never copied. A copy per repository is how two fleets
end up with two definitions of the same thing and neither one is wrong.
```sh
helm template <name> oci://oci.hanzo.ai/charts/app --version 0.1.0 \
-n <namespace> -f deploy/<namespace>/<name>.yaml
```
## These files were generated from what is RUNNING
Not from the manifests in `k8s/`. Those were applied by hand over a long period
and their currency is unknown — some are ahead of the cluster, some behind, some
describe things that were deleted. The running fleet is the only statement of
what is true, so it is what was read.
That makes `k8s/` and `deploy/` disagree on purpose. The disagreement is a drift
audit waiting to be done, not a bug to paper over.
## Verifying, before changing anything
```sh
# regenerate from live
python3 <universe>/charts/app/hack/live2values.py --context <ctx> --out deploy
# render every file and diff it against the live object
python3 <universe>/charts/app/hack/diff-live.py --context <ctx> --values deploy
```
The gate grades what it finds:
- **BREAKING** — the apiserver would refuse the apply. Only a workload's
`spec.selector` qualifies; it is immutable.
- **DRIFT** — live differs from the file. Someone changed one of them.
- **BENIGN** — an intended consequence of moving to the chart.
Current state for this cluster: **BREAKING = 0**. Every workload here can be
adopted in place.
## selectorLabels — why most files have one
`spec.selector` cannot be changed after a workload is created. Most services here
select on `app: <name>`, not the chart's `app.kubernetes.io/name` + `instance`,
so each file records the selector its workload already carries. Without that the
chart would emit its own, and the apply would be refused.
It is the selector only — the full label set on metadata is still the chart's, so
an adopted workload gains the standard labels for everything that reads them
without selecting on them.
## What is NOT here
Chain CRs (`LuxChain`, `LuxNetwork`, `LuxIndexer`, `LuxGateway`, `LuxMPC`) are
not services and have their own controllers. They stay in `k8s/`.
Secrets are not here and never will be. The chart has no way to carry a secret
value: `kmsSecrets` names a path in KMS and the operator syncs it. The
placeholder `Secret` manifests in `k8s/` that say `CHANGE_ME_VIA_KMS` are the
older pattern and should become `KMSSecret` resources.
## Deploying
There is no CD in this repository yet, which is why `k8s/` drifted in the first
place. `applicationset.yaml` here is ready to apply once this cluster runs one.
It deliberately has **no `automated` block**: the chart adds labels to the pod
template, and a pod template change is a rollout, so switching it on would
restart the whole fleet at once. Services move over one at a time.
@@ -0,0 +1,62 @@
# Generated from the live app-lux-finance/app-lux-finance Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: app-lux-finance
containerName: app
image:
repository: ghcr.io/luxfi/finance
tag: 1.0.3-amd64
pullPolicy: IfNotPresent
partOf: lux-finance
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources:
limits:
memory: 128Mi
requests:
cpu: 50m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-pull
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- app.lux.finance
tls: true
className: ingress
+61
View File
@@ -0,0 +1,61 @@
# Generated from the live app-lux-market/app-lux-market Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: app-lux-market
containerName: app
image:
repository: ghcr.io/luxfi/market
tag: 1.0.31-amd64
pullPolicy: IfNotPresent
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources:
limits:
cpu: 250m
memory: 128Mi
requests:
cpu: 25m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
servicePort: 80
imagePullSecrets:
- name: ghcr-pull
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- app.lux.market
tls: true
className: ingress
+57
View File
@@ -0,0 +1,57 @@
# The fleet, as Applications — one per values file, generated from one inventory.
#
# THE INVENTORY IS THE DIRECTORY. deploy/<namespace>/<name>.yaml generates the
# Application <name> into <namespace>. There is no list to keep in step with the
# files, and adding a service is adding a file.
#
# The chart is PULLED BY VERSION from a registry, not vendored here. One chart
# serves every cluster; a copy per repository is how two fleets end up with two
# definitions of the same thing.
#
# NO `automated` BLOCK, deliberately. The chart adds labels to the pod template,
# and a pod template change IS a rollout — switching sync on would restart the
# whole Lux fleet at once. Services move over one at a time, each verified
# with hack/diff-live.py first.
#
# Apply once this cluster runs a CD instance. It has none today, which is why
# the manifests in k8s/ drifted from what is running.
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: fleet
namespace: cd
spec:
goTemplate: true
goTemplateOptions: ["missingkey=error"]
generators:
- git:
repoURL: https://github.com/luxfi/universe
revision: main
files:
- path: deploy/*/*.yaml
template:
metadata:
name: '{{ .path.filename | trimSuffix ".yaml" }}'
spec:
project: default
sources:
- repoURL: oci.hanzo.ai/charts
chart: app
targetRevision: 0.1.0
helm:
releaseName: '{{ .path.filename | trimSuffix ".yaml" }}'
valueFiles:
- '$values/deploy/{{ .path.basename }}/{{ .path.filename }}'
- repoURL: https://github.com/luxfi/universe
targetRevision: main
ref: values
destination:
server: https://kubernetes.default.svc
# The directory holding the values file IS the namespace.
namespace: '{{ .path.basename }}'
syncPolicy:
syncOptions:
# The fleet was applied server-side, so live objects carry no
# last-applied annotation; a client-side diff would report every
# field of every object as changed.
- ServerSideApply=true
@@ -0,0 +1,41 @@
# Generated from the live cert-manager/cert-manager-cainjector Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app.kubernetes.io/component: cainjector
app.kubernetes.io/instance: cert-manager
app.kubernetes.io/name: cainjector
image:
repository: quay.io/jetstack/cert-manager-cainjector
tag: v1.13.3
pullPolicy: IfNotPresent
component: cainjector
args:
- --v=2
- --leader-election-namespace=kube-system
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
resources: {}
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
nodeSelector:
kubernetes.io/os: linux
serviceAccountName: cert-manager-cainjector
enableServiceLinks: false
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
imagePullSecrets: []
@@ -0,0 +1,72 @@
# Generated from the live cert-manager/cert-manager-webhook Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app.kubernetes.io/component: webhook
app.kubernetes.io/instance: cert-manager
app.kubernetes.io/name: webhook
image:
repository: quay.io/jetstack/cert-manager-webhook
tag: v1.13.3
pullPolicy: IfNotPresent
component: webhook
args:
- --v=2
- --secure-port=10250
- --dynamic-serving-ca-secret-namespace=$(POD_NAMESPACE)
- --dynamic-serving-ca-secret-name=cert-manager-webhook-ca
- --dynamic-serving-dns-names=cert-manager-webhook
- --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE)
- --dynamic-serving-dns-names=cert-manager-webhook.$(POD_NAMESPACE).svc
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
resources: {}
livenessProbe:
failureThreshold: 3
httpGet:
path: /livez
port: 6080
scheme: HTTP
initialDelaySeconds: 60
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 6080
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 1
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
ports:
- containerPort: 10250
name: https
servicePort: 443
targetPort: https
- containerPort: 6080
name: healthcheck
nodeSelector:
kubernetes.io/os: linux
serviceAccountName: cert-manager-webhook
enableServiceLinks: false
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+50
View File
@@ -0,0 +1,50 @@
# Generated from the live cert-manager/cert-manager Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: cert-manager
app.kubernetes.io/name: cert-manager
containerName: cert-manager-controller
image:
repository: quay.io/jetstack/cert-manager-controller
tag: v1.13.3
pullPolicy: IfNotPresent
component: controller
args:
- --v=2
- --cluster-resource-namespace=$(POD_NAMESPACE)
- --leader-election-namespace=kube-system
- --acme-http01-solver-image=quay.io/jetstack/cert-manager-acmesolver:v1.13.3
- --max-concurrent-challenges=60
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
resources: {}
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
ports:
- containerPort: 9402
name: tcp-prometheus-servicemonitor
- containerPort: 9403
name: http-healthz
nodeSelector:
kubernetes.io/os: linux
serviceAccountName: cert-manager
enableServiceLinks: false
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
imagePullSecrets: []
@@ -0,0 +1,70 @@
# Generated from the live hanzo-operator-system/hanzo-operator-controller-manager Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app.kubernetes.io/name: hanzo-operator
control-plane: controller-manager
containerName: manager
image:
repository: ghcr.io/hanzoai/operator
tag: sha-81a43b0
pullPolicy: Always
partOf: hanzo-universe
component: hanzo-operator
labels:
control-plane: controller-manager
command:
- /hanzo-operator
args:
- --leader-elect
- --health-probe-bind-address=:8081
- --metrics-bind-address=:8443
- --metrics-secure=true
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 10m
memory: 64Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 8081
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /readyz
port: 8081
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
ports:
- containerPort: 8081
name: health
- containerPort: 8443
name: metrics
serviceAccountName: hanzo-operator-controller-manager
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 10
imagePullSecrets: []
+80
View File
@@ -0,0 +1,80 @@
# Generated from the live hanzo-zt/lux-zt-router Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app.kubernetes.io/name: lux-zt-router
containerName: router
image:
repository: ghcr.io/hanzozt/zt-router
tag: 1.7.2
pullPolicy: IfNotPresent
partOf: hanzo-zt
component: router
command:
- ziti
- router
- run
- /persistent/config.yml
env:
- name: VERBOSE
value: '1'
resources:
limits:
cpu: 250m
memory: 256Mi
requests:
cpu: 50m
memory: 128Mi
volumeMounts:
- mountPath: /persistent
name: data
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 30
periodSeconds: 30
successThreshold: 1
tcpSocket:
port: edge
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: edge
timeoutSeconds: 1
ports:
- containerPort: 3022
name: edge
- containerPort: 10080
name: transport
volumes:
- name: identity
secret:
secretName: lux-zt-router-identity
- name: data
initContainers:
- command:
- sh
- -c
- cp /identity/* /persistent/ && chmod 644 /persistent/*
image: busybox:1.36
imagePullPolicy: IfNotPresent
name: copy-identity
volumeMounts:
- mountPath: /identity
name: identity
readOnly: true
- mountPath: /persistent
name: data
imagePullSecrets:
- name: ghcr-hanzozt
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+111
View File
@@ -0,0 +1,111 @@
# Generated from the live hanzo/cloud Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: cloud
image:
repository: ghcr.io/hanzoai/cloud
tag: v1.801.210
pullPolicy: IfNotPresent
partOf: lux-cloud
env:
- name: CLOUD_LISTEN
value: :8000
- name: CLOUD_HEALTH_LISTEN
value: :9090
- name: CLOUD_DATA_DIR
value: /var/lib/cloud
- name: RUNNING_IN_DOCKER
value: 'true'
- name: IAM_URL
value: https://lux.id
- name: IAM_ISSUER
value: https://lux.id
- name: CLOUD_IAM_ISSUER
value: https://lux.id
- name: AUTH_ISSUER
value: https://lux.id
- name: JWT_ISSUER
value: https://lux.id
- name: JWKS_URL
value: https://lux.id/v1/iam/.well-known/jwks
- name: IAM_KEYS_URL
value: https://lux.id/v1/iam/.well-known/jwks
- name: CLOUD_KMS_MASTER_KEY_REF
valueFrom:
secretKeyRef:
key: MASTER_KEY_B64
name: cloud-kms-master-key
- name: IAM_AUDIENCE
value: lux-cloud
- name: GATEWAY_ALLOWED_AUDIENCES
value: lux-cloud,lux-console,lux-id,https://api.lux.cloud
- name: AUTH_PUBLIC_PATHS
value: /healthz,/readyz,/__stats,/.well-known/,/favicon
- name: CLOUD_SITES_APEX
value: lux.link
- name: CLOUD_SITES_SELF_DOMAINS
value: lux.link,lux.network,lux.cloud,lux.id
- name: CLOUD_SITES_FIRSTPARTY_APEX
value: lux.network
- name: CLOUD_SITES_FIRSTPARTY
- name: CLOUD_SITES_FIRSTPARTY_ORG
value: lux
- name: driverName
value: sqlite
- name: dbName
value: hanzo_cloud
- name: modelConfigPath
value: /conf/models.yaml
- name: TIKTOKEN_CACHE_DIR
value: /var/lib/cloud/tiktoken
resources:
limits:
cpu: '2'
memory: 2Gi
requests:
cpu: 500m
memory: 1Gi
volumeMounts:
- mountPath: /var/lib/cloud
name: cloud-data
- mountPath: /data/cloud
name: cloud-data
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 9090
scheme: HTTP
initialDelaySeconds: 20
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 3
httpGet:
path: /readyz
port: 9090
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
ports:
- containerPort: 8000
name: http
- containerPort: 9090
name: ops
volumes:
- name: cloud-data
persistentVolumeClaim:
claimName: cloud-data
imagePullSecrets:
- name: ghcr-secret
fsGroup: 1000
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+33
View File
@@ -0,0 +1,33 @@
# Generated from the live hanzo/commerce-admin Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: commerce-admin
containerName: admin
image:
repository: ghcr.io/hanzoai/commerce-admin
digest: sha256:4cca2b4ff528f97037e9bb22f664f00a80fb424570ccdd869ec07002cbce727e
pullPolicy: Always
resources:
limits:
cpu: 200m
memory: 128Mi
requests:
cpu: 50m
memory: 64Mi
ports:
- containerPort: 80
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
imagePullSecrets: []
ingress:
enabled: true
hosts:
- admin.commerce.hanzo.ai
tls: true
className: hanzo
+33
View File
@@ -0,0 +1,33 @@
# Generated from the live hanzo/commerce-site Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: commerce-site
containerName: site
image:
repository: ghcr.io/hanzoai/commerce-site
digest: sha256:17de0b0c143aeeda101215bdbb10c4b32098f033943e1683ffa4e590bb6f75cc
pullPolicy: Always
resources:
limits:
cpu: 200m
memory: 128Mi
requests:
cpu: 50m
memory: 64Mi
ports:
- containerPort: 80
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
imagePullSecrets: []
ingress:
enabled: true
hosts:
- commerce.hanzo.ai
tls: true
className: hanzo
+324
View File
@@ -0,0 +1,324 @@
# Generated from the live hanzo/console Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: console
image:
repository: ghcr.io/hanzoai/console
tag: v8.5.22
pullPolicy: Always
partOf: hanzo-universe
env:
- name: NEXT_PUBLIC_ANALYTICS_SITE_ID
value: 7dce54ee-41f6-4751-96bf-fe005067c7c7
- name: NEXT_PUBLIC_ANALYTICS_URL
value: https://analytics.hanzo.ai/script.js
- name: NODE_ENV
value: production
- name: PORT
value: '4000'
- name: NEXTAUTH_URL
value: https://console.lux.cloud
- name: NEXTAUTH_SECRET
valueFrom:
secretKeyRef:
key: NEXTAUTH_SECRET
name: console-secrets
- name: SALT
valueFrom:
secretKeyRef:
key: SALT
name: console-secrets
- name: ENCRYPTION_KEY
valueFrom:
secretKeyRef:
key: ENCRYPTION_KEY
name: console-secrets
- name: AUTH_DISABLE_USERNAME_PASSWORD
value: 'true'
- name: AUTH_DISABLE_SIGNUP
value: 'false'
- name: IAM_URL
value: https://lux.id
- name: IAM_CLIENT_ID
valueFrom:
secretKeyRef:
key: IAM_CLIENT_ID
name: console-secrets
- name: IAM_CLIENT_ID
valueFrom:
secretKeyRef:
key: IAM_CLIENT_ID
name: console-secrets
- name: IAM_CLIENT_SECRET
valueFrom:
secretKeyRef:
key: IAM_CLIENT_SECRET
name: console-secrets
- name: IAM_CLIENT_SECRET
valueFrom:
secretKeyRef:
key: IAM_CLIENT_SECRET
name: console-secrets
- name: IAM_ORG
value: hanzo
- name: IAM_APP
value: app-console
- name: IAM_SERVER_URL
value: https://lux.id
- name: IAM_ORG_NAME
value: hanzo
- name: IAM_APP_NAME
value: app-console
- name: IAM_ALLOW_ACCOUNT_LINKING
value: 'true'
- name: HANZO_INIT_ORG_IDS
value: hanzo,lux,zoo,pars
- name: HANZO_INIT_ORG_NAMES
value: Hanzo,Lux,Zoo,Pars
- name: HANZO_INIT_USER_EMAIL
value: [email protected]
- name: HANZO_INIT_ORG_OWNERS
value: [email protected]:lux,[email protected]:zoo,[email protected]:pars,[email protected]:pars,[email protected]:pars
- name: DATABASE_URL
value: file:/data/console.db
- name: REDIS_CONNECTION_STRING
valueFrom:
secretKeyRef:
key: REDIS_CONNECTION_STRING
name: console-secrets
- name: DATASTORE_URL
valueFrom:
secretKeyRef:
key: DATASTORE_URL
name: console-secrets
- name: DATASTORE_USER
valueFrom:
secretKeyRef:
key: DATASTORE_USER
name: console-secrets
- name: DATASTORE_PASSWORD
valueFrom:
secretKeyRef:
key: DATASTORE_PASSWORD
name: console-secrets
- name: DATASTORE_MIGRATION_URL
valueFrom:
secretKeyRef:
key: DATASTORE_MIGRATION_URL
name: console-secrets
- name: DATASTORE_DB
value: console
- name: DATASTORE_CLUSTER_ENABLED
valueFrom:
secretKeyRef:
key: DATASTORE_CLUSTER_ENABLED
name: console-secrets
optional: true
- name: DATASTORE_AUTO_MIGRATION_DISABLED
value: 'true'
- name: CLICKHOUSE_URL
valueFrom:
secretKeyRef:
key: DATASTORE_URL
name: console-secrets
- name: CLICKHOUSE_USER
valueFrom:
secretKeyRef:
key: DATASTORE_USER
name: console-secrets
- name: CLICKHOUSE_PASSWORD
valueFrom:
secretKeyRef:
key: DATASTORE_PASSWORD
name: console-secrets
- name: CLICKHOUSE_MIGRATION_URL
valueFrom:
secretKeyRef:
key: DATASTORE_MIGRATION_URL
name: console-secrets
- name: CLICKHOUSE_DB
value: console
- name: S3_EVENT_UPLOAD_BUCKET
value: hanzo-events
- name: S3_EVENT_UPLOAD_ENDPOINT
value: http://s3:9000
- name: S3_EVENT_UPLOAD_REGION
value: us-east-1
- name: S3_EVENT_UPLOAD_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
key: HANZO_S3_EVENT_UPLOAD_ACCESS_KEY_ID
name: console-secrets
- name: S3_EVENT_UPLOAD_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
key: HANZO_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY
name: console-secrets
- name: S3_EVENT_UPLOAD_FORCE_PATH_STYLE
value: 'true'
- name: S3_MEDIA_UPLOAD_ENDPOINT
value: http://s3:9000
- name: S3_MEDIA_UPLOAD_REGION
value: us-east-1
- name: S3_MEDIA_UPLOAD_BUCKET
value: hanzo-media
- name: S3_MEDIA_UPLOAD_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
key: HANZO_S3_MEDIA_UPLOAD_ACCESS_KEY_ID
name: console-secrets
- name: S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
key: HANZO_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY
name: console-secrets
- name: S3_MEDIA_UPLOAD_FORCE_PATH_STYLE
value: 'true'
- name: CASVISOR_API_URL
value: http://visor:19000
- name: KMS_API_URL
value: https://kms.hanzo.ai
- name: KMS_PROJECT_ID
value: 2928fb55-6b08-454a-a338-a48d99a699a4
- name: KMS_CLIENT_ID
valueFrom:
secretKeyRef:
key: KMS_CLIENT_ID
name: kms-console-credentials
- name: KMS_CLIENT_SECRET
valueFrom:
secretKeyRef:
key: KMS_CLIENT_SECRET
name: kms-console-credentials
- name: KMS_SERVICE_TOKEN
valueFrom:
secretKeyRef:
key: KMS_SERVICE_TOKEN
name: kms-console-credentials
optional: true
- name: COMMERCE_API_URL
value: http://commerce.hanzo.svc:8001
- name: COMMERCE_SERVICE_TOKEN
valueFrom:
secretKeyRef:
key: COMMERCE_TOKEN
name: console-secrets
optional: true
- name: AGENTS_API_URL
value: http://agents:8080/api
- name: NEXT_PUBLIC_HANZO_CLOUD_REGION
value: US
- name: NEXT_TELEMETRY_DISABLED
value: '1'
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://otel-collector.hanzo.svc:4318
- name: OTEL_EXPORTER_OTLP_PROTOCOL
value: http/protobuf
- name: OTEL_SERVICE_NAME
value: console
- name: OTEL_RESOURCE_ATTRIBUTES
value: service.namespace=hanzo,deployment.environment=production
- name: OTEL_TRACE_SAMPLING_RATIO
value: '0.1'
- name: INSIGHTS_HOST
value: http://insights-capture.hanzo.svc:3000
- name: INSIGHTS_API_KEY
valueFrom:
secretKeyRef:
key: API_KEY
name: insights-client-secrets
optional: true
- name: NEXT_PUBLIC_INSIGHTS_KEY
valueFrom:
secretKeyRef:
key: INSIGHTS_KEY
name: insights-client-secrets
optional: true
- name: NEXT_PUBLIC_INSIGHTS_HOST
value: https://insights.hanzo.ai
- name: ANALYTICS_API_URL
value: http://analytics.hanzo.svc:3000
- name: ANALYTICS_SERVICE_TOKEN
valueFrom:
secretKeyRef:
key: ANALYTICS_SERVICE_TOKEN
name: console-secrets
optional: true
- name: INSIGHTS_API_URL
value: http://insights-web.hanzo.svc:8000
- name: INSIGHTS_SERVICE_TOKEN
valueFrom:
secretKeyRef:
key: INSIGHTS_SERVICE_TOKEN
name: console-secrets
optional: true
- name: NEXT_PUBLIC_HANZO_RUN_NEXT_INIT
value: 'false'
resources:
limits:
cpu: '1'
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
volumeMounts:
- mountPath: /data
name: data
livenessProbe:
failureThreshold: 6
httpGet:
path: /api/public/ready
port: 3001
scheme: HTTP
initialDelaySeconds: 300
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /api/public/ready
port: http
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 5
startupProbe:
failureThreshold: 60
httpGet:
path: /api/public/ready
port: 4000
scheme: HTTP
initialDelaySeconds: 20
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
runAsUser: 1001
ports:
- containerPort: 4000
name: http
servicePort: 80
volumes:
- name: data
persistentVolumeClaim:
claimName: console-data
imagePullSecrets:
- name: ghcr-secret
fsGroup: 1001
strategy: Recreate
topologySpread:
enabled: false
lifecycle:
preStop:
exec:
command:
- sh
- -c
- sleep 15
terminationGracePeriodSeconds: 45
+76
View File
@@ -0,0 +1,76 @@
# Generated from the live hanzo/hanzo-login Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: hanzo-login
image:
repository: ghcr.io/hanzoai/login
tag: 1.1.6
pullPolicy: Always
partOf: hanzo-universe
env:
- name: IAM_ORIGIN
value: https://iam.hanzo.ai
- name: NEXT_PUBLIC_IAM_URL
value: https://iam.hanzo.ai
- name: NEXT_PUBLIC_ORG
value: hanzo
- name: NEXT_PUBLIC_CLIENT_ID
value: app-hanzo
- name: NEXT_PUBLIC_ANALYTICS_URL
value: https://analytics.hanzo.ai/script.js
- name: NEXT_PUBLIC_ANALYTICS_SITE_ID
value: 9c0befac-aba7-4dcb-b350-c348f7a89b01
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 50m
memory: 128Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /login
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /login
port: 3000
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
ports:
- containerPort: 3000
servicePort: 80
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- id.pars.network
- id.lux-dev.network
- id.lux-test.network
- id.hanzo.network
- id.hanzo-dev.network
- id.hanzo-test.network
- id.zoo-dev.network
- id.zoo-test.network
tls: true
className: ingress
+150
View File
@@ -0,0 +1,150 @@
# Generated from the live hanzo/iam Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: iam
image:
repository: ghcr.io/hanzoai/iam
tag: 1.14.23
pullPolicy: Always
partOf: hanzo-universe
component: iam
env:
- name: GOOGLE_CLIENT_ID
valueFrom:
secretKeyRef:
key: GOOGLE_CLIENT_ID
name: iam-provider-creds
optional: true
- name: GOOGLE_CLIENT_SECRET
valueFrom:
secretKeyRef:
key: GOOGLE_CLIENT_SECRET
name: iam-provider-creds
optional: true
- name: GITHUB_CLIENT_ID
valueFrom:
secretKeyRef:
key: GITHUB_CLIENT_ID
name: iam-provider-creds
optional: true
- name: GITHUB_CLIENT_SECRET
valueFrom:
secretKeyRef:
key: GITHUB_CLIENT_SECRET
name: iam-provider-creds
optional: true
- name: GOMEMLIMIT
value: 3750MiB
- name: GOMAXPROCS
value: '2'
- name: REGISTRY_SIGNING_KEY_FILE
value: /etc/registry-signing/signing.key
- name: redisEndpoint
value: hanzo-kv:6379
- name: INSIGHTS_HOST
value: http://insights-capture.hanzo.svc:3000
- name: INSIGHTS_API_KEY
valueFrom:
secretKeyRef:
key: API_KEY
name: insights-client-secrets
optional: true
- name: IAM_DATABASE_URL
value: user=hanzo password=hanzo-pg-secret-6fcc8aeb host=sql-0.sql.hanzo.svc.cluster.local port=5432 dbname=iam sslmode=disable
resources:
limits:
cpu: '2'
memory: 4Gi
requests:
cpu: 200m
memory: 1Gi
volumeMounts:
- mountPath: /data/iam
name: iam-data
- mountPath: /etc/registry-signing
name: registry-signing-key
readOnly: true
- mountPath: /etc/kms/auth
name: kms-auth
readOnly: true
- mountPath: /etc/iam-init-data
name: init-data
readOnly: true
- mountPath: /conf
name: iam-conf
readOnly: true
livenessProbe:
failureThreshold: 5
httpGet:
path: /api/health
port: 8000
scheme: HTTP
initialDelaySeconds: 60
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 3
httpGet:
path: /api/health
port: 8000
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
ports:
- containerPort: 8000
name: http
servicePort: 80
volumes:
- name: iam-data
- name: registry-signing-key
secret:
items:
- key: SIGNING_KEY
path: signing.key
secretName: registry-signing-key
- name: kms-auth
secret:
items:
- key: CLIENTID
path: clientId
optional: true
secretName: iam-kms-auth
- configMap:
name: iam-init-data
name: init-data
- configMap:
items:
- key: app.prod.conf
path: app.conf
name: iam-conf
name: iam-conf
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- iam
topologyKey: kubernetes.io/hostname
weight: 100
fsGroup: 1000
strategy: Recreate
topologySpread:
enabled: false
lifecycle:
preStop:
exec:
command:
- sh
- -c
- sleep 5
terminationGracePeriodSeconds: 45
imagePullSecrets: []
+50
View File
@@ -0,0 +1,50 @@
# Generated from the live hanzo/lux-admin Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: lux-admin
image:
repository: registry.digitalocean.com/hanzo/lux-admin
tag: 0.1.0
pullPolicy: IfNotPresent
resources:
limits:
cpu: 250m
memory: 256Mi
requests:
cpu: 25m
memory: 64Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3100
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3100
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3100
name: http
servicePort: 80
imagePullSecrets:
- name: docr-pull
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+62
View File
@@ -0,0 +1,62 @@
# Generated from the live hanzo/lux-bitcoin Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: lux-bitcoin
containerName: spa
image:
repository: ghcr.io/luxfi/lux-bitcoin
tag: v2.0.0
pullPolicy: Always
partOf: lux-bitcoin
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources:
limits:
memory: 128Mi
requests:
cpu: 50m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- bitcoin.lux.network
tls: true
className: ingress
+62
View File
@@ -0,0 +1,62 @@
# Generated from the live hanzo/lux-blog Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: lux-blog
containerName: spa
image:
repository: ghcr.io/luxfi/blog
digest: sha256:972764b37d73bd81cbce4301457890580cf42c969258d31bd7b6d4d7a7b7e18e
pullPolicy: Always
partOf: lux-blog
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources:
limits:
memory: 128Mi
requests:
cpu: 50m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- blog.lux.network
tls: true
className: ingress
+62
View File
@@ -0,0 +1,62 @@
# Generated from the live hanzo/lux-coin Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: lux-coin
containerName: spa
image:
repository: ghcr.io/luxfi/lux-coin
tag: v2.0.0
pullPolicy: Always
partOf: lux-coin
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources:
limits:
memory: 128Mi
requests:
cpu: 50m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- coin.lux.network
tls: true
className: ingress
+63
View File
@@ -0,0 +1,63 @@
# Generated from the live hanzo/lux-finance Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: lux-finance
containerName: spa
image:
repository: ghcr.io/luxfi/lux-finance
tag: v2.0.0
pullPolicy: Always
partOf: lux-finance
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources:
limits:
memory: 128Mi
requests:
cpu: 50m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- lux.finance
- www.lux.finance
tls: true
className: ingress
+63
View File
@@ -0,0 +1,63 @@
# Generated from the live hanzo/lux-industries Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: lux-industries
containerName: spa
image:
repository: ghcr.io/luxfi/lux-industries
tag: v2.0.0
pullPolicy: Always
partOf: lux-industries
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources:
limits:
memory: 128Mi
requests:
cpu: 50m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- lux.industries
- www.lux.industries
tls: true
className: ingress
+62
View File
@@ -0,0 +1,62 @@
# Generated from the live hanzo/lux-invest Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: lux-invest
containerName: spa
image:
repository: ghcr.io/luxfi/lux-invest
tag: v2.0.0
pullPolicy: Always
partOf: lux-invest
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources:
limits:
memory: 128Mi
requests:
cpu: 50m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- invest.lux.network
tls: true
className: ingress
+63
View File
@@ -0,0 +1,63 @@
# Generated from the live hanzo/lux-market Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: lux-market
containerName: spa
image:
repository: ghcr.io/luxfi/lux-market
tag: v2.0.0
pullPolicy: Always
partOf: lux-market
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources:
limits:
memory: 128Mi
requests:
cpu: 50m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- lux.market
- www.lux.market
tls: true
className: ingress
+60
View File
@@ -0,0 +1,60 @@
# Generated from the live hanzo/lux-safe-cgw Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: lux-safe-cgw
containerName: cgw
image:
repository: ghcr.io/luxfi/safe-cgw
tag: v0.1.2
pullPolicy: Always
partOf: lux-safe
env:
- name: PORT
value: '3000'
resources:
limits:
memory: 64Mi
requests:
cpu: 25m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 2
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- safe-cgw.lux.network
tls: true
className: ingress
+60
View File
@@ -0,0 +1,60 @@
# Generated from the live hanzo/lux-safe Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: lux-safe
containerName: spa
image:
repository: ghcr.io/luxfi/lux-safe
tag: v2.2.6
pullPolicy: Always
partOf: lux-safe
env:
- name: PORT
value: '3000'
resources:
limits:
memory: 128Mi
requests:
cpu: 50m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- safe.lux.network
tls: true
className: ingress
@@ -0,0 +1,75 @@
# Generated from the live kms-operator-system/kms-operator-controller-manager Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
control-plane: controller-manager
containerName: manager
image:
repository: ghcr.io/hanzoai/kms-operator
tag: v0.4.2
pullPolicy: Always
partOf: hanzo-universe
component: kms-operator
labels:
control-plane: controller-manager
args:
- --health-probe-bind-address=:8081
- --metrics-bind-address=127.0.0.1:8080
- --leader-elect
env:
- name: KMS_API_BASE
value: http://kms.lux-kms-go.svc.cluster.local
- name: KMS_AUTH_PATH
value: /v1/kms/auth/login
- name: RESYNC_INTERVAL
value: '60'
- name: ZAP_PORT
value: '9999'
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 10m
memory: 64Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 8081
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /readyz
port: 8081
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
ports:
- containerPort: 8080
name: http
- containerPort: 8081
name: health
imagePullSecrets:
- name: ghcr-luxfi
serviceAccountName: kms-operator-controller-manager
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 10
+64
View File
@@ -0,0 +1,64 @@
# Generated from the live liquid-docs/liquid-docs Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: liquid-docs
containerName: spa
image:
repository: ghcr.io/hanzoai/liquid-docs
digest: sha256:175b4e05fbe324aee176e520a41c75c4caaf82c1c175944c6648eb829afba48b
pullPolicy: Always
env:
- name: PORT
value: '3000'
- name: SPA_ENV
value: prod
- name: SPA_API_HOST
value: https://api.lux.network
resources:
limits:
cpu: 200m
memory: 128Mi
requests:
cpu: 20m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 2
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
targetPort: http
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
ingress:
enabled: true
hosts:
- liquid.lux.network
tls: true
className: ingress
+65
View File
@@ -0,0 +1,65 @@
# Generated from the live lux-audio/lux-audio Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app.kubernetes.io/name: lux-audio
containerName: spa
image:
repository: ghcr.io/luxfi/audio
tag: latest
pullPolicy: Always
partOf: lux-audio
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
- name: REDIRECTS
value: /earbuds=/,/earphones=/
resources:
limits:
memory: 128Mi
requests:
cpu: 50m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-pull
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- lux.audio
- www.lux.audio
tls: true
className: ingress
+50
View File
@@ -0,0 +1,50 @@
# Generated from the live lux-bank/bank-admin Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: bank-admin
image:
repository: ghcr.io/luxfi/bank-admin
tag: v1.2.5
pullPolicy: Always
partOf: lux-bank
resources:
limits:
cpu: 250m
memory: 256Mi
requests:
cpu: 50m
memory: 128Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 20
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+66
View File
@@ -0,0 +1,66 @@
# Generated from the live lux-bank/bank-dash Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: bank-dash
image:
repository: ghcr.io/luxfi/bank-dash
tag: v1.0.12
pullPolicy: Always
partOf: lux-bank
env:
- name: NEXT_PUBLIC_BASE_URL
value: https://api.lux.financial
- name: NEXT_PUBLIC_CURRENT_USER_COOKIE
value: lux-current-user
- name: NEXT_PUBLIC_JWT_COOKIE
value: lux-jwt-session
- name: NEXT_PUBLIC_JWT_COOKIE_IMPERSONATE
value: lux-jwt-session-impersonate
- name: NEXT_PUBLIC_RECAPTCHA_SITE_KEY
- name: BANK_UPSTREAM
value: http://bankd.lux-bank.svc.cluster.local
- name: PORT
value: '3000'
- name: DIST_DIR
value: /app/dist
resources:
limits:
cpu: 250m
memory: 256Mi
requests:
cpu: 50m
memory: 128Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 20
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+50
View File
@@ -0,0 +1,50 @@
# Generated from the live lux-bank/bank-docs Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: bank-docs
image:
repository: ghcr.io/luxbank/financial-docs
tag: 1.1.2
pullPolicy: Always
partOf: lux-financial
resources:
limits:
cpu: 250m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+74
View File
@@ -0,0 +1,74 @@
# Generated from the live lux-bank/bankd Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: bankd
image:
repository: ghcr.io/luxfi/bank
tag: v1.0.11
pullPolicy: IfNotPresent
command:
- bankd
args:
- serve
- --http
- 0.0.0.0:8070
- --dir
- /data
env:
- name: BANKD_DIR
value: /data
- name: JWT_SECRET
valueFrom:
secretKeyRef:
key: jwt-secret
name: bank-secrets
- name: ENCRYPT_KEY
valueFrom:
secretKeyRef:
key: encrypt-key
name: bank-secrets
- name: SENDGRID_KEY
valueFrom:
secretKeyRef:
key: sendgrid-key
name: bank-secrets
- name: SENTRY_DSN
valueFrom:
secretKeyRef:
key: sentry-dsn
name: bank-secrets
- name: GOOGLE_RECAPTCHA_SECRET_KEY
valueFrom:
secretKeyRef:
key: recaptcha-secret-key
name: bank-secrets
- name: BANK_SANDBOX
value: 'true'
resources:
limits:
cpu: '1'
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
volumeMounts:
- mountPath: /data
name: data
ports:
- containerPort: 8070
name: http
servicePort: 80
volumes:
- name: data
persistentVolumeClaim:
claimName: bankd-data
imagePullSecrets:
- name: ghcr-secret
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
+63
View File
@@ -0,0 +1,63 @@
# Generated from the live lux-bank/lux-financial Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: lux-financial
containerName: spa
image:
repository: ghcr.io/luxfi/lux-financial
tag: v1.5.1
pullPolicy: Always
partOf: lux-financial
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources:
limits:
memory: 128Mi
requests:
cpu: 50m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- lux.financial
- www.lux.financial
tls: true
className: ingress
+181
View File
@@ -0,0 +1,181 @@
# Generated from the live lux-bridge/bridge-server Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: bridge-server
image:
repository: ghcr.io/luxfi/bridge-server
digest: sha256:738db69035900d83e45bfbc3cb97d44fcbf22b68b225662beecc154370388dd5
pullPolicy: IfNotPresent
env:
- name: NODE_ENV
value: production
- name: NATS_URL
value: nats://nats:4222
- name: CONSUL_URL
value: http://consul:8500
- name: MPC_THRESHOLD
value: '3'
- name: MPC_TOTAL_NODES
value: '5'
- name: MPC_KEY_PREFIX
value: bridge/mpc
- name: MPC_INITIATOR_KEY_PATH
value: /etc/mpc/initiator.key
- name: NODE_OPTIONS
value: --max-old-space-size=1536
- name: POSTGRES_URL
valueFrom:
secretKeyRef:
key: postgres-url
name: bridge-secrets
- name: BRIDGE_FEE_COLLECTOR
value: '0xa5cd9b2b514c42a1e124d4087d1c654dad2052ad'
- name: MPC_API_URL
value: https://mpc.lux.network
- name: MPC_API_TOKEN
valueFrom:
secretKeyRef:
key: MPC_API_TOKEN
name: bridge-mpc-token
- name: MPC_WALLET_ID
value: '17727859650255619160017'
resources: {}
volumeMounts:
- mountPath: /app/app/server/dist/domain/rate.js
name: rate-patch
subPath: rate.js
- mountPath: /etc/mpc/initiator.key
name: mpc-keys
readOnly: true
subPath: initiator.key
- mountPath: /app/app/server/dist/server.js
name: cors-patch
subPath: server.js
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 15
successThreshold: 1
tcpSocket:
port: 5000
timeoutSeconds: 1
volumes:
- name: mpc-keys
secret:
items:
- key: initiator.key
path: initiator.key
secretName: mpc-identity-keys
- configMap:
name: bridge-rate-patch
name: rate-patch
- configMap:
name: mpc-bridge-patch
name: mpc-bridge-patch
- configMap:
name: bridge-cors-patch
name: cors-patch
sidecars:
- env:
- name: NODE_ENV
value: production
- name: PORT
value: '3000'
- name: DATABASE_URL
valueFrom:
secretKeyRef:
key: database-url
name: bridge-secrets
- name: NATS_URL
value: nats://nats:4222
- name: CONSUL_URL
value: http://consul:8500
- name: NODE_ID
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: MPC_THRESHOLD
value: '3'
- name: MPC_TOTAL_NODES
value: '5'
- name: MPC_KEY_PREFIX
value: bridge/mpc
- name: MPC_INITIATOR_KEY_PATH
value: /etc/mpc/initiator.key
- name: NODE_OPTIONS
value: --max-old-space-size=1536
- name: POSTGRES_URL
valueFrom:
secretKeyRef:
key: postgres-url
name: bridge-secrets
- name: BRIDGE_FEE_COLLECTOR
value: '0xa5cd9b2b514c42a1e124d4087d1c654dad2052ad'
- name: MPC_API_URL
value: https://mpc.lux.network
- name: MPC_API_TOKEN
valueFrom:
secretKeyRef:
key: MPC_API_TOKEN
name: bridge-mpc-token
- name: MPC_WALLET_ID
value: '17727859650255619160017'
image: ghcr.io/luxfi/bridge-server@sha256:88f29bc94588379f9226d99152a6720458164faea3955d2b651cb53021c2e1e4
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
name: bridge
ports:
- containerPort: 3000
name: http
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 1
resources:
limits:
cpu: '1'
memory: 1Gi
requests:
cpu: 500m
memory: 512Mi
volumeMounts:
- mountPath: /app/app/server/dist/domain/rate.js
name: rate-patch
subPath: rate.js
- mountPath: /etc/mpc/initiator.key
name: mpc-keys
readOnly: true
subPath: initiator.key
- mountPath: /app/app/server/dist/domain/mpc-bridge.js
name: mpc-bridge-patch
subPath: mpc-bridge.js
- mountPath: /app/app/server/dist/server.js
name: cors-patch
subPath: server.js
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+44
View File
@@ -0,0 +1,44 @@
# Generated from the live lux-bridge/bridge-ui-devnet Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: bridge-ui-devnet
containerName: bridge-ui
image:
repository: ghcr.io/luxfi/bridge-ui
digest: sha256:71e0bbe79a37613887748eae2fec3a0c0caae50cded0eec29439a32c12e6f9d4
pullPolicy: IfNotPresent
labels:
env: devnet
env:
- name: NEXT_PUBLIC_NETWORK_NAME
value: devnet
- name: NEXT_PUBLIC_BRIDGE_API
value: https://bridge-api.lux.network
- name: NEXT_PUBLIC_BACKEND_API
value: https://bridge-api.lux.network
- name: NEXT_PUBLIC_IDENTITY_API
value: https://bridge-api.lux.network
- name: NEXT_PUBLIC_EXPLORER_API
value: https://api-explore.lux-dev.network
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
ports:
- containerPort: 3000
name: http
targetPort: http
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
imagePullSecrets: []
+44
View File
@@ -0,0 +1,44 @@
# Generated from the live lux-bridge/bridge-ui-testnet Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: bridge-ui-testnet
containerName: bridge-ui
image:
repository: ghcr.io/luxfi/bridge-ui
digest: sha256:71e0bbe79a37613887748eae2fec3a0c0caae50cded0eec29439a32c12e6f9d4
pullPolicy: IfNotPresent
labels:
env: testnet
env:
- name: NEXT_PUBLIC_NETWORK_NAME
value: testnet
- name: NEXT_PUBLIC_BRIDGE_API
value: https://bridge-api.lux.network
- name: NEXT_PUBLIC_BACKEND_API
value: https://bridge-api.lux.network
- name: NEXT_PUBLIC_IDENTITY_API
value: https://bridge-api.lux.network
- name: NEXT_PUBLIC_EXPLORER_API
value: https://api-explore.lux-test.network
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
ports:
- containerPort: 3000
name: http
targetPort: http
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
imagePullSecrets: []
+49
View File
@@ -0,0 +1,49 @@
# Generated from the live lux-bridge/bridge-ui Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: bridge-ui
containerName: ui
image:
repository: ghcr.io/luxfi/bridge-ui
digest: sha256:71e0bbe79a37613887748eae2fec3a0c0caae50cded0eec29439a32c12e6f9d4
pullPolicy: Always
env:
- name: NEXT_PUBLIC_BRIDGE_API
value: https://bridge-api.lux.network
- name: NEXT_PUBLIC_BACKEND_API
value: https://bridge-api.lux.network
- name: NEXT_PUBLIC_IDENTITY_API
value: https://bridge-api.lux.network
- name: NEXT_PUBLIC_EXPLORER_API
value: https://bridge-api.lux.network
- name: NEXT_PUBLIC_NETWORK_NAME
value: mainnet
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 15
successThreshold: 1
tcpSocket:
port: 3000
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+60
View File
@@ -0,0 +1,60 @@
# Generated from the live lux-bridge/consul Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: consul
image:
repository: hashicorp/consul
tag: '1.17'
pullPolicy: IfNotPresent
labels:
brand: lux
command:
- sh
- -c
- exec consul agent -server -bootstrap-expect=1 -ui -client=0.0.0.0 -bind=$(POD_IP) -data-dir=/consul/data -datacenter=mainnet
env:
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
resources:
limits:
cpu: 250m
memory: 256Mi
requests:
cpu: 25m
memory: 64Mi
volumeMounts:
- mountPath: /consul/data
name: data
readinessProbe:
failureThreshold: 3
httpGet:
path: /v1/status/leader
port: 8500
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 8500
name: http
- containerPort: 8600
name: dns
- containerPort: 8600
name: dns
protocol: UDP
volumes:
- name: data
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+45
View File
@@ -0,0 +1,45 @@
# Generated from the live lux-bridge/kv Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: kv
image:
repository: ghcr.io/hanzoai/kv
tag: '9'
pullPolicy: Always
resources: {}
volumeMounts:
- mountPath: /data
name: kv-storage
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 6379
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 5
periodSeconds: 5
successThreshold: 1
tcpSocket:
port: 6379
timeoutSeconds: 1
ports:
- containerPort: 6379
name: redis
volumes:
- name: kv-storage
persistentVolumeClaim:
claimName: kv-pvc
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+102
View File
@@ -0,0 +1,102 @@
# Generated from the live lux-bridge/lux-bridge Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: lux-bridge
containerName: bridge
image:
repository: ghcr.io/luxfi/bridge
tag: e377ac59
pullPolicy: Always
labels:
component: api
env:
- name: BRIDGE_ADDR
value: :8080
- name: BRIDGE_CONFIG
value: /etc/bridge/networks.yaml
- name: BRIDGE_DATA_DIR
value: /var/lib/lux-bridge
- name: BRIDGE_API_HOST
value: https://bridge.lux.network
- name: BRIDGE_BACKEND_URL
- name: BRIDGE_BCHAIN_URL
- name: BRIDGE_MPC_URL
value: http://mpc-api-svc.lux-bridge.svc:8081
- name: BRIDGE_MPC_TOKEN
valueFrom:
secretKeyRef:
key: MPC_API_TOKEN
name: bridge-mpc-token
- name: BRIDGE_MPC_ORG_ID
value: bridge
- name: BRIDGE_PROFILE
value: classical-compat
- name: BRIDGE_COINGECKO
value: 'true'
- name: BRIDGE_ENV
value: mainnet
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
volumeMounts:
- mountPath: /etc/bridge
name: config
readOnly: true
- mountPath: /var/lib/lux-bridge
name: data
- mountPath: /tmp
name: tmp
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 2
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 2
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 1
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
ports:
- containerPort: 8080
name: http
servicePort: 80
targetPort: http
volumes:
- configMap:
name: lux-bridge-config
name: config
- name: data
persistentVolumeClaim:
claimName: lux-bridge-data
- emptyDir:
sizeLimit: 50Mi
name: tmp
fsGroup: 65532
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+61
View File
@@ -0,0 +1,61 @@
# Generated from the live lux-bridge/nats Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: nats
image:
repository: nats
tag: 2.10-alpine
pullPolicy: IfNotPresent
labels:
brand: lux
args:
- -js
- -m
- '8222'
- --store_dir
- /data
resources:
limits:
cpu: 250m
memory: 256Mi
requests:
cpu: 25m
memory: 64Mi
volumeMounts:
- mountPath: /data
name: data
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 8222
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 4222
timeoutSeconds: 1
ports:
- containerPort: 4222
name: client
- containerPort: 8222
name: monitor
volumes:
- name: data
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+62
View File
@@ -0,0 +1,62 @@
# Generated from the live lux-bridge/pars-bridge Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: pars-bridge
containerName: bridge
image:
repository: ghcr.io/luxfi/bridge
tag: main
pullPolicy: Always
labels:
tenant: pars
resources:
limits:
cpu: 300m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
volumeMounts:
- mountPath: /public/__ENV.js
name: env-js
readOnly: true
subPath: __ENV.js
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
targetPort: http
volumes:
- configMap:
name: pars-bridge-env
name: env-js
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+62
View File
@@ -0,0 +1,62 @@
# Generated from the live lux-bridge/zoo-bridge Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: zoo-bridge
containerName: bridge
image:
repository: ghcr.io/luxfi/bridge
tag: main
pullPolicy: Always
labels:
tenant: zoo
resources:
limits:
cpu: 300m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
volumeMounts:
- mountPath: /public/__ENV.js
name: env-js
readOnly: true
subPath: __ENV.js
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
targetPort: http
volumes:
- configMap:
name: zoo-bridge-env
name: env-js
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+57
View File
@@ -0,0 +1,57 @@
# Generated from the live lux-cloud/cloud Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: cloud
image:
repository: ghcr.io/luxfi/cloud-web
tag: v1.5.8
pullPolicy: Always
partOf: lux-cloud
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 20
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 5
ports:
- containerPort: 3000
name: http
servicePort: 80
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
ingress:
enabled: true
hosts:
- lux.cloud
- www.lux.cloud
tls: true
className: ingress
+64
View File
@@ -0,0 +1,64 @@
# Generated from the live lux-cloud/lux-fleet Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: lux-fleet
image:
repository: ghcr.io/hanzoai/bootnode
tag: fleet-6291e97
pullPolicy: IfNotPresent
resources:
limits:
cpu: 500m
memory: 128Mi
requests:
cpu: 25m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8000
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8000
scheme: HTTP
initialDelaySeconds: 2
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 1
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 65532
ports:
- containerPort: 8000
name: http
servicePort: 80
serviceAccountName: lux-fleet
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
ingress:
enabled: true
hosts:
- api.cloud.lux.network
tls: false
className: ingress
+37
View File
@@ -0,0 +1,37 @@
# Generated from the live lux-credit/lux-credit Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app.kubernetes.io/name: lux-credit
image:
repository: ghcr.io/lux-apps/credit
tag: 038f7dfe3ff5798d41875fa30c4e1ec148093595
pullPolicy: Always
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources: {}
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-pull
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
ingress:
enabled: true
hosts:
- lux.credit
- www.lux.credit
tls: true
className: ingress
@@ -0,0 +1,68 @@
# Generated from the live lux-devnet/api-gateway-gateway Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app.kubernetes.io/component: gateway
app.kubernetes.io/instance: api-gateway
app.kubernetes.io/managed-by: lux-operator
app.kubernetes.io/name: lux-gateway
containerName: gateway
image:
repository: ghcr.io/hanzoai/gateway
digest: sha256:017dd6989257c5e86eefba734d5ecb16e1cf4ce2539ef229508156a1ee45b913
pullPolicy: IfNotPresent
component: gateway
command:
- /usr/bin/gateway
args:
- run
- -c
- /etc/gateway/gateway.json
resources:
limits:
cpu: '1'
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
volumeMounts:
- mountPath: /etc/gateway
name: config
readOnly: true
livenessProbe:
failureThreshold: 3
httpGet:
path: /__health
port: 8080
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /__health
port: 8080
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 8080
name: http
servicePort: 80
volumes:
- configMap:
name: api-gateway-gateway-config
name: config
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+70
View File
@@ -0,0 +1,70 @@
# Generated from the live lux-devnet/chain-traffic Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app.kubernetes.io/name: chain-traffic
containerName: traffic
image:
repository: ghcr.io/foundry-rs/foundry
tag: latest
pullPolicy: IfNotPresent
partOf: lux
component: traffic
command:
- /bin/sh
- /app/chain-traffic.sh
env:
- name: RPC_URLS
value: http://luxd-0.luxd-headless.lux-devnet:9650/v1/bc/C/rpc,http://luxd-1.luxd-headless.lux-devnet:9650/v1/bc/C/rpc,http://luxd-2.luxd-headless.lux-devnet:9650/v1/bc/C/rpc,http://luxd-3.luxd-headless.lux-devnet:9650/v1/bc/C/rpc,http://luxd-4.luxd-headless.lux-devnet:9650/v1/bc/C/rpc
- name: TX_PER_BURST
value: '2'
- name: BURST_SECS
value: '2'
- name: MAX_INFLIGHT
value: '8'
- name: STALL_SECS
value: '90'
- name: GAS_MULT
value: '2'
- name: KEY_IDX
value: '11'
- name: SEED_IDX
value: '0'
- name: SEED_FLOOR_WEI
value: '10000000000000000000'
- name: SEED_AMOUNT_WEI
value: '100000000000000000000000'
- name: LUX_MNEMONIC
valueFrom:
secretKeyRef:
key: LUX_MNEMONIC
name: lux-deployer
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
volumeMounts:
- mountPath: /app
name: code
readOnly: true
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
volumes:
- configMap:
name: chain-traffic-code
name: code
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 5
defaultReadinessProbe: false
imagePullSecrets: []
+79
View File
@@ -0,0 +1,79 @@
# Generated from the live lux-devnet/dchain-edge Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: dchain-edge
containerName: luxd
image:
repository: ghcr.io/luxfi/node
tag: v1.30.15-dchain
pullPolicy: Always
partOf: lux-devnet
command:
- /bin/sh
- /scripts/startup.sh
resources:
limits:
cpu: '2'
memory: 8Gi
requests:
cpu: 500m
memory: 2Gi
volumeMounts:
- mountPath: /data
name: data
- mountPath: /scripts
name: startup-script
- mountPath: /genesis
name: genesis
readOnly: true
- mountPath: /seed
name: seed
readOnly: true
livenessProbe:
failureThreshold: 5
httpGet:
path: /ext/health/liveness
port: 9650
scheme: HTTP
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
startupProbe:
failureThreshold: 120
httpGet:
path: /ext/health/liveness
port: 9650
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
ports:
- containerPort: 9650
name: http
- containerPort: 9651
name: staking
volumes:
- emptyDir:
sizeLimit: 20Gi
name: data
- configMap:
name: dchain-edge-startup
name: startup-script
- configMap:
name: dchain-edge-genesis
name: genesis
- configMap:
name: dchain-edge-seed
name: seed
imagePullSecrets:
- name: ghcr-luxfi
fsGroup: 1000
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
+44
View File
@@ -0,0 +1,44 @@
# Generated from the live lux-devnet/dchain-venue Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: dchain-venue
containerName: venue
image:
repository: ghcr.io/luxfi/dex-venue
tag: v1.5.5
pullPolicy: IfNotPresent
labels:
lux.network/component: dex-venue
args:
- -addr
- 0.0.0.0:9099
- -db
- /data/db
resources: {}
volumeMounts:
- mountPath: /data
name: data
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 3
periodSeconds: 5
successThreshold: 1
tcpSocket:
port: 9099
timeoutSeconds: 1
ports:
- containerPort: 9099
name: zap
volumes:
- name: data
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+61
View File
@@ -0,0 +1,61 @@
# Generated from the live lux-devnet/exchange-api Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: exchange-api
network: devnet
image:
repository: ghcr.io/luxfi/exchange-api
tag: 2.3.2
pullPolicy: IfNotPresent
labels:
network: devnet
env:
- name: PORT
value: '4000'
- name: NETWORK
value: devnet
- name: LUX_RPC_URL
value: http://luxd-headless.lux-devnet.svc.cluster.local:9650/v1/bc/C/rpc
- name: SUBGRAPH_URL
value: http://explorer.lux-devnet.svc.cluster.local:8090/v1/graph/cchain/amm/graphql
- name: DEX_SUBGRAPH_URL
value: http://explorer.lux-devnet.svc.cluster.local:8090/v1/graph/cchain/dex/graphql
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 2
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 2
ports:
- containerPort: 4000
name: http
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+72
View File
@@ -0,0 +1,72 @@
# Generated from the live lux-devnet/explore-fe-hanzo Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: explore-fe
brand: hanzo
network: devnet
containerName: explore
image:
repository: ghcr.io/hanzoai/explore
tag: v1.0.4
pullPolicy: IfNotPresent
labels:
brand: hanzo
network: devnet
env:
- name: PORT
value: '3000'
envFrom:
- configMapRef:
name: explore-env-hanzo
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 5
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 90
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 6
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 10
startupProbe:
failureThreshold: 30
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+72
View File
@@ -0,0 +1,72 @@
# Generated from the live lux-devnet/explore-fe-lux Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: explore-fe
brand: lux
network: devnet
containerName: explore
image:
repository: ghcr.io/luxfi/explore
tag: sha-caf792d
pullPolicy: IfNotPresent
labels:
brand: lux
network: devnet
env:
- name: PORT
value: '3000'
envFrom:
- configMapRef:
name: explore-env-lux
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 5
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 90
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 6
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 10
startupProbe:
failureThreshold: 30
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+72
View File
@@ -0,0 +1,72 @@
# Generated from the live lux-devnet/explore-fe-pars Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: explore-fe
brand: pars
network: devnet
containerName: explore
image:
repository: ghcr.io/parsdao/explore
tag: v1.0.4
pullPolicy: IfNotPresent
labels:
brand: pars
network: devnet
env:
- name: PORT
value: '3000'
envFrom:
- configMapRef:
name: explore-env-pars
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 5
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 90
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 6
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 10
startupProbe:
failureThreshold: 30
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+72
View File
@@ -0,0 +1,72 @@
# Generated from the live lux-devnet/explore-fe-zoo Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: explore-fe
brand: zoo
network: devnet
containerName: explore
image:
repository: ghcr.io/zooai/explore
tag: v1.0.4
pullPolicy: IfNotPresent
labels:
brand: zoo
network: devnet
env:
- name: PORT
value: '3000'
envFrom:
- configMapRef:
name: explore-env-zoo
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 5
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 90
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 6
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 10
startupProbe:
failureThreshold: 30
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+193
View File
@@ -0,0 +1,193 @@
# Generated from the live lux-devnet/explorer Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: explorer
network: devnet
image:
repository: ghcr.io/luxfi/explorer
tag: 1.3.4
pullPolicy: IfNotPresent
labels:
network: devnet
args:
- --config=/etc/explorer/chains.yaml
env:
- name: DATA_DIR
value: /data
- name: HTTP_ADDR
value: :8090
- name: EXPLORER_STATIC_DIR
value: /etc/explorer/static
resources:
limits:
cpu: '2'
memory: 4Gi
requests:
cpu: 250m
memory: 512Mi
volumeMounts:
- mountPath: /etc/explorer
name: config
readOnly: true
- mountPath: /etc/explorer/static
name: static
readOnly: true
- mountPath: /data
name: data
livenessProbe:
failureThreshold: 5
httpGet:
path: /health
port: api
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 6
httpGet:
path: /health
port: api
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
startupProbe:
failureThreshold: 30
httpGet:
path: /health
port: api
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 5
securityContext:
runAsNonRoot: true
runAsUser: 65532
ports:
- containerPort: 8090
name: http-v2
servicePort: 80
volumes:
- configMap:
name: explorer-chains
name: config
- configMap:
name: explorer-static
name: static
- name: data
persistentVolumeClaim:
claimName: explorer-data
imagePullSecrets:
- name: ghcr-luxfi
sidecars:
- env:
- name: PORT
value: '3000'
- name: ENVS_PRESET
value: none
- name: SKIP_ENVS_VALIDATION
value: 'true'
- name: NEXT_TELEMETRY_DISABLED
value: '1'
- name: NEXT_PUBLIC_NETWORK_ID
value: '96370'
- name: NEXT_PUBLIC_NETWORK_NAME
value: Lux Devnet
- name: NEXT_PUBLIC_NETWORK_SHORT_NAME
value: LUX
- name: NEXT_PUBLIC_NETWORK_CURRENCY_NAME
value: LUX
- name: NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL
value: LUX
- name: NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS
value: '18'
- name: NEXT_PUBLIC_NETWORK_RPC_URL
value: https://api.lux-dev.network/ext/bc/C/rpc
- name: NEXT_PUBLIC_NETWORK_LOGO
value: /logo.svg
- name: NEXT_PUBLIC_NETWORK_ICON
value: /icon.svg
- name: NEXT_PUBLIC_BRAND
value: lux
- name: NEXT_PUBLIC_IS_TESTNET
value: 'true'
- name: NEXT_PUBLIC_APP_HOST
value: explore.lux-dev.network
- name: NEXT_PUBLIC_APP_PROTOCOL
value: https
- name: NEXT_PUBLIC_API_HOST
value: api-explore.lux-dev.network
- name: NEXT_PUBLIC_API_PROTOCOL
value: https
- name: NEXT_PUBLIC_API_BASE_PATH
value: /v1/indexer/cchain
- name: NEXT_PUBLIC_API_WEBSOCKET_PROTOCOL
value: wss
- name: NEXT_PUBLIC_NETWORK_ORG_NAME
value: Lux Industries Inc.
- name: NEXT_PUBLIC_NETWORK_WEBSITE_URL
value: https://lux.network
- name: NEXT_PUBLIC_COLOR_THEME_DEFAULT
value: dark
- name: NEXT_PUBLIC_ACCOUNT_AUTH_PROVIDER
value: oidc
- name: NEXT_PUBLIC_OIDC_SERVER_URL
value: https://lux.id
- name: NEXT_PUBLIC_OIDC_CLIENT_ID
value: lux-explore-client-id
image: ghcr.io/luxfi/explore@sha256:ddb15bc28ff38c7619bc08df9337e02b32ef886c33b9993a9b9cb3c475ad75de
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 5
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 90
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 10
name: explore
ports:
- containerPort: 3000
name: ui
protocol: TCP
readinessProbe:
failureThreshold: 6
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 10
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 100m
memory: 256Mi
startupProbe:
failureThreshold: 30
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
fsGroup: 65532
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 60
+57
View File
@@ -0,0 +1,57 @@
# Generated from the live lux-devnet/info-filter Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app: info-filter
containerName: openresty
image:
repository: openresty/openresty
tag: alpine
pullPolicy: IfNotPresent
resources:
limits:
cpu: 200m
memory: 64Mi
requests:
cpu: 50m
memory: 32Mi
volumeMounts:
- mountPath: /usr/local/openresty/nginx/conf/nginx.conf
name: config
subPath: nginx.conf
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 8080
name: http
volumes:
- configMap:
name: info-filter-config
name: config
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+42
View File
@@ -0,0 +1,42 @@
# Generated from the live lux-devnet/kms-zap-operator Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app: kms-zap-operator
containerName: operator
image:
repository: ghcr.io/luxfi/kms-operator
tag: v1.11.7
pullPolicy: IfNotPresent
env:
- name: WATCH_NAMESPACE
value: lux-devnet
- name: RESYNC_INTERVAL
value: '30'
- name: ZAP_PORT
value: '9999'
resources: {}
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 8080
imagePullSecrets:
- name: ghcr-luxfi
serviceAccountName: kms-zap-operator
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
+53
View File
@@ -0,0 +1,53 @@
# Generated from the live lux-devnet/lux-exchange Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: exchange
containerName: exchange
image:
repository: ghcr.io/luxfi/exchange
tag: 5.149.15-amd64
pullPolicy: IfNotPresent
envFrom:
- configMapRef:
name: lux-exchange-config
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: http
scheme: HTTP
initialDelaySeconds: 20
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: http
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 3
ports:
- containerPort: 3000
name: http
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+74
View File
@@ -0,0 +1,74 @@
# Generated from the live lux-devnet/lux-indexer Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: lux-indexer
network: devnet
containerName: indexerd
image:
repository: ghcr.io/luxfi/indexer
tag: 1.4.4
pullPolicy: IfNotPresent
labels:
network: devnet
args:
- -config=/etc/lux-indexer/chains.yaml
- -data=/data
- -http=:8091
env:
- name: DATA_DIR
value: /data
- name: HTTP_ADDR
value: :8091
resources:
limits:
cpu: '2'
memory: 4Gi
requests:
cpu: 200m
memory: 512Mi
volumeMounts:
- mountPath: /etc/lux-indexer
name: config
readOnly: true
- mountPath: /data
name: data
livenessProbe:
failureThreshold: 5
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 60
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
ports:
- containerPort: 8091
name: http
volumes:
- configMap:
name: lux-indexer-config
name: config
- name: data
persistentVolumeClaim:
claimName: lux-indexer-data
imagePullSecrets:
- name: ghcr-luxfi
fsGroup: 65532
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+70
View File
@@ -0,0 +1,70 @@
# Generated from the live lux-devnet/stats-devnet Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app: stats
network: devnet
containerName: stats
image:
repository: ghcr.io/luxfi/explorer-stats
tag: main
pullPolicy: IfNotPresent
labels:
network: devnet
env:
- name: STATS__DB_URL
valueFrom:
secretKeyRef:
key: STATS_DEVNET_DB_URL
name: db-credentials
- name: STATS__BLOCKSCOUT_DB_URL
valueFrom:
secretKeyRef:
key: STATS_DEVNET_DB_URL
name: db-credentials
- name: STATS__CREATE_DATABASE
value: 'false'
- name: STATS__RUN_MIGRATIONS
value: 'true'
- name: STATS__SERVER__HTTP__ADDR
value: 0.0.0.0:8050
- name: STATS__BLOCKSCOUT_API_URL
value: http://explorer-devnet.lux-devnet.svc.cluster.local:4000
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8050
scheme: HTTP
initialDelaySeconds: 60
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8050
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 8050
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+73
View File
@@ -0,0 +1,73 @@
# Generated from the live lux-explorer/lux-faucet Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: lux-faucet
containerName: faucet
image:
repository: ghcr.io/luxfi/faucet:v1.0.1
digest: sha256:325a83ccdf406459cdce870a8d2fd1c8d34c274811fa77568b0bf92905e68e56
pullPolicy: IfNotPresent
command:
- node
args:
- build/server.js
env:
- name: PK
valueFrom:
secretKeyRef:
key: PK
name: lux-faucet-key
envFrom:
- configMapRef:
name: faucet-config
resources:
limits:
cpu: 250m
memory: 256Mi
requests:
cpu: 50m
memory: 128Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 3
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
runAsUser: 1001
ports:
- containerPort: 3000
name: http
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- faucet.lux-test.network
tls: true
className: ingress
+37
View File
@@ -0,0 +1,37 @@
# Generated from the live lux-foundation/lux-foundation Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app.kubernetes.io/name: lux-foundation
image:
repository: ghcr.io/lux-apps/foundation
tag: latest
pullPolicy: Always
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources: {}
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-pull
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
ingress:
enabled: true
hosts:
- lux.foundation
- www.lux.foundation
tls: true
className: ingress
+37
View File
@@ -0,0 +1,37 @@
# Generated from the live lux-fund/lux-fund Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app.kubernetes.io/name: lux-fund
image:
repository: ghcr.io/lux-apps/fund
tag: c30add1534b45dfd53167aee3de6c6a541c2a76c
pullPolicy: Always
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources: {}
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-pull
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
ingress:
enabled: true
hosts:
- lux.fund
- www.lux.fund
tls: true
className: ingress
+45
View File
@@ -0,0 +1,45 @@
# Generated from the live lux-lps/lux-lps Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app.kubernetes.io/name: lux-lps
image:
repository: ghcr.io/luxfi/lps
tag: 1.0.1
pullPolicy: IfNotPresent
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources: {}
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-pull
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- lps.lux.network
tls: true
className: ingress
@@ -0,0 +1,64 @@
# Generated from the live lux-mainnet/api-gateway-gateway Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app.kubernetes.io/component: gateway
app.kubernetes.io/instance: api-gateway
app.kubernetes.io/managed-by: lux-operator
app.kubernetes.io/name: lux-gateway
containerName: gateway
image:
repository: ghcr.io/hanzoai/gateway
tag: 2.14.1
pullPolicy: IfNotPresent
component: gateway
command:
- /usr/bin/gateway
args:
- run
- -c
- /etc/gateway/gateway.json
resources:
limits:
cpu: '1'
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
volumeMounts:
- mountPath: /etc/gateway
name: config
readOnly: true
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 15
successThreshold: 1
tcpSocket:
port: 8080
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 8080
timeoutSeconds: 1
ports:
- containerPort: 8080
name: http
servicePort: 80
volumes:
- configMap:
name: api-gateway-gateway-config
name: config
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+29
View File
@@ -0,0 +1,29 @@
# Generated from the live lux-mainnet/api-gateway Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
image:
repository: ghcr.io/luxfi/gateway
tag: v0.1.0
pullPolicy: IfNotPresent
component: gateway
resources: {}
ports:
- containerPort: 8080
name: http
servicePort: 80
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
topologySpread:
enabled: false
lifecycle:
preStop:
exec:
command:
- /bin/sh
- -c
- sleep 5
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
imagePullSecrets: []
+68
View File
@@ -0,0 +1,68 @@
# Generated from the live lux-mainnet/chain-traffic Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app.kubernetes.io/name: chain-traffic
containerName: traffic
image:
repository: ghcr.io/foundry-rs/foundry
tag: latest
pullPolicy: IfNotPresent
partOf: lux
component: traffic
command:
- /bin/sh
- /app/chain-traffic.sh
env:
- name: RPC_URLS
value: http://luxd-0.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc,http://luxd-1.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc,http://luxd-2.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc,http://luxd-3.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc,http://luxd-4.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc
- name: READ_URL
value: http://luxd-rpc.lux-mainnet:9630/v1/bc/C/rpc
- name: TX_PER_BURST
value: '2'
- name: BURST_SECS
value: '2'
- name: MAX_INFLIGHT
value: '8'
- name: STALL_SECS
value: '90'
- name: GAS_MULT
value: '2'
- name: KEY_IDX
value: '11'
- name: SEED_IDX
value: '-1'
- name: TRAFFIC_KEY
valueFrom:
secretKeyRef:
key: TRAFFIC_KEY
name: chain-traffic-key
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
volumeMounts:
- mountPath: /app
name: code
readOnly: true
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
volumes:
- configMap:
name: chain-traffic-code
name: code
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 5
defaultReadinessProbe: false
imagePullSecrets: []
+44
View File
@@ -0,0 +1,44 @@
# Generated from the live lux-mainnet/dchain-venue Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: dchain-venue
containerName: venue
image:
repository: ghcr.io/luxfi/dex-venue
tag: v1.5.5
pullPolicy: IfNotPresent
labels:
lux.network/component: dex-venue
args:
- -addr
- 0.0.0.0:9099
- -db
- /data/db
resources: {}
volumeMounts:
- mountPath: /data
name: data
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 3
periodSeconds: 5
successThreshold: 1
tcpSocket:
port: 9099
timeoutSeconds: 1
ports:
- containerPort: 9099
name: zap
volumes:
- name: data
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+72
View File
@@ -0,0 +1,72 @@
# Generated from the live lux-mainnet/explore-fe-hanzo Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: explore-fe
brand: hanzo
network: mainnet
containerName: explore
image:
repository: ghcr.io/hanzoai/explore
tag: v1.1.12
pullPolicy: IfNotPresent
labels:
brand: hanzo
network: mainnet
env:
- name: PORT
value: '3000'
envFrom:
- configMapRef:
name: explore-env-hanzo
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 5
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 90
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 6
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 10
startupProbe:
failureThreshold: 30
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+76
View File
@@ -0,0 +1,76 @@
# Generated from the live lux-mainnet/explore-fe-lux Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: explore-fe
brand: lux
network: mainnet
containerName: explore
image:
repository: ghcr.io/luxfi/explore
tag: v1.1.13
pullPolicy: IfNotPresent
labels:
brand: lux
network: mainnet
env:
- name: PORT
value: '3000'
- name: NEXT_PUBLIC_FONT_FAMILY_HEADING
value: '{"name":"Geist","url":"https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&display=swap"}'
- name: NEXT_PUBLIC_FONT_FAMILY_BODY
value: '{"name":"Geist","url":"https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&display=swap"}'
envFrom:
- configMapRef:
name: explore-env-lux
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 5
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 90
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 6
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 10
startupProbe:
failureThreshold: 30
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+72
View File
@@ -0,0 +1,72 @@
# Generated from the live lux-mainnet/explore-fe-pars Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: explore-fe
brand: pars
network: mainnet
containerName: explore
image:
repository: ghcr.io/parsdao/explore
tag: v1.1.12
pullPolicy: IfNotPresent
labels:
brand: pars
network: mainnet
env:
- name: PORT
value: '3000'
envFrom:
- configMapRef:
name: explore-env-pars
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 5
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 90
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 6
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 10
startupProbe:
failureThreshold: 30
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+76
View File
@@ -0,0 +1,76 @@
# Generated from the live lux-mainnet/explore-fe-spc Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: explore-fe
brand: spc
network: mainnet
containerName: explore
image:
repository: ghcr.io/luxfi/explore
tag: v1.1.10
pullPolicy: IfNotPresent
labels:
brand: spc
network: mainnet
env:
- name: PORT
value: '3000'
- name: NEXT_PUBLIC_FONT_FAMILY_HEADING
value: '{"name":"Geist","url":"https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&display=swap"}'
- name: NEXT_PUBLIC_FONT_FAMILY_BODY
value: '{"name":"Geist","url":"https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&display=swap"}'
envFrom:
- configMapRef:
name: explore-env-spc
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 5
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 90
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 6
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 10
startupProbe:
failureThreshold: 30
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+72
View File
@@ -0,0 +1,72 @@
# Generated from the live lux-mainnet/explore-fe-zoo Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: explore-fe
brand: zoo
network: mainnet
containerName: explore
image:
repository: ghcr.io/zooai/explore
tag: v1.1.12
pullPolicy: IfNotPresent
labels:
brand: zoo
network: mainnet
env:
- name: PORT
value: '3000'
envFrom:
- configMapRef:
name: explore-env-zoo
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 5
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 90
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 6
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 10
startupProbe:
failureThreshold: 30
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+199
View File
@@ -0,0 +1,199 @@
# Generated from the live lux-mainnet/explorer Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: explorer
network: mainnet
image:
repository: ghcr.io/luxfi/explorer
tag: 1.5.3
pullPolicy: IfNotPresent
labels:
network: mainnet
args:
- --config=/etc/explorer/chains.yaml
env:
- name: DATA_DIR
value: /data
- name: HTTP_ADDR
value: :8090
- name: EXPLORER_STATIC_DIR
value: /etc/explorer/static
resources:
limits:
cpu: '2'
memory: 4Gi
requests:
cpu: 250m
memory: 512Mi
volumeMounts:
- mountPath: /etc/explorer
name: config
readOnly: true
- mountPath: /etc/explorer/static
name: static
readOnly: true
- mountPath: /data
name: data
livenessProbe:
failureThreshold: 5
httpGet:
path: /health
port: api
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 6
httpGet:
path: /health
port: api
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
startupProbe:
failureThreshold: 30
httpGet:
path: /health
port: api
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 5
securityContext:
runAsNonRoot: true
runAsUser: 65532
ports:
- containerPort: 8090
name: http-v2
servicePort: 80
volumes:
- configMap:
name: explorer-chains
name: config
- configMap:
name: explorer-static
name: static
- name: data
persistentVolumeClaim:
claimName: explorer-data
imagePullSecrets:
- name: ghcr-luxfi
sidecars:
- env:
- name: PORT
value: '3000'
- name: ENVS_PRESET
value: none
- name: SKIP_ENVS_VALIDATION
value: 'true'
- name: NEXT_TELEMETRY_DISABLED
value: '1'
- name: NEXT_PUBLIC_NETWORK_ID
value: '96369'
- name: NEXT_PUBLIC_NETWORK_NAME
value: Lux Network
- name: NEXT_PUBLIC_NETWORK_SHORT_NAME
value: LUX
- name: NEXT_PUBLIC_NETWORK_CURRENCY_NAME
value: LUX
- name: NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL
value: LUX
- name: NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS
value: '18'
- name: NEXT_PUBLIC_NETWORK_RPC_URL
value: https://api.lux.network/v1/bc/C/rpc
- name: NEXT_PUBLIC_NETWORK_LOGO
value: /logo.svg
- name: NEXT_PUBLIC_NETWORK_ICON
value: /icon.svg
- name: NEXT_PUBLIC_BRAND
value: lux
- name: NEXT_PUBLIC_IS_TESTNET
value: 'false'
- name: NEXT_PUBLIC_APP_HOST
value: explore.lux.network
- name: NEXT_PUBLIC_APP_PROTOCOL
value: https
- name: NEXT_PUBLIC_API_HOST
value: api-explore.lux.network
- name: NEXT_PUBLIC_API_PROTOCOL
value: https
- name: NEXT_PUBLIC_API_BASE_PATH
value: /v1/indexer/cchain
- name: NEXT_PUBLIC_API_WEBSOCKET_PROTOCOL
value: wss
- name: NEXT_PUBLIC_NETWORK_ORG_NAME
value: Lux Industries Inc.
- name: NEXT_PUBLIC_NETWORK_WEBSITE_URL
value: https://lux.network
- name: NEXT_PUBLIC_NETWORK_GITHUB_URL
value: https://github.com/luxfi
- name: NEXT_PUBLIC_NETWORK_TWITTER_URL
value: https://x.com/luxdefi
- name: NEXT_PUBLIC_NETWORK_DISCORD_URL
value: https://discord.gg/luxnetwork
- name: NEXT_PUBLIC_COLOR_THEME_DEFAULT
value: dark
- name: NEXT_PUBLIC_ACCOUNT_AUTH_PROVIDER
value: oidc
- name: NEXT_PUBLIC_OIDC_SERVER_URL
value: https://lux.id
- name: NEXT_PUBLIC_OIDC_CLIENT_ID
value: lux-explore-client-id
image: ghcr.io/luxfi/explore:sha-3163282
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 5
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 90
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 10
name: explore
ports:
- containerPort: 3000
name: ui
protocol: TCP
readinessProbe:
failureThreshold: 6
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 10
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 100m
memory: 256Mi
startupProbe:
failureThreshold: 30
httpGet:
path: /
port: ui
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 10
fsGroup: 65532
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 60
+39
View File
@@ -0,0 +1,39 @@
# Generated from the live lux-mainnet/graph-ipfs Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: graph-ipfs
containerName: ipfs
image:
repository: ipfs/kubo
tag: v0.28.0
pullPolicy: IfNotPresent
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
volumeMounts:
- mountPath: /data/ipfs
name: data
ports:
- containerPort: 5001
name: api
- containerPort: 8080
name: gateway
volumes:
- name: data
persistentVolumeClaim:
claimName: graph-ipfs-data
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
imagePullSecrets: []
+54
View File
@@ -0,0 +1,54 @@
# Generated from the live lux-mainnet/lux-build Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: lux-build
containerName: build
image:
repository: ghcr.io/luxfi/build
tag: 0.1.14
pullPolicy: IfNotPresent
env:
- name: NODE_ENV
value: production
- name: NEXT_TELEMETRY_DISABLED
value: '1'
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /v1/health
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /v1/health
port: 3000
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+41
View File
@@ -0,0 +1,41 @@
# Generated from the live lux-mainnet/lux-hb2 Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app: lux-hb2
containerName: hb
image:
repository: python
tag: 3.11-slim
pullPolicy: IfNotPresent
command:
- sh
- -c
args:
- "pip install --quiet web3==6.20.1 eth-account 2>/dev/null\npython3 - <<'PY'\nimport os,time\nfrom web3 import Web3\nfrom eth_account import Account\nAccount.enable_unaudited_hdwallet_features()\nw3=Web3(Web3.HTTPProvider(os.environ[\"\
RPC\"]))\nacct=Account.from_mnemonic(os.environ[\"LUX_MNEMONIC\"], account_path=\"m/44'/60'/0'/0/0\")\ncid=w3.eth.chain_id; n=w3.eth.get_transaction_count(acct.address)\nprint(f\"hb2 {acct.address} chain={cid}\
\ n0={n}\",flush=True); i=0\nwhile True:\n try:\n tx={\"to\":acct.address,\"value\":0,\"nonce\":n,\"gas\":21000,\"maxFeePerGas\":w3.to_wei(300,\"gwei\"),\"maxPriorityFeePerGas\":w3.to_wei(2,\"gwei\"\
),\"chainId\":cid}\n w3.eth.send_raw_transaction(acct.sign_transaction(tx).rawTransaction); n+=1; i+=1\n if i%10==0: print(f\"hb2 {i} head={w3.eth.block_number} n={n}\",flush=True)\n except Exception\
\ as e:\n print(\"hb2 err:\",str(e)[:70],flush=True)\n try: n=w3.eth.get_transaction_count(acct.address)\n except: pass\n time.sleep(3)\nPY\n"
env:
- name: RPC
value: http://luxd-0.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc
- name: LUX_MNEMONIC
valueFrom:
secretKeyRef:
key: LUX_MNEMONIC
name: lux-deployer
- name: HB_INTERVAL
value: '15'
resources: {}
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
+74
View File
@@ -0,0 +1,74 @@
# Generated from the live lux-mainnet/lux-indexer Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app: lux-indexer
network: mainnet
containerName: indexerd
image:
repository: ghcr.io/luxfi/indexer
tag: 1.4.4
pullPolicy: IfNotPresent
labels:
network: mainnet
args:
- -config=/etc/lux-indexer/chains.yaml
- -data=/data
- -http=:8091
env:
- name: DATA_DIR
value: /data
- name: HTTP_ADDR
value: :8091
resources:
limits:
cpu: '2'
memory: 4Gi
requests:
cpu: 200m
memory: 512Mi
volumeMounts:
- mountPath: /etc/lux-indexer
name: config
readOnly: true
- mountPath: /data
name: data
livenessProbe:
failureThreshold: 5
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 60
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 10
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
ports:
- containerPort: 8091
name: http
volumes:
- configMap:
name: lux-indexer-config
name: config
- name: data
persistentVolumeClaim:
claimName: lux-indexer-data
imagePullSecrets:
- name: ghcr-luxfi
fsGroup: 65532
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+54
View File
@@ -0,0 +1,54 @@
# Generated from the live lux-mainnet/lux-market Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: lux-market
containerName: market
image:
repository: ghcr.io/luxfi/market
tag: latest
pullPolicy: Always
env:
- name: NODE_ENV
value: production
- name: NEXT_TELEMETRY_DISABLED
value: '1'
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+68
View File
@@ -0,0 +1,68 @@
# Generated from the live lux-mainnet/mainnet-heartbeat Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app: mainnet-heartbeat
containerName: heartbeat
image:
repository: ghcr.io/foundry-rs/foundry
tag: latest
pullPolicy: IfNotPresent
command:
- /bin/sh
- -c
args:
- "set -u\n# ---- hardened C-Chain liveness heartbeat (v2) ----\n# Drives block production on the sole builder luxd-0 (tx-gossip disabled).\n# Robustness:\n# - always sends the self-transfer at the FIRST-UNMINED\
\ nonce -> in-flight\n# txs capped at 1, structurally immune to the pending-nonce backlog that\n# stalled v1 (which used --async with auto-incrementing nonce).\n# - healthy gas = BASE_MULT x base\
\ fee (recomputed each beat, adapts to base).\n# - self-check: if head hasn't advanced for STALL_BEATS beats (or a backlog\n# piled up) -> escalate the gas multiplier so a replacement overrides the\n\
# stuck tx (legacy tx => clean replace-by-fee).\n# - escalation capped at MAX_STEP: a genuine CONSENSUS wedge (not gas) is not\n# curable by price; capped resends get rejected and cost ZERO gas\
\ (gas is\n# only charged on inclusion) -> the key can't be drained by a wedge.\nRPC=\"${RPC:-http://luxd-0.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc}\"\nINTERVAL=\"${INTERVAL:-10}\"\nSTALL_BEATS=\"\
${STALL_BEATS:-3}\"\nBASE_MULT=\"${BASE_MULT:-2}\"\nESC_STEP=\"${ESC_STEP:-3}\"\nMAX_STEP=\"${MAX_STEP:-4}\"\nDEFAULT_BASE=25000000000\nif [ -z \"${HEARTBEAT_KEY:-}\" ]; then echo \"FATAL: HEARTBEAT_KEY\
\ unset\"; exit 1; fi\nSELF=$(cast wallet address --private-key \"$HEARTBEAT_KEY\" 2>/dev/null)\nif [ -z \"$SELF\" ]; then echo \"FATAL: cannot derive address from HEARTBEAT_KEY\"; exit 1; fi\necho \"\
mainnet-heartbeat v2 self=$SELF rpc=$RPC interval=${INTERVAL}s stall=${STALL_BEATS} baseMult=${BASE_MULT}x maxStep=${MAX_STEP}\"\nisnum() { case \"$1\" in ''|*[!0-9]*) return 1;; *) return 0;; esac; }\n\
last_head=\"\"; stall=0; step=0; n=0; b=0\nwhile true; do\n b=$((b+1))\n head=$(cast block-number --rpc-url \"$RPC\" 2>/dev/null)\n latest=$(cast nonce \"$SELF\" --rpc-url \"$RPC\" 2>/dev/null)\n \
\ pending=$(cast nonce \"$SELF\" --block pending --rpc-url \"$RPC\" 2>/dev/null)\n base=$(cast base-fee --rpc-url \"$RPC\" 2>/dev/null)\n isnum \"$base\" || base=$DEFAULT_BASE\n if ! isnum \"$latest\"\
; then\n echo \"$(date -u +%H:%M:%S) WARN rpc unavailable (latest), skip beat b=$b\"\n sleep \"$INTERVAL\"; continue\n fi\n isnum \"$pending\" || pending=$latest\n backlog=$((pending - latest))\n\
\ if isnum \"$head\" && [ \"$head\" = \"$last_head\" ]; then\n stall=$((stall+1))\n else\n stall=0; step=0\n isnum \"$head\" && last_head=\"$head\"\n fi\n if [ \"$stall\" -ge \"$STALL_BEATS\"\
\ ] || [ \"$backlog\" -gt 1 ]; then\n if [ \"$step\" -lt \"$MAX_STEP\" ]; then step=$((step+1)); fi\n stall=0\n echo \"$(date -u +%H:%M:%S) STALL/BACKLOG head=$head latest=$latest pending=$pending\
\ backlog=$backlog -> escalate step=$step\"\n fi\n mult=$((BASE_MULT + step * ESC_STEP))\n price=$((base * mult))\n if cast send \"$SELF\" --value 1 --private-key \"$HEARTBEAT_KEY\" --rpc-url \"$RPC\"\
\ \\\n --legacy --nonce \"$latest\" --gas-price \"$price\" --gas-limit 21000 --async >/dev/null 2>&1; then\n n=$((n+1))\n fi\n if [ $((b % 6)) -eq 1 ]; then\n bal=$(cast balance \"$SELF\"\
\ --rpc-url \"$RPC\" 2>/dev/null)\n echo \"$(date -u +%H:%M:%S) beat b=$b sent=$n head=$head latest=$latest pending=$pending price=$((price/1000000000))gwei step=$step bal=${bal}wei\"\n fi\n sleep\
\ \"$INTERVAL\"\ndone\n"
env:
- name: HEARTBEAT_KEY
valueFrom:
secretKeyRef:
key: HEARTBEAT_KEY
name: mainnet-heartbeat-key
- name: RPC
value: http://luxd-1.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc
- name: INTERVAL
value: '5'
- name: STALL_BEATS
value: '6'
- name: BASE_MULT
value: '2'
- name: ESC_STEP
value: '3'
- name: MAX_STEP
value: '3'
- name: RPC_URL
value: http://luxd-0.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc
- name: LUX_RPC
value: http://luxd-0.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc
resources:
limits:
cpu: 250m
memory: 192Mi
requests:
cpu: 50m
memory: 64Mi
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
imagePullSecrets: []
+63
View File
@@ -0,0 +1,63 @@
# Generated from the live lux-mainnet/maintenance-page Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: maintenance-page
containerName: static
image:
repository: ghcr.io/hanzoai/static
tag: 0.4.1
pullPolicy: IfNotPresent
args:
- --root=/srv
- --spa
- --port=3000
resources:
limits:
cpu: 50m
memory: 32Mi
requests:
cpu: 10m
memory: 16Mi
volumeMounts:
- mountPath: /srv/index.html
name: html
readOnly: true
subPath: index.html
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 2
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
volumes:
- configMap:
name: maintenance-page
name: html
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+92
View File
@@ -0,0 +1,92 @@
# Generated from the live lux-mainnet/maker-amm Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app.kubernetes.io/name: maker-amm
containerName: maker
image:
repository: ghcr.io/foundry-rs/foundry
tag: latest
pullPolicy: IfNotPresent
partOf: lux
component: maker
command:
- /bin/sh
- /app/maker-amm.sh
env:
- name: RPC_URLS
value: http://luxd-0.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc,http://luxd-1.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc,http://luxd-2.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc,http://luxd-3.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc,http://luxd-4.luxd-headless.lux-mainnet:9630/v1/bc/C/rpc
- name: READ_URL
value: http://luxd-rpc.lux-mainnet:9630/v1/bc/C/rpc
- name: FACTORY
value: '0xcf3ccd95c5f2894c7a31d4c185e2e687ac286fc9'
- name: ROUTER
value: '0x80ee16530001b20712413414b2fb4a0f00b06b2c'
- name: BASE
value: '0x634a2398d6085f19d2fdffad87b88d7377c7b8ed'
- name: QUOTE
value: '0x6b23efd9383bee9957c42a50573c1b4944b1b201'
- name: BASE_DEC
value: '18'
- name: QUOTE_DEC
value: '6'
- name: REF
value: '1.0'
- name: BITE_BASE_WEI
value: '10000000000000000000'
- name: BITE_QUOTE_UNITS
value: '10000000'
- name: TILT_DIV
value: '2'
- name: MAX_DEV_BPS
value: '500'
- name: SLIP_BPS
value: '100'
- name: MIN_BASE_WEI
value: '500000000000000000000'
- name: MIN_QUOTE_UNITS
value: '500000000'
- name: MIN_GAS_WEI
value: '50000000000000000000'
- name: INTERVAL
value: '20'
- name: APPROVE_BATCH
value: '20'
- name: STALL_SECS
value: '120'
- name: GAS_MULT
value: '2'
- name: MAKER_KEY
valueFrom:
secretKeyRef:
key: MAKER_KEY
name: maker-amm-key
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
volumeMounts:
- mountPath: /app
name: code
readOnly: true
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
volumes:
- configMap:
name: maker-amm-code
name: code
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 5
defaultReadinessProbe: false
imagePullSecrets: []
+72
View File
@@ -0,0 +1,72 @@
# Generated from the live lux-mainnet/maker-coherence Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app: maker-coherence
image:
repository: ghcr.io/luxfi/maker
tag: sha-267a713
pullPolicy: IfNotPresent
labels:
component: coherence-maker
env:
- name: COHERENCE_MAKER_KEY
valueFrom:
secretKeyRef:
key: COHERENCE_MAKER_KEY
name: maker-coherence-secret
- name: COHERENCE_TAKER_KEY
valueFrom:
secretKeyRef:
key: COHERENCE_TAKER_KEY
name: maker-coherence-secret
envFrom:
- configMapRef:
name: maker-coherence-config
- secretRef:
name: maker-coherence-secret
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 50m
memory: 128Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: metrics
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: metrics
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
ports:
- containerPort: 2112
name: metrics
targetPort: metrics
imagePullSecrets:
- name: ghcr-luxfi
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+72
View File
@@ -0,0 +1,72 @@
# Generated from the live lux-mainnet/maker-hum Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app: maker-hum
image:
repository: ghcr.io/luxfi/maker
tag: sha-4ba9bff
pullPolicy: IfNotPresent
labels:
component: fill-engine
env:
- name: COHERENCE_MAKER_KEY
valueFrom:
secretKeyRef:
key: COHERENCE_MAKER_KEY
name: maker-coherence-secret
- name: COHERENCE_TAKER_KEY
valueFrom:
secretKeyRef:
key: COHERENCE_TAKER_KEY
name: maker-coherence-secret
envFrom:
- configMapRef:
name: maker-hum-config
- secretRef:
name: maker-coherence-secret
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 50m
memory: 128Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: metrics
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: metrics
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
ports:
- containerPort: 2112
name: metrics
targetPort: metrics
imagePullSecrets:
- name: ghcr-luxfi
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+68
View File
@@ -0,0 +1,68 @@
# Generated from the live lux-mainnet/rpc-tip-gate Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app.kubernetes.io/name: rpc-tip-gate
containerName: gate
image:
repository: python
tag: 3.12-alpine
pullPolicy: IfNotPresent
partOf: lux
component: rpc-gate
command:
- python
- -u
- /app/tip_gate.py
env:
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
- name: POD_SELECTOR
value: app.kubernetes.io/name=luxd
- name: RPC_PORT
value: '9630'
- name: RPC_PATH
value: /v1/bc/C/rpc
- name: LABEL_KEY
value: lux.network/rpc
- name: LABEL_VALUE
value: fresh
- name: MAX_LAG_BLOCKS
value: '1'
- name: INTERVAL_SECONDS
value: '10'
- name: PROBE_TIMEOUT_SECONDS
value: '5'
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 10m
memory: 32Mi
volumeMounts:
- mountPath: /app
name: code
readOnly: true
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
volumes:
- configMap:
name: rpc-tip-gate-code
name: code
serviceAccountName: rpc-tip-gate
strategy: Recreate
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 5
defaultReadinessProbe: false
imagePullSecrets: []
@@ -0,0 +1,55 @@
# Generated from the live lux-mainnet/sc-verifier-mainnet Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app: sc-verifier
network: mainnet
containerName: sc-verifier
image:
repository: ghcr.io/luxfi/explorer-sc-verifier
digest: sha256:c45aa19e6350e6f5331b0d86dc40ee1f32e4c83ce5002ad70ed7b20ea56d1908
pullPolicy: IfNotPresent
labels:
chain: cchain
network: mainnet
env:
- name: SMART_CONTRACT_VERIFIER__SERVER__HTTP__ADDR
value: 0.0.0.0:8050
resources:
limits:
cpu: '1'
memory: 1Gi
requests:
cpu: 200m
memory: 256Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8050
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8050
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
ports:
- containerPort: 8050
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
@@ -0,0 +1,51 @@
# Generated from the live lux-mainnet/sig-provider-mainnet Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app: sig-provider
network: mainnet
containerName: sig-provider
image:
repository: ghcr.io/luxfi/explorer-sig-provider
digest: sha256:3f31599258f496896cb476a3f0a7722d7c8f06e53eb5ad2784dbce034d917b9d
pullPolicy: IfNotPresent
labels:
network: mainnet
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8050
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8050
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
ports:
- containerPort: 8050
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+70
View File
@@ -0,0 +1,70 @@
# Generated from the live lux-mainnet/stats-mainnet Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app: stats
network: mainnet
containerName: stats
image:
repository: ghcr.io/luxfi/explorer-stats
tag: main
pullPolicy: IfNotPresent
labels:
network: mainnet
env:
- name: STATS__DB_URL
valueFrom:
secretKeyRef:
key: STATS_MAINNET_DB_URL
name: db-credentials
- name: STATS__BLOCKSCOUT_DB_URL
valueFrom:
secretKeyRef:
key: STATS_MAINNET_DB_URL
name: db-credentials
- name: STATS__CREATE_DATABASE
value: 'false'
- name: STATS__RUN_MIGRATIONS
value: 'true'
- name: STATS__SERVER__HTTP__ADDR
value: 0.0.0.0:8050
- name: STATS__BLOCKSCOUT_API_URL
value: http://explorer-mainnet.lux-mainnet.svc.cluster.local:4000
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8050
scheme: HTTP
initialDelaySeconds: 60
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8050
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
ports:
- containerPort: 8050
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
@@ -0,0 +1,51 @@
# Generated from the live lux-mainnet/visualizer-mainnet Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 0
selectorLabels:
app: visualizer
network: mainnet
containerName: visualizer
image:
repository: ghcr.io/luxfi/explorer-visualizer
tag: main
pullPolicy: IfNotPresent
labels:
network: mainnet
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8050
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8050
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
ports:
- containerPort: 8050
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
imagePullSecrets: []
+70
View File
@@ -0,0 +1,70 @@
# Generated from the live lux-mainnet/wallet-web Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: wallet-web
containerName: web
image:
repository: ghcr.io/luxfi/wallet-web
tag: 07997be04
pullPolicy: IfNotPresent
partOf: wallet-web
labels:
brand: lux
component: web
resources:
limits:
cpu: 250m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
volumeMounts:
- mountPath: /public/brand.json
name: brand
readOnly: true
subPath: brand.json
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
volumes:
- configMap:
name: wallet-web-brand
name: brand
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
ingress:
enabled: true
hosts:
- wallet.lux.network
tls: true
className: ingress
+49
View File
@@ -0,0 +1,49 @@
# Generated from the live lux-mainnet/work-board Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: work-board
image:
repository: ghcr.io/luxfi/work-board
tag: lux-34afd2d
pullPolicy: IfNotPresent
resources:
limits:
memory: 128Mi
requests:
cpu: 10m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+91
View File
@@ -0,0 +1,91 @@
# Generated from the live lux-mpc/mpc-api Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: mpc-api
image:
repository: ghcr.io/luxfi/mpc-api
digest: sha256:844cc4c98e6cbecf0ca11ba672d229d0b1b7d97b8434f9356920f83d0777752e
pullPolicy: Always
partOf: lux-mpc
args:
- api
- --db
- $(DATABASE_URL)
- --listen
- :8081
- --jwt-secret
- $(JWT_SECRET)
- --cluster-url
- http://mpc-node-0.mpc-node-headless.lux-mpc.svc:9800
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
key: DATABASE_URL
name: mpc-secrets
- name: JWT_SECRET
valueFrom:
secretKeyRef:
key: jwt-secret
name: mpc-secrets
- name: MPC_CLUSTER_URL
value: http://mpc-node-0.mpc-node-headless.lux-mpc.svc:8081
- name: REDIS_URL
value: redis://mpc-kv.lux-mpc.svc:6379
- name: KV_URL
value: redis://mpc-kv.lux-mpc.svc:6379
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
volumeMounts:
- mountPath: /tmp
name: tmp
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 8081
scheme: HTTP
initialDelaySeconds: 15
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 8081
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
ports:
- containerPort: 8081
name: api
volumes:
- emptyDir:
sizeLimit: 50Mi
name: tmp
imagePullSecrets:
- name: registry-hanzo
fsGroup: 1000
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+60
View File
@@ -0,0 +1,60 @@
# Generated from the live lux-mpc/mpc-dashboard Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: mpc-dashboard
containerName: dashboard
image:
repository: ghcr.io/luxfi/mpc-dashboard
digest: sha256:ac9397abc3a290a0137a1db1d155b2ef6a31193eb0ff6844c63b269b24be645a
pullPolicy: Always
partOf: lux-mpc
env:
- name: NEXT_PUBLIC_API_URL
value: https://mpc.lux.network/api/v1
- name: NEXT_PUBLIC_IAM_URL
value: https://lux.id
- name: NEXT_PUBLIC_IAM_CLIENT_ID
value: lux-mpc
- name: HOSTNAME
value: 0.0.0.0
resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 50m
memory: 128Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 3000
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
ports:
- containerPort: 3000
name: http
imagePullSecrets:
- name: registry-hanzo
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+32
View File
@@ -0,0 +1,32 @@
# Generated from the live lux-mpc/mpc-kv Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: mpc-kv
containerName: kv
image:
repository: ghcr.io/hanzoai/kv
tag: '9'
pullPolicy: IfNotPresent
partOf: lux-mpc
component: mpc
resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
ports:
- containerPort: 6379
name: valkey
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
imagePullSecrets: []
+30
View File
@@ -0,0 +1,30 @@
# Generated from the live lux-network/lux-network Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app.kubernetes.io/name: lux-network
image:
repository: ghcr.io/lux-apps/network
tag: latest
pullPolicy: Always
env:
- name: PORT
value: '3000'
- name: ROOT
value: /public
resources: {}
ports:
- containerPort: 3000
name: http
servicePort: 80
imagePullSecrets:
- name: ghcr-pull
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
+56
View File
@@ -0,0 +1,56 @@
# Generated from the live lux-ns/dex-api Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: dex-api
containerName: gateway
image:
repository: ghcr.io/luxfi/dex-gateway
tag: latest
pullPolicy: Always
command:
- ./gateway
args:
- -addr=:8080
- -lux-rpc=http://luxd-headless.lux-mainnet.svc:9630/v1/bc/C/rpc
- -zoo-rpc=http://luxd-headless.lux-mainnet.svc:9630/v1/bc/2Y625Kvdd4wZ5LKx9kLSf1jGALyARmXVN1YsTb4F3Hzv4bPDbp/rpc
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8080
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 8080
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 8080
imagePullSecrets:
- name: ghcr-luxfi
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+49
View File
@@ -0,0 +1,49 @@
# Generated from the live lux-ns/dex-docs Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 1
selectorLabels:
app: dex-docs
containerName: docs
image:
repository: ghcr.io/luxfi/dex-docs
tag: latest
pullPolicy: Always
resources:
limits:
cpu: 200m
memory: 128Mi
requests:
cpu: 10m
memory: 32Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 3
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 3000
scheme: HTTP
initialDelaySeconds: 2
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 3000
imagePullSecrets:
- name: ghcr-secret
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+63
View File
@@ -0,0 +1,63 @@
# Generated from the live lux-ns/exchange-api Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: exchange-api
image:
repository: ghcr.io/luxfi/exchange-api
tag: 2.3.11
pullPolicy: IfNotPresent
env:
- name: PORT
value: '4000'
- name: SUBGRAPH_URL
value: http://graph-node.lux-mainnet.svc.cluster.local:8000/subgraphs/name/luxfi/amm-v3
- name: SUBGRAPH_V2_URL
value: http://explorer.lux-mainnet.svc.cluster.local:8090/v1/graph/cchain/amm/graphql
- name: DEX_SUBGRAPH_URL
value: http://explorer.lux-mainnet.svc.cluster.local:8090/v1/graph/cchain/dex/graphql
- name: SUBGRAPH_V3_URL
value: http://graph-node.lux-mainnet.svc.cluster.local:8000/subgraphs/name/luxfi/amm-v3
- name: NETWORK
value: mainnet
- name: LUX_RPC_URL
value: http://luxd-headless.lux-mainnet.svc.cluster.local:9630/v1/bc/C/rpc
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 4000
scheme: HTTP
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 4000
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 4000
imagePullSecrets:
- name: ghcr-secret
- name: ghcr-luxfi-fresh
- name: ghcr-luxfi
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
+36
View File
@@ -0,0 +1,36 @@
# Generated from the live lux-ns/exchange-gw Deployment on do-sfo3-lux-k8s
# by hack/live2values.py. Live is the source: a repo of hand-applied
# manifests has unknown currency, the running fleet does not.
replicas: 2
selectorLabels:
app: exchange-gw
containerName: gateway
image:
repository: ghcr.io/hanzoai/gateway
digest: sha256:017dd6989257c5e86eefba734d5ecb16e1cf4ce2539ef229508156a1ee45b913
pullPolicy: IfNotPresent
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 50m
memory: 64Mi
volumeMounts:
- mountPath: /etc/gateway
name: config
ports:
- containerPort: 8080
volumes:
- configMap:
name: exchange-gw-config
name: config
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
topologySpread:
enabled: false
lifecycle: null
terminationGracePeriodSeconds: 30
defaultReadinessProbe: false
imagePullSecrets: []

Some files were not shown because too many files have changed in this diff Show More