diff --git a/.github/workflows/on-version-tag.yaml b/.github/workflows/on-version-tag.yaml index 75f4312..95d8410 100644 --- a/.github/workflows/on-version-tag.yaml +++ b/.github/workflows/on-version-tag.yaml @@ -12,8 +12,9 @@ jobs: needs: call-validation-workflow uses: blockworks-foundation/mango-explorer/.github/workflows/publish-docker.yaml@main secrets: - DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }} - DOCKER_HUB_ACCESS_TOKEN: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + PROJECT_ID: ${{ secrets.GKE_PROJECT }} + GKE_CLUSTER: ${{ secrets.GKE_CLUSTER }} + GKE_ZONE: ${{ secrets.GKE_ZONE }} call-pypi-workflow: needs: call-validation-workflow uses: blockworks-foundation/mango-explorer/.github/workflows/publish-pypi.yaml@main diff --git a/.github/workflows/publish-docker.yaml b/.github/workflows/publish-docker.yaml index c78400c..6df17df 100644 --- a/.github/workflows/publish-docker.yaml +++ b/.github/workflows/publish-docker.yaml @@ -1,25 +1,73 @@ name: Publish to Docker on: + push: + branches: [main] workflow_call: secrets: - DOCKER_HUB_USERNAME: + GKE_PROJECT: required: true - DOCKER_HUB_ACCESS_TOKEN: + GKE_CLUSTER: required: true - workflow_dispatch: + GKE_ZONE: + required: true + GKE_SA_KEY: + required: true + +env: + PROJECT_ID: ${{ secrets.GKE_PROJECT }} + GKE_CLUSTER: ${{ secrets.GKE_CLUSTER }} + GKE_ZONE: ${{ secrets.GKE_ZONE }} + IMAGE: mango-explorer jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - name: Checkout + uses: actions/checkout@v2 - - name: Login to Docker Hub - uses: docker/login-action@v1 + # Setup gcloud CLI + - uses: google-github-actions/setup-gcloud@94337306dda8180d967a56932ceb4ddcf01edae7 with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + service_account_key: ${{ secrets.GKE_SA_KEY }} + project_id: ${{ secrets.GKE_PROJECT }} - - name: Build the Docker image - run: make docker + # Configure docker to use the gcloud command-line tool as a credential helper + - run: |- + gcloud --quiet auth configure-docker + + # Get the GKE credentials so we can deploy to the cluster + - uses: google-github-actions/get-gke-credentials@fb08709ba27618c31c09e014e1d8364b02e5042e + with: + cluster_name: ${{ env.GKE_CLUSTER }} + location: ${{ env.GKE_ZONE }} + credentials: ${{ secrets.GKE_SA_KEY }} + + # Build the Docker image + - name: Build + run: |- + docker build \ + --tag "gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA" \ + --build-arg GITHUB_SHA="$GITHUB_SHA" \ + --build-arg GITHUB_REF="$GITHUB_REF" \ + . + + # Push the Docker image to Google Container Registry + - name: Publish + run: |- + docker push "gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA" + + # Set up kustomize + - name: Set up Kustomize + run: |- + curl --location https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv4.2.0/kustomize_v4.2.0_linux_amd64.tar.gz | tar xz + chmod u+x ./kustomize + + # Deploy the Docker image to the GKE cluster + - name: Deploy + run: |- + ./kustomize edit set image opinionatedgeek/mango-explorer-v3:latest=gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA + ./kustomize build . | kubectl apply -f - + kubectl get services -o wide + # kubectl rollout status deployment/$DEPLOYMENT_NAME diff --git a/.github/workflows/publish-pypi.yaml b/.github/workflows/publish-pypi.yaml index d34ba20..3fb498f 100644 --- a/.github/workflows/publish-pypi.yaml +++ b/.github/workflows/publish-pypi.yaml @@ -1,12 +1,12 @@ name: Publish to Pypi on: + push: + branches: [main] workflow_call: secrets: PYPI_TOKEN: required: true - python_version: - required: true workflow_dispatch: jobs: diff --git a/.gitignore b/.gitignore index a9b04d1..66f9ef5 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ configuration.json wallet.json id.json private.py +k8s/Secrets diff --git a/k8s/ConfigMaps/cluster.yaml b/k8s/ConfigMaps/cluster.yaml new file mode 100644 index 0000000..f8bbd4f --- /dev/null +++ b/k8s/ConfigMaps/cluster.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: cluster + namespace: mango + labels: + cluster: devnet +data: + CLUSTER_NAME: devnet + CLUSTER_URL: https://mango.devnet.rpcpool.com/ + GROUP_NAME: devnet.2 diff --git a/k8s/ConfigMaps/notification-targets.yaml b/k8s/ConfigMaps/notification-targets.yaml new file mode 100644 index 0000000..f36a810 --- /dev/null +++ b/k8s/ConfigMaps/notification-targets.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: notification-targets + namespace: mango +data: + ERRORS_TELEGRAM: redacted + ERRORS_DISCORD: discord:https://discord.com/api/webhooks/854806231054417940/cGVpSBiypgMQu2_sJGlrkxl95W7Ucsd4uoNuY9Qg1kr1y1YZ6di6aQLEHJ9Kfk5HMY5c + \ No newline at end of file diff --git a/k8s/Cranks/crank-btc-perp.yaml b/k8s/Cranks/crank-btc-perp.yaml new file mode 100644 index 0000000..befe4ab --- /dev/null +++ b/k8s/Cranks/crank-btc-perp.yaml @@ -0,0 +1,77 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: crank-btc-perp + labels: + app: crank-market-service + cluster: devnet + marketType: perp + market: "BTC_USDC" +spec: + replicas: 1 + selector: + matchLabels: + app: crank-btc-perp + template: + metadata: + labels: + app: crank-btc-perp + spec: + containers: + - name: crank-btc-perp + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 128Mi + requests: + memory: 16Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - crank-market-service + - "BTC-PERP" + - "5" + - "1" + livenessProbe: + exec: + command: + - file-age-check + - "60" + - /var/tmp/mango_healthcheck_crank_market_service + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_crank_market_service + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - ensure-account + - --wait diff --git a/k8s/Cranks/crank-btc-usdc-serum.yaml b/k8s/Cranks/crank-btc-usdc-serum.yaml new file mode 100644 index 0000000..794573e --- /dev/null +++ b/k8s/Cranks/crank-btc-usdc-serum.yaml @@ -0,0 +1,103 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: crank-btc-usdc-serum + labels: + app: crank-market-service + cluster: devnet + marketType: serum + market: "BTC_USDC" +spec: + replicas: 1 + selector: + matchLabels: + app: crank-btc-usdc-serum + template: + metadata: + labels: + app: crank-btc-usdc-serum + spec: + containers: + - name: crank-btc-usdc-serum + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 128Mi + requests: + memory: 16Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - crank-market-service + - "serum:BTC/USDC" + - "5" + - "1" + livenessProbe: + exec: + command: + - file-age-check + - "60" + - /var/tmp/mango_healthcheck_crank_market_service + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_crank_market_service + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - ensure-account + - --wait + - name: ensure-base-token-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - ensure-associated-token-account + - --symbol + - BTC + - name: ensure-quote-token-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - ensure-associated-token-account + - --symbol + - USDC diff --git a/k8s/Cranks/crank-eth-usdc-serum.yaml b/k8s/Cranks/crank-eth-usdc-serum.yaml new file mode 100644 index 0000000..a47c193 --- /dev/null +++ b/k8s/Cranks/crank-eth-usdc-serum.yaml @@ -0,0 +1,103 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: crank-eth-usdc-serum + labels: + app: crank-market-service + cluster: devnet + marketType: serum + market: "ETH_USDC" +spec: + replicas: 1 + selector: + matchLabels: + app: crank-eth-usdc-serum + template: + metadata: + labels: + app: crank-eth-usdc-serum + spec: + containers: + - name: crank-eth-usdc-serum + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 128Mi + requests: + memory: 16Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - crank-market-service + - "serum:ETH/USDC" + - "5" + - "1" + livenessProbe: + exec: + command: + - file-age-check + - "60" + - /var/tmp/mango_healthcheck_crank_market_service + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_crank_market_service + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - ensure-account + - --wait + - name: ensure-base-token-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - ensure-associated-token-account + - --symbol + - ETH + - name: ensure-quote-token-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - ensure-associated-token-account + - --symbol + - USDC diff --git a/k8s/Cranks/crank-sol-usdc-serum.yaml b/k8s/Cranks/crank-sol-usdc-serum.yaml new file mode 100644 index 0000000..15f83f6 --- /dev/null +++ b/k8s/Cranks/crank-sol-usdc-serum.yaml @@ -0,0 +1,103 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: crank-sol-usdc-serum + labels: + app: crank-market-service + cluster: devnet + marketType: serum + market: "SOL_USDC" +spec: + replicas: 1 + selector: + matchLabels: + app: crank-sol-usdc-serum + template: + metadata: + labels: + app: crank-sol-usdc-serum + spec: + containers: + - name: crank-sol-usdc-serum + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 128Mi + requests: + memory: 16Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - crank-market-service + - "serum:SOL/USDC" + - "5" + - "1" + livenessProbe: + exec: + command: + - file-age-check + - "60" + - /var/tmp/mango_healthcheck_crank_market_service + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_crank_market_service + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - ensure-account + - --wait + - name: ensure-base-token-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - ensure-associated-token-account + - --symbol + - SOL + - name: ensure-quote-token-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - ensure-associated-token-account + - --symbol + - USDC diff --git a/k8s/Cranks/keeper.yaml b/k8s/Cranks/keeper.yaml new file mode 100644 index 0000000..784991e --- /dev/null +++ b/k8s/Cranks/keeper.yaml @@ -0,0 +1,57 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: keeper + labels: + app: keeper + cluster: devnet +spec: + replicas: 1 + selector: + matchLabels: + app: keeper + template: + metadata: + labels: + app: keeper + spec: + containers: + - name: keeper + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 128Mi + requests: + memory: 16Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: crank + - configMapRef: + name: cluster + command: + - keeper + - --pulse-interval + - "1" + - --skip-interval + - "5" + - --log-level + - CRITICAL + livenessProbe: + exec: + command: + - file-age-check + - "10" + - /var/tmp/mango_healthcheck_keeper + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + failureThreshold: 3 + restartPolicy: Always diff --git a/k8s/MarketMakers/marketmaker-ada-perp.yaml b/k8s/MarketMakers/marketmaker-ada-perp.yaml new file mode 100644 index 0000000..21a241e --- /dev/null +++ b/k8s/MarketMakers/marketmaker-ada-perp.yaml @@ -0,0 +1,136 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-ada-perp + labels: + app: marketmaker + cluster: devnet + marketType: perp + market: ADA_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-ada-perp + template: + metadata: + labels: + app: marketmaker-ada-perp + spec: + containers: + - name: marketmaker-ada-perp + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --name + - "ADA-PERP Marketmaker ($(NODE_NAME))" + - --market + - perp:ADA-PERP + - --update-mode + - POLL + - --oracle-provider + - ftx + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.05" + - --ratios-position-size + - "0.07" + - --ratios-position-size + - "0.09" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY_SLIDE + - --expire-seconds + - "15" + - --match-limit + - "10" + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --market + - perp:ADA-PERP + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-avax-perp.yaml b/k8s/MarketMakers/marketmaker-avax-perp.yaml new file mode 100644 index 0000000..d768760 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-avax-perp.yaml @@ -0,0 +1,136 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-avax-perp + labels: + app: marketmaker + cluster: devnet + marketType: perp + market: AVAX_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-avax-perp + template: + metadata: + labels: + app: marketmaker-avax-perp + spec: + containers: + - name: marketmaker-avax-perp + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --name + - "AVAX-PERP Marketmaker ($(NODE_NAME))" + - --market + - perp:AVAX-PERP + - --update-mode + - POLL + - --oracle-provider + - ftx + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.05" + - --ratios-position-size + - "0.07" + - --ratios-position-size + - "0.09" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY_SLIDE + - --expire-seconds + - "15" + - --match-limit + - "10" + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --market + - perp:AVAX-PERP + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-btc-perp.yaml b/k8s/MarketMakers/marketmaker-btc-perp.yaml new file mode 100644 index 0000000..f417489 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-btc-perp.yaml @@ -0,0 +1,140 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-btc-perp + labels: + app: marketmaker + cluster: devnet + marketType: perp + market: BTC_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-btc-perp + template: + metadata: + labels: + app: marketmaker-btc-perp + spec: + containers: + - name: marketmaker-btc-perp + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --name + - "BTC-PERP Marketmaker ($(NODE_NAME))" + - --market + - perp:BTC-PERP + - --update-mode + - POLL + - --oracle-provider + - ftx + - --hedging-market + - "BTC/USDC" + - --hedging-target-balance + - "BTC:10" + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.05" + - --ratios-position-size + - "0.07" + - --ratios-position-size + - "0.09" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY_SLIDE + - --expire-seconds + - "15" + - --match-limit + - "10" + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --market + - perp:BTC-PERP + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-btc-usdc-serum.yaml b/k8s/MarketMakers/marketmaker-btc-usdc-serum.yaml new file mode 100644 index 0000000..f97b467 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-btc-usdc-serum.yaml @@ -0,0 +1,144 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-btc-usdc-serum + labels: + app: marketmaker + cluster: devnet + marketType: serum + market: BTC_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-btc-usdc-serum + template: + metadata: + labels: + app: marketmaker-btc-usdc-serum + spec: + containers: + - name: marketmaker-btc-usdc-serum + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-serum + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --name + - "Serum BTC/USDC Marketmaker ($(NODE_NAME))" + - --market + - serum:BTC/USDC + - --update-mode + - POLL + - --oracle-provider + - ftx + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.001" + - --ratios-position-size + - "0.002" + - --ratios-position-size + - "0.004" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - preventpostonlycrossingbook + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-serum + - configMapRef: + name: cluster + command: + - ensure-account + - --wait + - --log-level + - CRITICAL + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-serum + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --market + - serum:BTC/USDC + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-btc-usdc.yaml b/k8s/MarketMakers/marketmaker-btc-usdc.yaml new file mode 100644 index 0000000..041fb25 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-btc-usdc.yaml @@ -0,0 +1,134 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-btc-usdc + labels: + app: marketmaker + cluster: devnet + marketType: spot + market: BTC_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-btc-usdc + template: + metadata: + labels: + app: marketmaker-btc-usdc + spec: + containers: + - name: marketmaker-btc-usdc + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - "4YrB6JTUpn9ratAyxbX6t4fL4HPf46kDzzBgHdnBmY1Q" + - --name + - "Spot BTC/USDC Marketmaker ($(NODE_NAME))" + - --market + - spot:BTC/USDC + - --update-mode + - POLL + - --oracle-provider + - ftx + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.0005" + - --ratios-position-size + - "0.0005" + - --ratios-position-size + - "0.0005" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - preventpostonlycrossingbook + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - "4YrB6JTUpn9ratAyxbX6t4fL4HPf46kDzzBgHdnBmY1Q" + - --market + - spot:BTC/USDC + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-eth-perp.yaml b/k8s/MarketMakers/marketmaker-eth-perp.yaml new file mode 100644 index 0000000..c7727b3 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-eth-perp.yaml @@ -0,0 +1,140 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-eth-perp + labels: + app: marketmaker + cluster: devnet + marketType: perp + market: ETH_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-eth-perp + template: + metadata: + labels: + app: marketmaker-eth-perp + spec: + containers: + - name: marketmaker-eth-perp + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --name + - "ETH-PERP Marketmaker ($(NODE_NAME))" + - --market + - perp:ETH-PERP + - --update-mode + - POLL + - --oracle-provider + - ftx + - --hedging-market + - "ETH/USDC" + - --hedging-target-balance + - "ETH:10" + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.05" + - --ratios-position-size + - "0.07" + - --ratios-position-size + - "0.09" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY_SLIDE + - --expire-seconds + - "15" + - --match-limit + - "10" + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --market + - perp:ETH-PERP + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-eth-usdc-serum.yaml b/k8s/MarketMakers/marketmaker-eth-usdc-serum.yaml new file mode 100644 index 0000000..966a0ee --- /dev/null +++ b/k8s/MarketMakers/marketmaker-eth-usdc-serum.yaml @@ -0,0 +1,144 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-eth-usdc-serum + labels: + app: marketmaker + cluster: devnet + marketType: serum + market: ERH_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-eth-usdc-serum + template: + metadata: + labels: + app: marketmaker-eth-usdc-serum + spec: + containers: + - name: marketmaker-eth-usdc-serum + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-serum + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --name + - "Serum ETH/USDC Marketmaker ($(NODE_NAME))" + - --market + - serum:ETH/USDC + - --update-mode + - POLL + - --oracle-provider + - ftx + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.001" + - --ratios-position-size + - "0.002" + - --ratios-position-size + - "0.004" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - preventpostonlycrossingbook + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-serum + - configMapRef: + name: cluster + command: + - ensure-account + - --wait + - --log-level + - CRITICAL + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-serum + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --market + - serum:ETH/USDC + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-eth-usdc.yaml b/k8s/MarketMakers/marketmaker-eth-usdc.yaml new file mode 100644 index 0000000..e38cd75 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-eth-usdc.yaml @@ -0,0 +1,134 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-eth-usdc + labels: + app: marketmaker + cluster: devnet + marketType: spot + market: ETH_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-eth-usdc + template: + metadata: + labels: + app: marketmaker-eth-usdc + spec: + containers: + - name: marketmaker-eth-usdc + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - "4YrB6JTUpn9ratAyxbX6t4fL4HPf46kDzzBgHdnBmY1Q" + - --name + - "Spot ETH/USDC Marketmaker ($(NODE_NAME))" + - --market + - spot:ETH/USDC + - --update-mode + - POLL + - --oracle-provider + - ftx + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.01" + - --ratios-position-size + - "0.02" + - --ratios-position-size + - "0.04" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - preventpostonlycrossingbook + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - "4YrB6JTUpn9ratAyxbX6t4fL4HPf46kDzzBgHdnBmY1Q" + - --market + - spot:ETH/USDC + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-ftt-perp.yaml b/k8s/MarketMakers/marketmaker-ftt-perp.yaml new file mode 100644 index 0000000..2b1a893 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-ftt-perp.yaml @@ -0,0 +1,140 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-ftt-perp + labels: + app: marketmaker + cluster: devnet + marketType: perp + market: FTT_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-ftt-perp + template: + metadata: + labels: + app: marketmaker-ftt-perp + spec: + containers: + - name: marketmaker-ftt-perp + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --name + - "FTT-PERP Marketmaker ($(NODE_NAME))" + - --market + - perp:FTT-PERP + - --update-mode + - POLL + - --oracle-provider + - ftx + - --hedging-market + - "FTT/USDC" + - --hedging-target-balance + - "FTT:10" + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.05" + - --ratios-position-size + - "0.07" + - --ratios-position-size + - "0.09" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY_SLIDE + - --expire-seconds + - "15" + - --match-limit + - "10" + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --market + - perp:FTT-PERP + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-ftt-usdc.yaml b/k8s/MarketMakers/marketmaker-ftt-usdc.yaml new file mode 100644 index 0000000..6d2237b --- /dev/null +++ b/k8s/MarketMakers/marketmaker-ftt-usdc.yaml @@ -0,0 +1,132 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-ftt-usdc + labels: + app: marketmaker + cluster: devnet + marketType: spot + market: FTT_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-ftt-usdc + template: + metadata: + labels: + app: marketmaker-ftt-usdc + spec: + containers: + - name: marketmaker-ftt-usdc + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - AEA9S5jjSkuAhjZrLuCw3aXGdYg6pqsMQAYS5KodkCD4 + - --name + - "Spot FTT/USDC Marketmaker ($(NODE_NAME))" + - --market + - spot:FTT/USDC + - --update-mode + - POLL + - --oracle-provider + - ftx + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.0005" + - --ratios-position-size + - "0.001" + - --ratios-position-size + - "0.0015" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - preventpostonlycrossingbook + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --order-type + - POST_ONLY + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - AEA9S5jjSkuAhjZrLuCw3aXGdYg6pqsMQAYS5KodkCD4 + - --market + - spot:FTT/USDC + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-matic-perp.yaml b/k8s/MarketMakers/marketmaker-matic-perp.yaml new file mode 100644 index 0000000..f02cc5c --- /dev/null +++ b/k8s/MarketMakers/marketmaker-matic-perp.yaml @@ -0,0 +1,136 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-matic-perp + labels: + app: marketmaker + cluster: devnet + marketType: perp + market: MATIC_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-matic-perp + template: + metadata: + labels: + app: marketmaker-matic-perp + spec: + containers: + - name: marketmaker-matic-perp + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --name + - "MATIC-PERP Marketmaker ($(NODE_NAME))" + - --market + - perp:MATIC-PERP + - --update-mode + - POLL + - --oracle-provider + - ftx + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.05" + - --ratios-position-size + - "0.07" + - --ratios-position-size + - "0.09" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY_SLIDE + - --expire-seconds + - "15" + - --match-limit + - "10" + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --market + - perp:MATIC-PERP + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-mngo-perp.yaml b/k8s/MarketMakers/marketmaker-mngo-perp.yaml new file mode 100644 index 0000000..42b6dd8 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-mngo-perp.yaml @@ -0,0 +1,140 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-mngo-perp + labels: + app: marketmaker + cluster: devnet + marketType: perp + market: MNGO_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-mngo-perp + template: + metadata: + labels: + app: marketmaker-mngo-perp + spec: + containers: + - name: marketmaker-mngo-perp + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --name + - "MNGO-PERP Marketmaker ($(NODE_NAME))" + - --market + - perp:MNGO-PERP + - --update-mode + - POLL + - --oracle-provider + - ftx + - --hedging-market + - "MNGO/USDC" + - --hedging-target-balance + - "MNGO:10" + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.05" + - --ratios-position-size + - "0.07" + - --ratios-position-size + - "0.09" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY_SLIDE + - --expire-seconds + - "15" + - --match-limit + - "10" + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --market + - perp:MNGO-PERP + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-mngo-usdc.yaml b/k8s/MarketMakers/marketmaker-mngo-usdc.yaml new file mode 100644 index 0000000..4282aaa --- /dev/null +++ b/k8s/MarketMakers/marketmaker-mngo-usdc.yaml @@ -0,0 +1,134 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-mngo-usdc + labels: + app: marketmaker + cluster: devnet + marketType: spot + market: MNGO_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-mngo-usdc + template: + metadata: + labels: + app: marketmaker-mngo-usdc + spec: + containers: + - name: marketmaker-mngo-usdc + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - AEA9S5jjSkuAhjZrLuCw3aXGdYg6pqsMQAYS5KodkCD4 + - --name + - "Spot MNGO/USDC Marketmaker ($(NODE_NAME))" + - --market + - spot:MNGO/USDC + - --update-mode + - POLL + - --oracle-provider + - ftx + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.05" + - --ratios-position-size + - "0.07" + - --ratios-position-size + - "0.09" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - preventpostonlycrossingbook + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - AEA9S5jjSkuAhjZrLuCw3aXGdYg6pqsMQAYS5KodkCD4 + - --market + - spot:MNGO/USDC + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-ray-usdc.yaml b/k8s/MarketMakers/marketmaker-ray-usdc.yaml new file mode 100644 index 0000000..b146192 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-ray-usdc.yaml @@ -0,0 +1,134 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-ray-usdc + labels: + app: marketmaker + cluster: devnet + marketType: spot + market: RAY_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-ray-usdc + template: + metadata: + labels: + app: marketmaker-ray-usdc + spec: + containers: + - name: marketmaker-ray-usdc + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - AEA9S5jjSkuAhjZrLuCw3aXGdYg6pqsMQAYS5KodkCD4 + - --name + - "Spot RAY/USDC Marketmaker ($(NODE_NAME))" + - --market + - spot:RAY/USDC + - --update-mode + - POLL + - --oracle-provider + - stub + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.05" + - --ratios-position-size + - "0.07" + - --ratios-position-size + - "0.09" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - preventpostonlycrossingbook + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - AEA9S5jjSkuAhjZrLuCw3aXGdYg6pqsMQAYS5KodkCD4 + - --market + - spot:RAY/USDC + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-sol-perp.yaml b/k8s/MarketMakers/marketmaker-sol-perp.yaml new file mode 100644 index 0000000..f90e653 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-sol-perp.yaml @@ -0,0 +1,140 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-sol-perp + labels: + app: marketmaker + cluster: devnet + marketType: perp + market: SOL_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-sol-perp + template: + metadata: + labels: + app: marketmaker-sol-perp + spec: + containers: + - name: marketmaker-sol-perp + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --name + - "SOL-PERP Marketmaker ($(NODE_NAME))" + - --market + - perp:SOL-PERP + - --update-mode + - POLL + - --oracle-provider + - ftx + - --hedging-market + - "SOL/USDC" + - --hedging-target-balance + - "SOL:10" + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.01" + - --ratios-position-size + - "0.02" + - --ratios-position-size + - "0.04" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY_SLIDE + - --expire-seconds + - "15" + - --match-limit + - "10" + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu + - --market + - perp:SOL-PERP + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-sol-usdc.yaml b/k8s/MarketMakers/marketmaker-sol-usdc.yaml new file mode 100644 index 0000000..3155d55 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-sol-usdc.yaml @@ -0,0 +1,132 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-sol-usdc + labels: + app: marketmaker + cluster: devnet + marketType: spot + market: SOL_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-sol-usdc + template: + metadata: + labels: + app: marketmaker-sol-usdc + spec: + containers: + - name: marketmaker-sol-usdc + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - "4YrB6JTUpn9ratAyxbX6t4fL4HPf46kDzzBgHdnBmY1Q" + - --name + - "Spot SOL/USDC Marketmaker ($(NODE_NAME))" + - --market + - spot:SOL/USDC + - --update-mode + - POLL + - --oracle-provider + - ftx + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.0005" + - --ratios-position-size + - "0.001" + - --ratios-position-size + - "0.0015" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - preventpostonlycrossingbook + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --order-type + - POST_ONLY + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - "4YrB6JTUpn9ratAyxbX6t4fL4HPf46kDzzBgHdnBmY1Q" + - --market + - spot:SOL/USDC + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-srm-usdc.yaml b/k8s/MarketMakers/marketmaker-srm-usdc.yaml new file mode 100644 index 0000000..edfb072 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-srm-usdc.yaml @@ -0,0 +1,132 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-srm-usdc + labels: + app: marketmaker + cluster: devnet + marketType: spot + market: SRM_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-srm-usdc + template: + metadata: + labels: + app: marketmaker-srm-usdc + spec: + containers: + - name: marketmaker-srm-usdc + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - AEA9S5jjSkuAhjZrLuCw3aXGdYg6pqsMQAYS5KodkCD4 + - --name + - "Spot SRM/USDC Marketmaker ($(NODE_NAME))" + - --market + - spot:SRM/USDC + - --update-mode + - POLL + - --oracle-provider + - ftx + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.0005" + - --ratios-position-size + - "0.001" + - --ratios-position-size + - "0.0015" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - preventpostonlycrossingbook + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --order-type + - POST_ONLY + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - AEA9S5jjSkuAhjZrLuCw3aXGdYg6pqsMQAYS5KodkCD4 + - --market + - spot:SRM/USDC + - --log-level + - CRITICAL diff --git a/k8s/MarketMakers/marketmaker-usdt-usdc.yaml b/k8s/MarketMakers/marketmaker-usdt-usdc.yaml new file mode 100644 index 0000000..939a981 --- /dev/null +++ b/k8s/MarketMakers/marketmaker-usdt-usdc.yaml @@ -0,0 +1,134 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: marketmaker-usdt-usdc + labels: + app: marketmaker + cluster: devnet + marketType: spot + market: USDT_USDC +spec: + replicas: 1 + selector: + matchLabels: + app: marketmaker-usdt-usdc + template: + metadata: + labels: + app: marketmaker-usdt-usdc + spec: + containers: + - name: marketmaker-usdt-usdc + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 256Mi + requests: + memory: 64Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + command: + - marketmaker + - --account-address + - AEA9S5jjSkuAhjZrLuCw3aXGdYg6pqsMQAYS5KodkCD4 + - --name + - "Spot USDT/USDC Marketmaker ($(NODE_NAME))" + - --market + - spot:USDT/USDC + - --update-mode + - POLL + - --oracle-provider + - ftx + - --chain + - ratios + - --ratios-spread + - "0.005" + - --ratios-spread + - "0.010" + - --ratios-spread + - "0.015" + - --ratios-position-size + - "0.0005" + - --ratios-position-size + - "0.001" + - --ratios-position-size + - "0.0015" + - --chain + - minimumcharge + - --minimumcharge-ratio + - "0.001" + - --chain + - biasquoteonposition + - --biasquoteonposition-bias + - "0.00005" + - --chain + - preventpostonlycrossingbook + - --chain + - roundtolotsize + - --redeem-threshold + - "1" + - --existing-order-tolerance + - "0.0001" + - --minimumcharge-ratio + - "0.0001" + - --pulse-interval + - "10" + - --order-type + - POST_ONLY + - --blockhash-cache-duration + - "30" + - --log-level + - CRITICAL + - --log-suppress-timestamp + # - --notify-errors + # - $(ERRORS_TELEGRAM) + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_marketmaker_pulse + initialDelaySeconds: 30 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-openorders + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: marketmaker-delegate + - configMapRef: + name: cluster + command: + - ensure-open-orders + - --account-address + - AEA9S5jjSkuAhjZrLuCw3aXGdYg6pqsMQAYS5KodkCD4 + - --market + - spot:USDT/USDC + - --log-level + - CRITICAL diff --git a/k8s/RandomTakers/random-taker-btc-perp.yaml b/k8s/RandomTakers/random-taker-btc-perp.yaml new file mode 100644 index 0000000..cc69b94 --- /dev/null +++ b/k8s/RandomTakers/random-taker-btc-perp.yaml @@ -0,0 +1,77 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: random-taker-btc-perp + labels: + app: random-taker + cluster: devnet + marketType: perp + market: "BTC_USDC" +spec: + replicas: 1 + selector: + matchLabels: + app: random-taker-btc-perp + template: + metadata: + labels: + app: random-taker-btc-perp + spec: + containers: + - name: random-taker-btc-perp + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 128Mi + requests: + memory: 16Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: random-taker + - configMapRef: + name: cluster + command: + - random-taker + - "BTC-PERP" + - "0.6" + - "500" + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_random_taker + initialDelaySeconds: 60 + periodSeconds: 120 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_random_taker + initialDelaySeconds: 120 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: random-taker + - configMapRef: + name: cluster + command: + - ensure-account + - --wait diff --git a/k8s/RandomTakers/random-taker-btc-usdc.yaml b/k8s/RandomTakers/random-taker-btc-usdc.yaml new file mode 100644 index 0000000..8a78bed --- /dev/null +++ b/k8s/RandomTakers/random-taker-btc-usdc.yaml @@ -0,0 +1,77 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: random-taker-btc-usdc + labels: + app: random-taker + cluster: devnet + marketType: spot + market: "BTC_USDC" +spec: + replicas: 1 + selector: + matchLabels: + app: random-taker-btc-usdc + template: + metadata: + labels: + app: random-taker-btc-usdc + spec: + containers: + - name: random-taker-btc-usdc + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 128Mi + requests: + memory: 16Mi + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + envFrom: + - secretRef: + name: random-taker + - configMapRef: + name: cluster + command: + - random-taker + - "BTC/USDC" + - "0.6" + - "500" + livenessProbe: + exec: + command: + - file-age-check + - "180" + - /var/tmp/mango_healthcheck_random_taker + initialDelaySeconds: 60 + periodSeconds: 120 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_random_taker + initialDelaySeconds: 120 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always + initContainers: + - name: ensure-account + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + envFrom: + - secretRef: + name: random-taker + - configMapRef: + name: cluster + command: + - ensure-account + - --wait diff --git a/k8s/Watchers/watch-minimum-balances.yaml b/k8s/Watchers/watch-minimum-balances.yaml new file mode 100644 index 0000000..9c74fba --- /dev/null +++ b/k8s/Watchers/watch-minimum-balances.yaml @@ -0,0 +1,90 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + namespace: mango + name: watch-minimum-balances + labels: + app: watch-minimum-balances + cluster: devnet +spec: + replicas: 1 + selector: + matchLabels: + app: watch-minimum-balances + template: + metadata: + labels: + app: watch-minimum-balances + spec: + containers: + - name: watch-minimum-balances + image: opinionatedgeek/mango-explorer-v3:latest + imagePullPolicy: Always + terminationMessagePolicy: FallbackToLogsOnError + resources: + limits: + memory: 96Mi + requests: + memory: 64Mi + envFrom: + - configMapRef: + name: cluster + - configMapRef: + name: notification-targets + env: + - name: NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + - name: CLUSTER_URL + value: https://stage.devnet.rpcpool.com + command: + - watch-minimum-balances + - "--name" + - "Devnet Minimum Balances Watcher ($(NODE_NAME))" + - "--named-address" + - "Oracle:GXdZLSvnreqyUd92tXFShpF8DPvpqDBRkukAtraZ3rCf" + - "--named-address" + - "SpotMarketMaker1:DeekJBiqzJkTtoCPSiep8MTd7VHMmpCKX5sA47w3uury" + - "--named-address" + - "SpotMarketMaker2:DeekL8y7tCacJ6Xt71kVtGawnDRXW4g4AzRDHtPkDohx" + - "--named-address" + - "PerpMarketMaker:DeekRPADRMqm4t8s53AkKLbdCpQeMbuu2SNysvTvmYNs" + - "--named-address" + - "SerumMarketMaker:DeekStXXJm3ogsbkw8WsoN1mT4c19t6qXLPEBLUn8KWR" + - "--named-address" + - "RandomTaker:DeekL3W31SyCkQezqztjvxkbJcst1xaEbtnqbN6g48Zt" + - "--named-address" + - "Crank:DeekVH69bVFXqwoxvGGBZoJ1ghWBNdwuUtTnQm7AHCaf" + - "--named-address" + - "MarketMakerDelegate:DeekoiXaCikm3tB3h7Wyorsk6q1bxeQVzaWEji8FXTMM" + - "--minimum-sol-balance" + - "0.5" + - --log-level + - CRITICAL + # - --notify + # - $(ERRORS_TELEGRAM) + - --notify + - $(ERRORS_DISCORD) + # - --notify-events + # - $(ERRORS_TELEGRAM) + - --log-suppress-timestamp + livenessProbe: + exec: + command: + - file-age-check + - "60" + - /var/tmp/mango_healthcheck_ws_pong + initialDelaySeconds: 30 + periodSeconds: 60 + successThreshold: 1 + failureThreshold: 3 + readinessProbe: + exec: + command: + - cat + - /var/tmp/mango_healthcheck_ws_pong + initialDelaySeconds: 10 + failureThreshold: 12 + periodSeconds: 5 + restartPolicy: Always diff --git a/k8s/limits.yaml b/k8s/limits.yaml new file mode 100644 index 0000000..7505969 --- /dev/null +++ b/k8s/limits.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: LimitRange +metadata: + namespace: mango + name: mango-limits + annotations: + type: live +spec: + limits: + - default: + cpu: 0.5 + memory: 128Mi + defaultRequest: + cpu: 0.25 + memory: 64Mi + type: Container diff --git a/k8s/namespaces.yaml b/k8s/namespaces.yaml new file mode 100644 index 0000000..89917e7 --- /dev/null +++ b/k8s/namespaces.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: List +items: + - apiVersion: v1 + kind: Namespace + metadata: + name: mango + annotations: + type: live + - apiVersion: v1 + kind: Namespace + metadata: + name: monitoring + annotations: + type: live + labels: + app: operations diff --git a/kustomization.yml b/kustomization.yml new file mode 100644 index 0000000..51ee024 --- /dev/null +++ b/kustomization.yml @@ -0,0 +1,53 @@ +# Copyright 2019 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - k8s/namespaces.yaml + - k8s/limits.yaml + - k8s/ConfigMaps/cluster.yaml + - k8s/ConfigMaps/notification-targets.yaml + # - k8s/Secrets/crank.yaml + # - k8s/Secrets/marketmaker-delegate.yaml + # - k8s/Secrets/marketmaker-perp.yaml + # - k8s/Secrets/marketmaker-serum.yaml + # - k8s/Secrets/marketmaker-spot-1.yaml + # - k8s/Secrets/marketmaker-spot-2.yaml + # - k8s/Secrets/random-taker.yaml + - k8s/Cranks/crank-btc-perp.yaml + - k8s/Cranks/crank-btc-usdc-serum.yaml + - k8s/Cranks/crank-eth-usdc-serum.yaml + - k8s/Cranks/crank-sol-usdc-serum.yaml + - k8s/Cranks/keeper.yaml + - k8s/RandomTakers/random-taker-btc-perp.yaml + - k8s/RandomTakers/random-taker-btc-usdc.yaml + - k8s/MarketMakers/marketmaker-ada-perp.yaml + - k8s/MarketMakers/marketmaker-avax-perp.yaml + - k8s/MarketMakers/marketmaker-btc-perp.yaml + - k8s/MarketMakers/marketmaker-btc-usdc-serum.yaml + - k8s/MarketMakers/marketmaker-btc-usdc.yaml + - k8s/MarketMakers/marketmaker-eth-perp.yaml + - k8s/MarketMakers/marketmaker-eth-usdc-serum.yaml + - k8s/MarketMakers/marketmaker-eth-usdc.yaml + - k8s/MarketMakers/marketmaker-ftt-perp.yaml + - k8s/MarketMakers/marketmaker-ftt-usdc.yaml + - k8s/MarketMakers/marketmaker-matic-perp.yaml + - k8s/MarketMakers/marketmaker-mngo-perp.yaml + - k8s/MarketMakers/marketmaker-mngo-usdc.yaml + - k8s/MarketMakers/marketmaker-ray-usdc.yaml + - k8s/MarketMakers/marketmaker-sol-perp.yaml + - k8s/MarketMakers/marketmaker-sol-usdc.yaml + - k8s/MarketMakers/marketmaker-srm-usdc.yaml + - k8s/MarketMakers/marketmaker-usdt-usdc.yaml