mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
56
.github/workflows/platform-autogpt-infra-ci.yml
vendored
56
.github/workflows/platform-autogpt-infra-ci.yml
vendored
@@ -1,56 +0,0 @@
|
||||
name: AutoGPT Platform - Infra
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master, dev ]
|
||||
paths:
|
||||
- '.github/workflows/platform-autogpt-infra-ci.yml'
|
||||
- 'autogpt_platform/infra/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/platform-autogpt-infra-ci.yml'
|
||||
- 'autogpt_platform/infra/**'
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
working-directory: autogpt_platform/infra
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: TFLint
|
||||
uses: pauloconnor/tflint-action@v0.0.2
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tflint_path: terraform/
|
||||
tflint_recurse: true
|
||||
tflint_changed_only: false
|
||||
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v4
|
||||
with:
|
||||
version: v3.14.4
|
||||
|
||||
- name: Set up chart-testing
|
||||
uses: helm/chart-testing-action@v2.6.1
|
||||
|
||||
- name: Run chart-testing (list-changed)
|
||||
id: list-changed
|
||||
run: |
|
||||
changed=$(ct list-changed --target-branch ${{ github.event.repository.default_branch }})
|
||||
if [[ -n "$changed" ]]; then
|
||||
echo "changed=true" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Run chart-testing (lint)
|
||||
if: steps.list-changed.outputs.changed == 'true'
|
||||
run: ct lint --target-branch ${{ github.event.repository.default_branch }}
|
||||
@@ -1,23 +0,0 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
@@ -1,24 +0,0 @@
|
||||
apiVersion: v2
|
||||
name: autogpt-builder
|
||||
description: A Helm chart for Kubernetes
|
||||
|
||||
# A chart can be either an 'application' or a 'library' chart.
|
||||
#
|
||||
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||
# to be deployed.
|
||||
#
|
||||
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||
type: application
|
||||
|
||||
# This is the chart version. This version number should be incremented each time you make changes
|
||||
# to the chart and its templates, including the app version.
|
||||
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||
version: 0.1.0
|
||||
|
||||
# This is the version number of the application being deployed. This version number should be
|
||||
# incremented each time you make changes to the application. Versions are not expected to
|
||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||
# It is recommended to use it with quotes.
|
||||
appVersion: "1.0.0"
|
||||
@@ -1,22 +0,0 @@
|
||||
1. Get the application URL by running these commands:
|
||||
{{- if .Values.ingress.enabled }}
|
||||
{{- range $host := .Values.ingress.hosts }}
|
||||
{{- range .paths }}
|
||||
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "autogpt-builder.fullname" . }})
|
||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT
|
||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
You can watch its status by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "autogpt-builder.fullname" . }}'
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "autogpt-builder.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "autogpt-builder.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||
{{- end }}
|
||||
@@ -1,62 +0,0 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "autogpt-builder.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "autogpt-builder.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "autogpt-builder.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "autogpt-builder.labels" -}}
|
||||
helm.sh/chart: {{ include "autogpt-builder.chart" . }}
|
||||
{{ include "autogpt-builder.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "autogpt-builder.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "autogpt-builder.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "autogpt-builder.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "autogpt-builder.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,11 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "autogpt-builder.fullname" . }}-config
|
||||
labels:
|
||||
{{- include "autogpt-builder.labels" . | nindent 4 }}
|
||||
data:
|
||||
.env.local: |-
|
||||
{{- range $key, $value := .Values.env }}
|
||||
{{ $key }}={{ $value }}
|
||||
{{- end }}
|
||||
@@ -1,71 +0,0 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "autogpt-builder.fullname" . }}
|
||||
labels:
|
||||
{{- include "autogpt-builder.labels" . | nindent 4 }}
|
||||
spec:
|
||||
{{- if not .Values.autoscaling.enabled }}
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "autogpt-builder.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "autogpt-builder.labels" . | nindent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "autogpt-builder.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: {{ include "autogpt-builder.fullname" . }}-config
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: {{ .Values.service.port }}
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
{{- toYaml .Values.livenessProbe | nindent 12 }}
|
||||
readinessProbe:
|
||||
{{- toYaml .Values.readinessProbe | nindent 12 }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
{{- with .Values.volumeMounts }}
|
||||
volumeMounts:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.volumes }}
|
||||
volumes:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -1,8 +0,0 @@
|
||||
apiVersion: networking.gke.io/v1beta1
|
||||
kind: FrontendConfig
|
||||
metadata:
|
||||
name: {{ include "autogpt-builder.fullname" . }}-frontend-config
|
||||
spec:
|
||||
redirectToHttps:
|
||||
enabled: true
|
||||
responseCodeName: MOVED_PERMANENTLY_DEFAULT
|
||||
@@ -1,32 +0,0 @@
|
||||
{{- if .Values.autoscaling.enabled }}
|
||||
apiVersion: autoscaling/v2
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: {{ include "autogpt-builder.fullname" . }}
|
||||
labels:
|
||||
{{- include "autogpt-builder.labels" . | nindent 4 }}
|
||||
spec:
|
||||
scaleTargetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: {{ include "autogpt-builder.fullname" . }}
|
||||
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||
metrics:
|
||||
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||
{{- end }}
|
||||
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,61 +0,0 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $fullName := include "autogpt-builder.fullname" . -}}
|
||||
{{- $svcPort := .Values.service.port -}}
|
||||
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1
|
||||
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
{{- else -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
{{- end }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
labels:
|
||||
{{- include "autogpt-builder.labels" . | nindent 4 }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||
ingressClassName: {{ .Values.ingress.className }}
|
||||
{{- end }}
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ .host | quote }}
|
||||
http:
|
||||
paths:
|
||||
{{- range .paths }}
|
||||
- path: {{ .path }}
|
||||
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
||||
pathType: {{ .pathType }}
|
||||
{{- end }}
|
||||
backend:
|
||||
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||
service:
|
||||
name: {{ $fullName }}
|
||||
port:
|
||||
number: {{ $svcPort }}
|
||||
{{- else }}
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: {{ $svcPort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,8 +0,0 @@
|
||||
apiVersion: networking.gke.io/v1
|
||||
kind: ManagedCertificate
|
||||
metadata:
|
||||
name: {{ include "autogpt-builder.fullname" . }}-cert
|
||||
spec:
|
||||
domains:
|
||||
- {{ .Values.domain }}
|
||||
- {{ .Values.wwwDomain }}
|
||||
@@ -1,16 +0,0 @@
|
||||
apiVersion: bitnami.com/v1alpha1
|
||||
kind: SealedSecret
|
||||
metadata:
|
||||
name: {{ include "autogpt-builder.fullname" . }}-secrets
|
||||
namespace: {{ .Release.Namespace }}
|
||||
annotations:
|
||||
sealedsecrets.bitnami.com/cluster-wide: "true"
|
||||
spec:
|
||||
encryptedData:
|
||||
{{- range $key, $value := .Values.secrets }}
|
||||
{{ $key }}: {{ $value }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-secrets
|
||||
namespace: {{ .Release.Namespace }}
|
||||
@@ -1,19 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "autogpt-builder.fullname" . }}
|
||||
labels:
|
||||
{{- include "autogpt-builder.labels" . | nindent 4 }}
|
||||
{{- with .Values.service.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: {{ .Values.service.targetPort }}
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
{{- include "autogpt-builder.selectorLabels" . | nindent 4 }}
|
||||
@@ -1,13 +0,0 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "autogpt-builder.serviceAccountName" . }}
|
||||
labels:
|
||||
{{- include "autogpt-builder.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
automountServiceAccountToken: {{ .Values.serviceAccount.automount }}
|
||||
{{- end }}
|
||||
@@ -1,15 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "autogpt-builder.fullname" . }}-test-connection"
|
||||
labels:
|
||||
{{- include "autogpt-builder.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
spec:
|
||||
containers:
|
||||
- name: wget
|
||||
image: busybox
|
||||
command: ['wget']
|
||||
args: ['{{ include "autogpt-builder.fullname" . }}:{{ .Values.service.port }}']
|
||||
restartPolicy: Never
|
||||
@@ -1,64 +0,0 @@
|
||||
# dev values, overwrite base values as needed.
|
||||
|
||||
image:
|
||||
repository: us-east1-docker.pkg.dev/agpt-dev/agpt-frontend-dev/agpt-frontend-dev
|
||||
pullPolicy: Always
|
||||
tag: "latest"
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
iam.gke.io/gcp-service-account: "dev-agpt-builder-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
name: "dev-agpt-builder-sa"
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8000
|
||||
targetPort: 3000
|
||||
annotations:
|
||||
cloud.google.com/neg: '{"ingress": true}'
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: "gce"
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: gce
|
||||
kubernetes.io/ingress.global-static-ip-name: "agpt-dev-agpt-builder-ip"
|
||||
networking.gke.io/managed-certificates: "autogpt-builder-cert"
|
||||
kubernetes.io/ingress.allow-http: "true"
|
||||
networking.gke.io/v1beta1.FrontendConfig: "autogpt-builder-frontend-config"
|
||||
hosts:
|
||||
- host: dev-builder.agpt.co
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: autogpt-builder
|
||||
port: 8000
|
||||
defaultBackend:
|
||||
service:
|
||||
name: autogpt-builder
|
||||
port:
|
||||
number: 8000
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
|
||||
livenessProbe: null
|
||||
readinessProbe: null
|
||||
|
||||
domain: "dev-builder.agpt.co"
|
||||
wwwDomain: "www.dev-builder.agpt.co"
|
||||
|
||||
|
||||
env:
|
||||
APP_ENV: "dev"
|
||||
|
||||
secrets:
|
||||
GOOGLE_CLIENT_ID: ""
|
||||
GOOGLE_CLIENT_SECRET: ""
|
||||
@@ -1,83 +0,0 @@
|
||||
# prod values, overwrite base values as needed.
|
||||
|
||||
image:
|
||||
repository: us-east1-docker.pkg.dev/agpt-prod/agpt-frontend-prod/agpt-frontend-prod
|
||||
pullPolicy: Always
|
||||
tag: "latest"
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
iam.gke.io/gcp-service-account: "prod-agpt-builder-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
name: "prod-agpt-builder-sa"
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8000
|
||||
targetPort: 3000
|
||||
annotations:
|
||||
cloud.google.com/neg: '{"ingress": true}'
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: "gce"
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: gce
|
||||
kubernetes.io/ingress.global-static-ip-name: "agpt-prod-agpt-frontend-ip"
|
||||
networking.gke.io/managed-certificates: "autogpt-builder-cert"
|
||||
kubernetes.io/ingress.allow-http: "true"
|
||||
networking.gke.io/v1beta1.FrontendConfig: "autogpt-builder-frontend-config"
|
||||
hosts:
|
||||
- host: platform.agpt.co
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: autogpt-builder
|
||||
port: 8000
|
||||
- host: www.platform.agpt.co
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: autogpt-builder
|
||||
port: 8000
|
||||
defaultBackend:
|
||||
service:
|
||||
name: autogpt-builder
|
||||
port:
|
||||
number: 8000
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
|
||||
livenessProbe: null
|
||||
readinessProbe: null
|
||||
|
||||
domain: "platform.agpt.co"
|
||||
wwwDomain: "www.platform.agpt.co"
|
||||
|
||||
volumes:
|
||||
- name: env-config
|
||||
configMap:
|
||||
name: 'autogpt-builder-config'
|
||||
|
||||
volumeMounts:
|
||||
- name: env-config
|
||||
mountPath: /app/.env.local
|
||||
subPath: .env.local
|
||||
readonly: true
|
||||
|
||||
|
||||
env:
|
||||
APP_ENV: "prod"
|
||||
|
||||
secrets:
|
||||
GOOGLE_CLIENT_ID: ""
|
||||
GOOGLE_CLIENT_SECRET: ""
|
||||
@@ -1,76 +0,0 @@
|
||||
# base values, environment specific variables should be specified/overwritten in environment values
|
||||
|
||||
replicaCount: 1
|
||||
|
||||
image:
|
||||
repository: us-east1-docker.pkg.dev/agpt-dev/agpt-builder-dev/agpt-builder-dev
|
||||
pullPolicy: IfNotPresent
|
||||
tag: "latest"
|
||||
|
||||
imagePullSecrets: []
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
serviceAccount:
|
||||
create: true
|
||||
automount: true
|
||||
annotations: {}
|
||||
name: ""
|
||||
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
|
||||
podSecurityContext: {}
|
||||
|
||||
securityContext: {}
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 80
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
className: ""
|
||||
annotations: {}
|
||||
hosts:
|
||||
- host: chart-example.local
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
tls: []
|
||||
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
maxReplicas: 100
|
||||
targetMemoryUtilizationPercentage: 80
|
||||
|
||||
volumes: []
|
||||
|
||||
volumeMounts: []
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
|
||||
domain: ""
|
||||
@@ -1,23 +0,0 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
@@ -1,9 +0,0 @@
|
||||
apiVersion: v2
|
||||
name: autogpt-market
|
||||
description: A Helm chart for Market
|
||||
|
||||
type: application
|
||||
|
||||
version: 0.1.0
|
||||
|
||||
appVersion: "1.0.0"
|
||||
@@ -1,22 +0,0 @@
|
||||
1. Get the application URL by running these commands:
|
||||
{{- if .Values.ingress.enabled }}
|
||||
{{- range $host := .Values.ingress.hosts }}
|
||||
{{- range .paths }}
|
||||
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "autogpt-market.fullname" . }})
|
||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT
|
||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
You can watch its status by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "autogpt-market.fullname" . }}'
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "autogpt-market.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "autogpt-market.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||
{{- end }}
|
||||
@@ -1,62 +0,0 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "autogpt-market.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "autogpt-market.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "autogpt-market.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "autogpt-market.labels" -}}
|
||||
helm.sh/chart: {{ include "autogpt-market.chart" . }}
|
||||
{{ include "autogpt-market.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "autogpt-market.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "autogpt-market.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "autogpt-market.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "autogpt-market.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,26 +0,0 @@
|
||||
apiVersion: cloud.google.com/v1
|
||||
kind: BackendConfig
|
||||
metadata:
|
||||
name: {{ include "autogpt-market.fullname" . }}-backend-config
|
||||
spec:
|
||||
customRequestHeaders:
|
||||
headers:
|
||||
- "Access-Control-Allow-Origin:{{ .Values.cors.allowOrigin }}"
|
||||
- "Access-Control-Allow-Methods:{{ .Values.cors.allowMethods | join "," }}"
|
||||
- "Access-Control-Allow-Headers:{{ .Values.cors.allowHeaders | join "," }}"
|
||||
- "Access-Control-Max-Age:{{ .Values.cors.maxAge }}"
|
||||
{{- if .Values.cors.allowCredentials }}
|
||||
- "Access-Control-Allow-Credentials:true"
|
||||
{{- end }}
|
||||
customResponseHeaders:
|
||||
headers:
|
||||
- "Access-Control-Allow-Origin:{{ .Values.cors.allowOrigin }}"
|
||||
- "Access-Control-Allow-Methods:{{ .Values.cors.allowMethods | join "," }}"
|
||||
- "Access-Control-Allow-Headers:{{ .Values.cors.allowHeaders | join "," }}"
|
||||
- "Access-Control-Max-Age:{{ .Values.cors.maxAge }}"
|
||||
{{- if .Values.cors.allowCredentials }}
|
||||
- "Access-Control-Allow-Credentials:true"
|
||||
{{- end }}
|
||||
timeoutSec: 1800
|
||||
connectionDraining:
|
||||
drainingTimeoutSec: 1800
|
||||
@@ -1,10 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "autogpt-market.fullname" . }}-config
|
||||
labels:
|
||||
{{- include "autogpt-market.labels" . | nindent 4 }}
|
||||
data:
|
||||
{{- range $key, $value := .Values.env }}
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
@@ -1,73 +0,0 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "autogpt-market.fullname" . }}
|
||||
labels:
|
||||
{{- include "autogpt-market.labels" . | nindent 4 }}
|
||||
spec:
|
||||
{{- if not .Values.autoscaling.enabled }}
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "autogpt-market.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "autogpt-market.labels" . | nindent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "autogpt-market.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: {{ include "autogpt-market.fullname" . }}-config
|
||||
- secretRef:
|
||||
name: {{ include "autogpt-market.fullname" . }}-secrets
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: {{ .Values.service.targetPort }}
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
{{- toYaml .Values.livenessProbe | nindent 12 }}
|
||||
readinessProbe:
|
||||
{{- toYaml .Values.readinessProbe | nindent 12 }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
{{- with .Values.volumeMounts }}
|
||||
volumeMounts:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.volumes }}
|
||||
volumes:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -1,8 +0,0 @@
|
||||
apiVersion: networking.gke.io/v1beta1
|
||||
kind: FrontendConfig
|
||||
metadata:
|
||||
name: {{ include "autogpt-market.fullname" . }}-frontend-config
|
||||
spec:
|
||||
redirectToHttps:
|
||||
enabled: true
|
||||
responseCodeName: MOVED_PERMANENTLY_DEFAULT
|
||||
@@ -1,32 +0,0 @@
|
||||
{{- if .Values.autoscaling.enabled }}
|
||||
apiVersion: autoscaling/v2
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: {{ include "autogpt-market.fullname" . }}
|
||||
labels:
|
||||
{{- include "autogpt-market.labels" . | nindent 4 }}
|
||||
spec:
|
||||
scaleTargetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: {{ include "autogpt-market.fullname" . }}
|
||||
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||
metrics:
|
||||
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||
{{- end }}
|
||||
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,61 +0,0 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $fullName := include "autogpt-market.fullname" . -}}
|
||||
{{- $svcPort := .Values.service.port -}}
|
||||
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1
|
||||
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
{{- else -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
{{- end }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
labels:
|
||||
{{- include "autogpt-market.labels" . | nindent 4 }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||
ingressClassName: {{ .Values.ingress.className }}
|
||||
{{- end }}
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ .host | quote }}
|
||||
http:
|
||||
paths:
|
||||
{{- range .paths }}
|
||||
- path: {{ .path }}
|
||||
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
||||
pathType: {{ .pathType }}
|
||||
{{- end }}
|
||||
backend:
|
||||
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||
service:
|
||||
name: {{ $fullName }}
|
||||
port:
|
||||
number: {{ $svcPort }}
|
||||
{{- else }}
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: {{ $svcPort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,7 +0,0 @@
|
||||
apiVersion: networking.gke.io/v1
|
||||
kind: ManagedCertificate
|
||||
metadata:
|
||||
name: {{ include "autogpt-market.fullname" . }}-cert
|
||||
spec:
|
||||
domains:
|
||||
- {{ .Values.domain }}
|
||||
@@ -1,17 +0,0 @@
|
||||
apiVersion: bitnami.com/v1alpha1
|
||||
kind: SealedSecret
|
||||
metadata:
|
||||
name: {{ include "autogpt-market.fullname" . }}-secrets
|
||||
namespace: {{ .Release.Namespace }}
|
||||
annotations:
|
||||
sealedsecrets.bitnami.com/cluster-wide: "true"
|
||||
force-update: "true"
|
||||
spec:
|
||||
encryptedData:
|
||||
{{- range $key, $value := .Values.secrets }}
|
||||
{{ $key }}: {{ $value }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-secrets
|
||||
namespace: {{ .Release.Namespace }}
|
||||
@@ -1,19 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "autogpt-market.fullname" . }}
|
||||
labels:
|
||||
{{- include "autogpt-market.labels" . | nindent 4 }}
|
||||
{{- with .Values.service.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: {{ .Values.service.targetPort }}
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
{{- include "autogpt-market.selectorLabels" . | nindent 4 }}
|
||||
@@ -1,13 +0,0 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "autogpt-market.serviceAccountName" . }}
|
||||
labels:
|
||||
{{- include "autogpt-market.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
automountServiceAccountToken: {{ .Values.serviceAccount.automount }}
|
||||
{{- end }}
|
||||
@@ -1,15 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "autogpt-market.fullname" . }}-test-connection"
|
||||
labels:
|
||||
{{- include "autogpt-market.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
spec:
|
||||
containers:
|
||||
- name: wget
|
||||
image: busybox
|
||||
command: ['wget']
|
||||
args: ['{{ include "autogpt-market.fullname" . }}:{{ .Values.service.port }}']
|
||||
restartPolicy: Never
|
||||
@@ -1,100 +0,0 @@
|
||||
# dev values, overwrite base values as needed.
|
||||
|
||||
image:
|
||||
repository: us-east1-docker.pkg.dev/agpt-dev/agpt-market-dev/agpt-market-dev
|
||||
pullPolicy: Always
|
||||
tag: "latest"
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
iam.gke.io/gcp-service-account: "dev-agpt-market-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
name: "dev-agpt-market-sa"
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8015
|
||||
targetPort: 8015
|
||||
annotations:
|
||||
cloud.google.com/neg: '{"ingress": true}'
|
||||
beta.cloud.google.com/backend-config: '{"default": "autogpt-market-backend-config"}'
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: "gce"
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: gce
|
||||
kubernetes.io/ingress.global-static-ip-name: "agpt-dev-agpt-market-ip"
|
||||
networking.gke.io/managed-certificates: "autogpt-market-cert"
|
||||
networking.gke.io/v1beta1.FrontendConfig: "autogpt-market-frontend-config"
|
||||
hosts:
|
||||
- host: dev-market.agpt.co
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: autogpt-market
|
||||
port: 8015
|
||||
defaultBackend:
|
||||
service:
|
||||
name: autogpt-market
|
||||
port:
|
||||
number: 8015
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 1Gi
|
||||
limits:
|
||||
cpu: 2
|
||||
memory: 2Gi
|
||||
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8015
|
||||
initialDelaySeconds: 60
|
||||
periodSeconds: 20
|
||||
timeoutSeconds: 10
|
||||
failureThreshold: 12
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8015
|
||||
initialDelaySeconds: 60
|
||||
periodSeconds: 20
|
||||
timeoutSeconds: 10
|
||||
failureThreshold: 12
|
||||
|
||||
domain: "dev-market.agpt.co"
|
||||
|
||||
cors:
|
||||
allowOrigin: "https://dev-builder.agpt.co"
|
||||
allowMethods:
|
||||
- "GET"
|
||||
- "POST"
|
||||
- "PUT"
|
||||
- "DELETE"
|
||||
- "OPTIONS"
|
||||
allowHeaders:
|
||||
- "Content-Type"
|
||||
- "Authorization"
|
||||
maxAge: 3600
|
||||
allowCredentials: true
|
||||
|
||||
env:
|
||||
APP_ENV: "dev"
|
||||
PYRO_HOST: "0.0.0.0"
|
||||
ENABLE_AUTH: "true"
|
||||
GITHUB_CLIENT_ID: ""
|
||||
GITHUB_CLIENT_SECRET: ""
|
||||
FRONTEND_BASE_URL: "https://dev-builder.agpt.co/"
|
||||
SUPABASE_URL: "https://adfjtextkuilwuhzdjpf.supabase.co"
|
||||
BACKEND_CORS_ALLOW_ORIGINS: "https://dev-builder.agpt.co"
|
||||
|
||||
|
||||
secrets:
|
||||
SUPABASE_JWT_SECRET: "AgCXWGuGOPbdUZsn1G+amfHxm1CZAmuiULAml7sDJ+SUXUBlBWOf/wb0Gf9vnjPrpS5QqeYUQDzVPIXRqs1BkL7m51zAYt4U5K1XGgF4VmUv5Jqm/99iLB/biuVBuGj32wuYzGNEfuPPz6sfg51AfPfuOCDE/bX9xD+M5E++wVQChulm0Lqab5GdBgZC2M90Cb57EjNbwkCnNhO1HY2etwMKJ5q4J6N8gW1nxdWemUFEtQuHRBwEhCA+XRVf4MHQPwixb0Kn7cA+D6OthxWaxsXgg0li/kY7tF4xed2XXkfhARFbATryExcnAXLOucWS1+NKjLSUCZdqeqR/+C6uKyAYQNj60WU9ikDG5LJrLgnB2dXVBDNFHWbVtWtHABdyIVENZlXCBYtIJUpDBVFVIZp/GOyR9mhwPil0qZOiLE6HXiRENyMcZxNk1E9BHQZHS6WKExsi7RP3kJVFcWknBvH8IydkoINRfGO+LNy+H8EK51ml60iq6pvNVRwcxfZBuNcdJQrWflsLbi2dT6u9tWM27COnV2UCWqJuslVhdEAdpeB/nErgnBcSWXl4vtApasxYw7l5QWTU2597TvMidqm9ardvFOiuj9SxRdLZ/H3x3rsn8yn3C22E8Ism4ciEA9wxjwL3pgWiSsRsIsTpI0++lHSSY7hZvsarwFWcgwzjZhufqjVTbRJiHGOeXijiAqj+b5haCkdYmJCFeJuph11GABtORqnVh2xkPfzB3iWpfshX+udtjr7vdJCcpQyRbq972I8sTqFJXQc5hXQYu8/JWApKnpYMFq7MtrCKGurYxLPx7pYaf1sA"
|
||||
DATABASE_URL: "AgB2qSmnSLX5mVx+kIhbD2Mb8mKFHSyTD/DlhaNLo00tl+O4ix155S8Ec9voSFwuDhsjuQC9vND9cNSDIMUakjKIu4SmKfyi1zq2dHkToq0N5jxOO04N9XbZtXRIUaw6/ME8NGodw0hF4kPMaKBcC3Vt4dvnZw4YOnk2l39W5Cf3GR2Jm5V2s4g90HLy+JexQjxf5YiPQdDUQPu2bRxJ+ELuaEH113QrbLJVQZtd18+0p+89pBP9Rw98YqO+Lbf8u2MPGXOYQpjpT+bIIQE3c42Wd7lpHd+S8YBfHOjJKipLK2L1JsN30nte+xHEC3Vk1re9T3Qa7Nmb4fuwnJXcXBxwyaOucsPS9o/beNGYZtvpR3e9TedcjxCe4DQpJiMmkhK3Z8eVYmxNUviccN21mf2yMsZ/9KNuULnlz+EFVW1vwmnuGRD4yHUK4HKmGyrKEdmnEOMv1W2yoRbyy9kjj3lTSO4jKDxAgs+9zkVUD1cIL/bFjJZVqOnXZs5I6gJWM5dGtLTqZe8IyxbKj9fORHLzl0kZqjfjiIVvJkLpV/okjaITVueuGljROt89ZDSVKCcHDiMMXF4qZwLNGIPoRT4O8b3BIBiRm2fnJu5ui3xbTfQWH1/OagWhgiBkvcKJ4IoZuxdlQnBjCOSig4BMUopjAQ49YaPX78qDBFTDSkk5ofogs1nKHRo41EmdR8Kl7JI="
|
||||
SENTRY_DSN: "AgB9i02k9BgaIXF0p9Qyyeo0PRa9bd3UiPBWQ3V4Jn19Vy5XAzKfYvqP8t+vafN2ffY+wCk1FlhYzdIuFjh3oRvdKvtwGEBZk6nLFiUrw/GSum0ueR2OzEy+AwGFXA9FstD0KCMJvyehSv9xRm9kqLOC4Xb/5lOWwTNF3AKqkEMEeKrOWx4OLXG6MLdR7OicY45BCE5WvcV2PizDaN5w3J72eUxFP0HjXit/aW/gK32IJME0RxeuQZ5TnPKTNrooYPR0eWXd2PgYshFjQ2ARy/OsvOrD10y8tQ3M5qx/HNWLC/r0lEu2np+9iUIAE1ufSwjmNSyi4V8usdZWq7xnf3vuKlSgmveqKkLbwQUWj1BpLNIjUvyY+1Rk1rxup/WCgaw+xOZd6sR/qTIjILv5GuzpU0AiwEm7sgl2pmpFXq6n6QjNOfZoPBTL73f4bpXNJ3EyMYDbPxOtGDz91B+bDtOsMr1DNWQslKkk3EIilm/l0+NuLKxf/e2HwM3sB15mkQqVZBdbiVOr7B27cR9xAnr296KE/BU6E9dp/fl+IgcaonMpTsE61pCLHWxQXNBO5X078/zhmaXBQyEBNQ5SPDr9u3pHWrrLkBtXwldZvgmLMMVFMAzrVVkJB4lC9sZj0pXPhda0/BsA4xcGRELj/PizwSr+kb3lDumNMqzEap5ZjEGCBpeeIVSo19v+RoEDw0AFmyxfYx2+91HsgiEqjEUg+J6yDmjAoRpOD1wRZOnnpR8ufMiqdBteCG8B5SXkhgto1WtDyOMVlX2wbmBFVetv2nAbMIA/l4E/Yv8HXiJsTqAkeYc5Qak6/SMGnZTw7Q=="
|
||||
SUPABASE_SERVICE_ROLE_KEY: "AgBKJDPEiTQUYLY0B/NKaAkxH7whrGuxQVtRdz9mEr/Bx06n1Yu1Zm4/oEQp3OvYerRvQWuv1k3//jf3eiya4ZW9+ZntfPdQWL9/tzq+/spevFtiEvuQ8uuUhtNOU4IGt27KTTlhCfeHKte8jtLQ/lwcrSrfPZ1T8Gy8PXdsAgakGUauEs2oHuX2XUaPE9UFF4HRAhmjPZ9e7u7Zfgcj8D+otjrwNVC5ZXFM7/ha0roeZHdpTvOcemKjxhiZA0FmdkXgOCPihNxlz0sKcupCEte6ocnSkpL3pBflBsa9+NLz7kLCUQPeOCExkMTndyqWk1kFci6j35cBP6PQlHfWPdo8OFCdG+3EfvEt5+4PQ08d7nXRZqowBiQdE2/e8qA/dZc8cJ7ecpza+9Qf/pNIl+9Ix0EFvmB6rpbO9w5Ptw2yMOAebVl7qV+A65GelvcPWROK5Vfftwx8KT2sn9ldVOYy+C7OafgOm8qaL7mEMePSwJy68MKpnMm/TceE7xxZ2sMSWEl9FMn4QXEawD4LQrJHKpum6XyUG2FlMkogHMikOEbJzz1ICAcHB6OWJXo3wU+fK8jkI4/UYioFSfF9MQXaC8bUGc4NT6T62KvjnrdkmOHG7HcN4UNQ7yBa/fP1pM7peYQdwAKr4Oxl4v3i96uKRdCuIimYiWpcxklkQhmSsMLKFMZGDDvv1BNtL6oxK4ZaEyWoorEyjkd2UrSpbP6cvyVMVWbTl1/BD350NRn6OYTpGIXwmAhqVWuuyt8kfLLU6Ot2MYcq/i16qvc3dA5XizLKHY95X8R+DlUCEzawF75Sx++eMPKU/o5rxhZNRjvffIcXtw1Hy/uqVCqilmSt33RqUsehOxQUqHBIW7L7sAik/L+hgTiE3MwN8XSfGncDB/bNweJh3ZSXsdwZD2bleEY1nWpsXVhcJDNcdW3YscJbsyTCGQcOb0zEQaxSmfLAd3rIa+SAZpFEOsD8A5kZjI4QpmqPkhNHeF8="
|
||||
@@ -1,99 +0,0 @@
|
||||
# prod values, overwrite base values as needed.
|
||||
|
||||
image:
|
||||
repository: us-east1-docker.pkg.dev/agpt-prod/agpt-market-prod/agpt-market-prod
|
||||
pullPolicy: Always
|
||||
tag: "latest"
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
iam.gke.io/gcp-service-account: "prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
name: "prod-agpt-market-sa"
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8015
|
||||
targetPort: 8015
|
||||
annotations:
|
||||
cloud.google.com/neg: '{"ingress": true}'
|
||||
beta.cloud.google.com/backend-config: '{"default": "autogpt-market-backend-config"}'
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: "gce"
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: gce
|
||||
kubernetes.io/ingress.global-static-ip-name: "agpt-prod-agpt-market-ip"
|
||||
networking.gke.io/managed-certificates: "autogpt-market-cert"
|
||||
networking.gke.io/v1beta1.FrontendConfig: "autogpt-market-frontend-config"
|
||||
hosts:
|
||||
- host: market.agpt.co
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: autogpt-market
|
||||
port: 8015
|
||||
defaultBackend:
|
||||
service:
|
||||
name: autogpt-market
|
||||
port:
|
||||
number: 8015
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 1Gi
|
||||
limits:
|
||||
cpu: 2
|
||||
memory: 2Gi
|
||||
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8015
|
||||
initialDelaySeconds: 60
|
||||
periodSeconds: 20
|
||||
timeoutSeconds: 10
|
||||
failureThreshold: 12
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8015
|
||||
initialDelaySeconds: 60
|
||||
periodSeconds: 20
|
||||
timeoutSeconds: 10
|
||||
failureThreshold: 12
|
||||
|
||||
domain: "market.agpt.co"
|
||||
|
||||
cors:
|
||||
allowOrigin: "https://platform.agpt.co"
|
||||
allowMethods:
|
||||
- "GET"
|
||||
- "POST"
|
||||
- "PUT"
|
||||
- "DELETE"
|
||||
- "OPTIONS"
|
||||
allowHeaders:
|
||||
- "Content-Type"
|
||||
- "Authorization"
|
||||
maxAge: 3600
|
||||
allowCredentials: true
|
||||
|
||||
env:
|
||||
APP_ENV: "prod"
|
||||
PYRO_HOST: "0.0.0.0"
|
||||
ENABLE_AUTH: "true"
|
||||
GITHUB_CLIENT_ID: ""
|
||||
GITHUB_CLIENT_SECRET: ""
|
||||
FRONTEND_BASE_URL: "https://platform.agpt.co/"
|
||||
SUPABASE_URL: "https://bgwpwdsxblryihinutbx.supabase.co"
|
||||
BACKEND_CORS_ALLOW_ORIGINS: "https://platform.agpt.co"
|
||||
|
||||
secrets:
|
||||
DATABASE_URL: "AgCUKDIUv1z6KWRBX+sSfokUYFPZPMurFMcvVG4GKHPtV9ckIZ7tV2S+FxdQcXNnUQeuqQ7lSpaxOp6fnzC2ou9A+mHHstiEl0u9QrrL1gyOF3AsEnEd+TpXTZ3gOq4v6vmEqErNShrm1AiZy5qKQi50JoUUZNh9brM2MmtlSZU58BWxLTjMaEHttPsdQWz3mlumJchRxJzr9xnzVZWwp3Llq2hTGOdwa2UNljd9h11m547/fT2d7o3vqP/Sju+h6SEUB83EHP2Ncjxf9rhVn5KXboxvOSbKXxa8eu5eE87D1tlrCCvnoDV5hh8h+W4EboFwUffJZDD9+VPK5nIJuCZ5k9y/+9peQfOCvQ8LJaNxKxzBfGXxsb9PmYJrdN3KAbE5ZmhjuABvuMcPMdJRxGdwUCNCyw5XpiEQRD0vSSEXuZKOv3Oy0a6mOzcNf2a5QhAqAM98WazaCjg4gmVQ4ZKDUYzjsURpGavb/piBo5pDZHrwWjCilsjJqTFlPTFi39ppVtXitfncYCUPYVts/kNrWa9//4sj9ZKIKUsLzCB8X1B6pA7cG/9u0n61Kllmp7naWM2W9Jq0b7DB8FvihcyMsOPxfyeX66OzTFypat3+cY4JcLr4rx6DPk4hZyHfFnJZdfeSl/MePPkjLTS1aBLZ+sCNaPGWKaEJ97zZSEvm54V2AH5EuLJqSx3EUotpLok="
|
||||
SUPABASE_JWT_SECRET: "AgAYMdZyP+UhxIdTx6qyRzq9xf1dT7S+DFEC8KSPEFydX9+hAdJVTpprOlgLnqSbfSDmbqcFnCH+aK/6rdRx3HI3v41FogyCNFFxTrfxq1Esk8VuaVh8XrO2xKPd4iGBPZaTrenKlgt89aGdjPJzgl+NlZ5+/BXd95P2uX39DDGr9GJdO14zBt69O+L+Yt7kdd3ZMBjWYibZAzf+YaNIx/M7jjzGLYvxtywMVTrR+6e6GkGQSt5CzBpgk1b6ugPVtFs7PqmMtUqXMQjlrW2u7WVZRWeXO93ukc/TtjO2XUY9JfrgibMf0H81NDDTAAQBNqaDk0LdXsPUo9QGnyeQZTsfAOaeM6lTxX9qCYjneN6pxe60U1BKLURpordRdBs3peAedNJ95GC75qcdSkZE2agjwJvXKs8yy2Ig5eiU/80W27IWPMSLWhMSSf4ixyfkNWM4EfWL45bXlVGvtYaeyqByb0QU1g+II3AukIyO1qOS572y0sGseEv/UlfU2NDBLFejeBZaz4s/20lSyLhP3v1Y9aTs8qWIGl67syFKZoCwPRxwip2v7wIDnlDYXtlxMpQUWDnSUX16zQiVALD3izeDYkd1RViBgdYT/G0tp6lBeV1vnF8tBEGWIl3GJFV0okUflAQ9NIrdC5+BlcQDD08Jn0oGjyje7KE/BfvB1lHT7K+h9rr8B/U8zBSaAe+KFjA8pcjHqXgi4Zx3ayTXdAddyFZd0YqONohEAvXB+BLLdYJVNNXjBFwY62XQ6ojD2ZYWz4m/Wo+/zG0Zm5s/v2VS8UT5qe2Wjs3oGHKIJc6Eo3hVwLefcb7V"
|
||||
SENTRY_DSN: "AgA+X2HkF9b3+p13JS4vG7VY+8p7su6qJ7smoPKqYh44Vpb7J5Eu9ksPNQkcFTDDPT8jAylqsHWUdI0A8u20+a4lqqGkmPN5tCgyBgAL1pIyvPUQjYUbL7A5lTQKlRLJJ+05h5XbkRU7cWR+G4yDUCDj2HcThne0CNDUbDao9D67ekSLUtp6/d0KO45Efao4MLuqISnypPUBGHmAdWGr2z/w7ItXjvUKt3RpH6pSCrGzjlKPKhenKdTsk/NX4Z+ew/JBbHiDQjKCdj0UlXFWH7Q4axaFy0T8tsqf/UN7n/QTalYE+v28isxrHvoR6h7kZETQV/gl0y7DdmTCi8/A1j1+e/9zUx6HvK+C/qGMsKMdNgaaVNSdfFp/yfMgXTUn4HGAls4gjVKSSRaIAbBq32NdKkIvRfocuAGsxInwbrDXLR0nzbHG/U/QhlvfL2gfqKRIVRJtEh99VW/KMMeXZUWR9dNt9gfTMtyzL7eta4oEV+g7sdO/9VjDn5wtic2/7eAxgA7wTEoDA8m0whpHH4VcPLHUfKLTHnRXVu6bykAfBgfEKhJBS8DghvPyu73qL5MREuYkGya4n0RQ73h5ja7mYwI0lsefQszP9Fz1lR+757dhJ6+/E7nNnOE/ShD/8xE0V54pd2IvrRoJmcOsIOZ5w+xWfmN8OyLn7wuEpqEuMHEoisLF9RSp2V5iKbB+fFB4o5P1/VqkNPEFBe0jA4K8DAGX+VdChMpjAI47wF22aj+jmTRf+EY+5l+aEvjyU0G7oUPVzzG8rYa6p+v56zeVsmU4SHIDO75J1cH7tnYDeOxk9fAYZgNplS4gKHVT0w=="
|
||||
SUPABASE_SERVICE_ROLE_KEY: "AgCADpjXfdpTDruyK2F4GRNT/Kl+yaI87mQdXDHQo3jOC3gWoOiRlXg70JG3jIi2cWjAXwU8ySjpT87aJdRwsMToeMD78zr0FbOSB2abx7OPTij8zWFSzhIo4cLoEkvLxZO9HXwQc959Cxh5oBcn6WBhJ5XMUxNWALIem9+Lb5Eu1CwxSF0EDrl3znx3Iqw/zUqnAgS+Ob4AAiJwXNO641ja7dAKYkb2NJ/KCBgmSXAaPfxQByuNkGP4iwmQuxhhJQ/N+LRVCu03J6NLPVw22feKKtZxAAroMDn5wPhRdmzBawqbRsejiCb0JNL2yd574CDN5xzsDur/RYkCpTrMWzgnN3F1VcYMuB9FwYazKU3XqviOYtP8Ca4sUQChHQEOFP8n3Nt0Z17zo1NtgRt8IBpXpDeZFgDZU6Zy8EtpHHn05KT8YqyLDms2LfJhduiuyndbZgeIfr7IcxbU4aBafh+J/tfN7Tlj5NFYxFImKQ0NFg5z6W9zKKkfFMo9WUcOOXgwg8+g6xeZUX9g3rNpMBNf2bt0UfNqSIBeAmUZVKHuEqneFONbgtqOP2NKsKsSfvCsnpKgAndv+eL627qWAuDzywWuoAcxsF/Kvo/fQnv1a+7abCr1Qhf61u3DBriGp6TAVhQ9z7iGqvkuviELt97NKekeevCgdjwWpk78iKBCmxJobBTErdX2Xhrqfc5AHteoUBYv3TS7N8ZcOmfVmZc2ulgLLQZZ5hK30w9FFu28bu01ArfKcSp3U21keaC/cGHBNdUWgAbg3wIH+3y3vU2MRHI6T6sFrRsNgJH6b8S+HcOInTsoaLFiRv7SYxGYliV47AEukv4G2G+9XO4i4y9P90u5i7KM+J5FRlR6sfiISPozGHUBe9EAKYQcqaSSGP7FWsyNl6DGq/pDkG8IJYqNr21Sl9N1cdhK/Hdd4J80q05A9f3AyzHjtU4YVcvz4TCKr1FJLugBUsz120cA8FxGXweIQRWCzGvSeGA="
|
||||
@@ -1,98 +0,0 @@
|
||||
# Default values for autogpt-market.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
replicaCount: 1
|
||||
|
||||
image:
|
||||
repository: nginx
|
||||
pullPolicy: IfNotPresent
|
||||
# Overrides the image tag whose default is the chart appVersion.
|
||||
tag: ""
|
||||
|
||||
imagePullSecrets: []
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
serviceAccount:
|
||||
# Specifies whether a service account should be created
|
||||
create: true
|
||||
# Automatically mount a ServiceAccount's API credentials?
|
||||
automount: true
|
||||
# Annotations to add to the service account
|
||||
annotations: {}
|
||||
# The name of the service account to use.
|
||||
# If not set and create is true, a name is generated using the fullname template
|
||||
name: ""
|
||||
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
|
||||
podSecurityContext: {}
|
||||
# fsGroup: 2000
|
||||
|
||||
securityContext: {}
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# readOnlyRootFilesystem: true
|
||||
# runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 80
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
className: ""
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
hosts:
|
||||
- host: chart-example.local
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
tls: []
|
||||
# - secretName: chart-example-tls
|
||||
# hosts:
|
||||
# - chart-example.local
|
||||
|
||||
resources: {}
|
||||
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||
# choice for the user. This also increases chances charts run on environments with little
|
||||
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
maxReplicas: 100
|
||||
targetCPUUtilizationPercentage: 80
|
||||
# targetMemoryUtilizationPercentage: 80
|
||||
|
||||
# Additional volumes on the output Deployment definition.
|
||||
volumes: []
|
||||
# - name: foo
|
||||
# secret:
|
||||
# secretName: mysecret
|
||||
# optional: false
|
||||
|
||||
# Additional volumeMounts on the output Deployment definition.
|
||||
volumeMounts: []
|
||||
# - name: foo
|
||||
# mountPath: "/etc/foo"
|
||||
# readOnly: true
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
@@ -1,23 +0,0 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
@@ -1,10 +0,0 @@
|
||||
apiVersion: v2
|
||||
name: autogpt-server
|
||||
description: A Helm chart for AutoGPT on Kubernetes
|
||||
|
||||
type: application
|
||||
|
||||
|
||||
version: 0.1.0
|
||||
|
||||
appVersion: "1.0.0"
|
||||
@@ -1,22 +0,0 @@
|
||||
1. Get the application URL by running these commands:
|
||||
{{- if .Values.ingress.enabled }}
|
||||
{{- range $host := .Values.ingress.hosts }}
|
||||
{{- range .paths }}
|
||||
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "autogpt-server.fullname" . }})
|
||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT
|
||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
You can watch its status by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "autogpt-server.fullname" . }}'
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "autogpt-server.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "autogpt-server.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||
{{- end }}
|
||||
@@ -1,62 +0,0 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "autogpt-server.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "autogpt-server.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "autogpt-server.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "autogpt-server.labels" -}}
|
||||
helm.sh/chart: {{ include "autogpt-server.chart" . }}
|
||||
{{ include "autogpt-server.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "autogpt-server.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "autogpt-server.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "autogpt-server.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "autogpt-server.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,26 +0,0 @@
|
||||
apiVersion: cloud.google.com/v1
|
||||
kind: BackendConfig
|
||||
metadata:
|
||||
name: {{ include "autogpt-server.fullname" . }}-backend-config
|
||||
spec:
|
||||
customRequestHeaders:
|
||||
headers:
|
||||
- "Access-Control-Allow-Origin:{{ .Values.cors.allowOrigin }}"
|
||||
- "Access-Control-Allow-Methods:{{ .Values.cors.allowMethods | join "," }}"
|
||||
- "Access-Control-Allow-Headers:{{ .Values.cors.allowHeaders | join "," }}"
|
||||
- "Access-Control-Max-Age:{{ .Values.cors.maxAge }}"
|
||||
{{- if .Values.cors.allowCredentials }}
|
||||
- "Access-Control-Allow-Credentials:true"
|
||||
{{- end }}
|
||||
customResponseHeaders:
|
||||
headers:
|
||||
- "Access-Control-Allow-Origin:{{ .Values.cors.allowOrigin }}"
|
||||
- "Access-Control-Allow-Methods:{{ .Values.cors.allowMethods | join "," }}"
|
||||
- "Access-Control-Allow-Headers:{{ .Values.cors.allowHeaders | join "," }}"
|
||||
- "Access-Control-Max-Age:{{ .Values.cors.maxAge }}"
|
||||
{{- if .Values.cors.allowCredentials }}
|
||||
- "Access-Control-Allow-Credentials:true"
|
||||
{{- end }}
|
||||
timeoutSec: 1800
|
||||
connectionDraining:
|
||||
drainingTimeoutSec: 1800
|
||||
@@ -1,10 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "autogpt-server.fullname" . }}-config
|
||||
labels:
|
||||
{{- include "autogpt-server.labels" . | nindent 4 }}
|
||||
data:
|
||||
{{- range $key, $value := .Values.env }}
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
@@ -1,73 +0,0 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "autogpt-server.fullname" . }}-executor
|
||||
labels:
|
||||
app.kubernetes.io/component: executor
|
||||
spec:
|
||||
{{- if not .Values.autoscaling.enabled }}
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: executor
|
||||
template:
|
||||
metadata:
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
app.kubernetes.io/component: executor
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "autogpt-server.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: {{ include "autogpt-server.fullname" . }}-config
|
||||
- secretRef:
|
||||
name: {{ include "autogpt-server.fullname" . }}-secrets
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
command: ["poetry", "run", "executor"]
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: {{ .Values.serviceExecutor.port }}
|
||||
protocol: TCP
|
||||
- name: db-http
|
||||
containerPort: {{ .Values.serviceDBManager.port }}
|
||||
protocol: TCP
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
{{- with .Values.volumeMounts }}
|
||||
volumeMounts:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.volumes }}
|
||||
volumes:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -1,77 +0,0 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "autogpt-server.fullname" . }}
|
||||
labels:
|
||||
{{- include "autogpt-server.labels" . | nindent 4 }}
|
||||
spec:
|
||||
{{- if not .Values.autoscaling.enabled }}
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "autogpt-server.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "autogpt-server.labels" . | nindent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "autogpt-server.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: {{ include "autogpt-server.fullname" . }}-config
|
||||
- secretRef:
|
||||
name: {{ include "autogpt-server.fullname" . }}-secrets
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
command: ["poetry", "run", "rest"]
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: {{ .Values.service.port }}
|
||||
protocol: TCP
|
||||
- name: pyro
|
||||
containerPort: 8004
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
{{- toYaml .Values.livenessProbe | nindent 12 }}
|
||||
readinessProbe:
|
||||
{{- toYaml .Values.readinessProbe | nindent 12 }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
{{- with .Values.volumeMounts }}
|
||||
volumeMounts:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.volumes }}
|
||||
volumes:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -1,8 +0,0 @@
|
||||
apiVersion: networking.gke.io/v1beta1
|
||||
kind: FrontendConfig
|
||||
metadata:
|
||||
name: {{ include "autogpt-server.fullname" . }}-frontend-config
|
||||
spec:
|
||||
redirectToHttps:
|
||||
enabled: true
|
||||
responseCodeName: MOVED_PERMANENTLY_DEFAULT
|
||||
@@ -1,32 +0,0 @@
|
||||
{{- if .Values.autoscaling.enabled }}
|
||||
apiVersion: autoscaling/v2
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: {{ include "autogpt-server.fullname" . }}
|
||||
labels:
|
||||
{{- include "autogpt-server.labels" . | nindent 4 }}
|
||||
spec:
|
||||
scaleTargetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: {{ include "autogpt-server.fullname" . }}
|
||||
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||
metrics:
|
||||
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||
{{- end }}
|
||||
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,61 +0,0 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $fullName := include "autogpt-server.fullname" . -}}
|
||||
{{- $svcPort := .Values.service.port -}}
|
||||
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1
|
||||
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
{{- else -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
{{- end }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
labels:
|
||||
{{- include "autogpt-server.labels" . | nindent 4 }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||
ingressClassName: {{ .Values.ingress.className }}
|
||||
{{- end }}
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ .host | quote }}
|
||||
http:
|
||||
paths:
|
||||
{{- range .paths }}
|
||||
- path: {{ .path }}
|
||||
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
||||
pathType: {{ .pathType }}
|
||||
{{- end }}
|
||||
backend:
|
||||
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||
service:
|
||||
name: {{ $fullName }}
|
||||
port:
|
||||
number: {{ $svcPort }}
|
||||
{{- else }}
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: {{ $svcPort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,7 +0,0 @@
|
||||
apiVersion: networking.gke.io/v1
|
||||
kind: ManagedCertificate
|
||||
metadata:
|
||||
name: {{ include "autogpt-server.fullname" . }}-cert
|
||||
spec:
|
||||
domains:
|
||||
- {{ .Values.domain }}
|
||||
@@ -1,16 +0,0 @@
|
||||
apiVersion: bitnami.com/v1alpha1
|
||||
kind: SealedSecret
|
||||
metadata:
|
||||
name: {{ include "autogpt-server.fullname" . }}-secrets
|
||||
namespace: {{ .Release.Namespace }}
|
||||
annotations:
|
||||
sealedsecrets.bitnami.com/cluster-wide: "true"
|
||||
spec:
|
||||
encryptedData:
|
||||
{{- range $key, $value := .Values.secrets }}
|
||||
{{ $key }}: {{ $value }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-secrets
|
||||
namespace: {{ .Release.Namespace }}
|
||||
@@ -1,23 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "autogpt-server.fullname" . }}-executor
|
||||
labels:
|
||||
app.kubernetes.io/component: executor
|
||||
{{- with .Values.service.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.serviceExecutor.type }}
|
||||
ports:
|
||||
- port: {{ .Values.serviceExecutor.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
- port: {{ .Values.serviceDBManager.port }}
|
||||
targetPort: db-http
|
||||
protocol: TCP
|
||||
name: db-http
|
||||
selector:
|
||||
app.kubernetes.io/component: executor
|
||||
@@ -1,25 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "autogpt-server.fullname" . }}
|
||||
labels:
|
||||
{{- include "autogpt-server.labels" . | nindent 4 }}
|
||||
{{- with .Values.service.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
{{- if .Values.service.pyroDaemonPort }}
|
||||
- port: {{ .Values.service.pyroDaemonPort }}
|
||||
targetPort: pyro
|
||||
protocol: TCP
|
||||
name: pyro
|
||||
{{- end }}
|
||||
selector:
|
||||
{{- include "autogpt-server.selectorLabels" . | nindent 4 }}
|
||||
@@ -1,13 +0,0 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "autogpt-server.serviceAccountName" . }}
|
||||
labels:
|
||||
{{- include "autogpt-server.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
automountServiceAccountToken: {{ .Values.serviceAccount.automount }}
|
||||
{{- end }}
|
||||
@@ -1,15 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "autogpt-server.fullname" . }}-test-connection"
|
||||
labels:
|
||||
{{- include "autogpt-server.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
spec:
|
||||
containers:
|
||||
- name: wget
|
||||
image: busybox
|
||||
command: ['wget']
|
||||
args: ['{{ include "autogpt-server.fullname" . }}:{{ .Values.service.port }}']
|
||||
restartPolicy: Never
|
||||
@@ -1,126 +0,0 @@
|
||||
# dev values, overwrite base values as needed.
|
||||
|
||||
image:
|
||||
repository: us-east1-docker.pkg.dev/agpt-dev/agpt-backend-dev/agpt-backend-dev
|
||||
pullPolicy: Always
|
||||
tag: "latest"
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
iam.gke.io/gcp-service-account: "dev-agpt-server-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
name: "dev-agpt-server-sa"
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8006
|
||||
pyroDaemonPort: 8004
|
||||
annotations:
|
||||
cloud.google.com/neg: '{"ingress": true}'
|
||||
beta.cloud.google.com/backend-config: '{"default": "autogpt-server-backend-config"}'
|
||||
|
||||
serviceExecutor:
|
||||
type: ClusterIP
|
||||
port: 8002
|
||||
targetPort: 8002
|
||||
annotations:
|
||||
beta.cloud.google.com/backend-config: '{"default": "autogpt-server-backend-config"}'
|
||||
|
||||
serviceDBManager:
|
||||
type: ClusterIP
|
||||
port: 8005
|
||||
targetPort: 8005
|
||||
annotations:
|
||||
beta.cloud.google.com/backend-config: '{"default": "autogpt-server-backend-config"}'
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: "gce"
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: gce
|
||||
kubernetes.io/ingress.global-static-ip-name: "agpt-dev-agpt-server-ip"
|
||||
networking.gke.io/managed-certificates: "autogpt-server-cert"
|
||||
networking.gke.io/v1beta1.FrontendConfig: "autogpt-server-frontend-config"
|
||||
hosts:
|
||||
- host: dev-server.agpt.co
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: autogpt-server
|
||||
port: 8006
|
||||
defaultBackend:
|
||||
service:
|
||||
name: autogpt-server
|
||||
port:
|
||||
number: 8006
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 2
|
||||
memory: 10Gi
|
||||
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8006
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 6
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8006
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 6
|
||||
|
||||
domain: "dev-server.agpt.co"
|
||||
|
||||
cors:
|
||||
allowOrigin: "https://dev-builder.agpt.co"
|
||||
allowMethods:
|
||||
- "GET"
|
||||
- "POST"
|
||||
- "PUT"
|
||||
- "DELETE"
|
||||
- "OPTIONS"
|
||||
allowHeaders:
|
||||
- "Content-Type"
|
||||
- "Authorization"
|
||||
maxAge: 3600
|
||||
allowCredentials: true
|
||||
|
||||
env:
|
||||
APP_ENV: "dev"
|
||||
PYRO_HOST: "0.0.0.0"
|
||||
ENABLE_AUTH: "true"
|
||||
REDIS_HOST: "redis-dev-master.redis-dev.svc.cluster.local"
|
||||
REDIS_PORT: "6379"
|
||||
NUM_GRAPH_WORKERS: 10
|
||||
NUM_NODE_WORKERS: 3
|
||||
ENABLE_CREDIT: "true"
|
||||
BACKEND_CORS_ALLOW_ORIGINS: '["https://dev-builder.agpt.co"]'
|
||||
SUPABASE_SERVICE_ROLE_KEY: ""
|
||||
GITHUB_CLIENT_ID: ""
|
||||
GITHUB_CLIENT_SECRET: ""
|
||||
FRONTEND_BASE_URL: "https://dev-builder.agpt.co/"
|
||||
SUPABASE_URL: "https://adfjtextkuilwuhzdjpf.supabase.co"
|
||||
AGENTSERVER_HOST: "autogpt-server.dev-agpt.svc.cluster.local"
|
||||
EXECUTIONMANAGER_HOST: "autogpt-server-executor.dev-agpt.svc.cluster.local"
|
||||
DATABASEMANAGER_HOST: "autogpt-server-executor.dev-agpt.svc.cluster.local"
|
||||
|
||||
secrets:
|
||||
ANTHROPIC_API_KEY: "AgBllA6KzTdyLs6Tc+HrwIeSjdsPQxdU/4qpqT64H4K3nTehS6kpCW1qtH6eBChs1v+m857sUgsrB9u8+P0aAa3DcgZ/gNg+G1GX6vAY2NJvP/2Q+Hiwi1cAn+R3ChHejG9P2C33hTa6+V9cpUI9xUWOwWLOIQZpLvAc7ltsi0ZJ06qFO0Zhj+H9K768h7U3XaivwywX7PT7BnUTiT6AQkAwD2misBkeSQZdsllOD0th3b2245yieqal9osZHlSlslI9c6EMpH0n+szSND7goyjgsik0Tb0xJU6kGggdcw9hl4x91rYDYNPs0hFES9HUxzfiAid6Y2rDUVBXoNg7K7pMR6/foIkl+gCg/1lqOS0FRlUVyAQGJEx6XphyX/SftgLaI7obaVnzjErrpLWY1ZRiD8VVZD40exf8FddGOXwPvxYHrrrPotlTDLONZMn4Fl46tJCTsoQfHCjco+sz7/nLMMnHx+l1D0eKBuGPVsKTtbWozhLCNuWEgcWb4kxJK5sd1g/GylD43g8hFW531Vbpk1J1rpf7Hurd/aTUjwSXmdxB2qXTT4HRG+Us6PnhMIuf/yxilTs4WNShY0zHhYgnQFSM3oCTL6XXG1dqdOwY2k6+k2wCQtpK45boVN5PpBrQuDuFdWb/jM5jH6L8ns0dMMlY3lHM459u7FEn8rum/xXdP/JvpFb+yct3Rgc54SOT5HuVUNAHzzmbWhY4RG4b3i21L2SlsVUwjKvu+PlN4MN5KPilvHe3yODXZu0Gp0ClzDNZQiKQU67H0uYr6eRccMDsHtMlPELqnjyQZ+OriydzB3qXidAkguKNmzPypz0LyTMnry7YpNRGyUw="
|
||||
OPENAI_API_KEY: "AgBzA0t5U4eXqjAIZ1z2zKWGSYKuPuWMe38gg9DyU5ELbvpWbkBuknl4B1+2PH9Cy1Ma0NGfRCW5p5iqX94ay5y16lWycExgw//ue67E0x5YxZw7Bmp65g5a8IGl1y2uSEEJU7DGGKOSGU7a0vjtLHqy9GfhuGMMF8bKy2Mfz1Q+46f9rtwTs25mk+8tGvL0HJqjgX38Xuu8lbZrab8ywiO66cIJo2B5ncx+kkQ46ApLwWgpsjK/AEbvoWdlCws2PM0Tn3CLV2vDkFSPLyoBOfNfHRcCJuVi8nhzPB2W4XnRqdMYy5/HhRqbU5Fcp4eFSqiMwtd8KdpymijrawcdTgQJX8luv7F5DOVukP1WAMT4a8s7vumwtEeFruobBH8ztrHpGD9rIFJQKCsZwzWEBIRicU2yQlb7L8EhUkCqkUa3yNui7nS4sxRnQx24QHMCdUAdgNB0PiU51RDVbY+r2Rbpj1i6htmp5a64bd+n3jow/D2DYxlMXVEpcfLnhPhYfpsZegCoIaBcOMyCg+p1PUKh9w5TUbByLHAXiwdMk+vS3qf49fCOwvsqq0gBeCeY+7lBPYc3iDR+S0V6rnVv3PzM3fD5ighLGm7+z5eHrKxQapflELAmm+t6usz9wHMRoAzQdu1iuYeaoq07fu/yN2pdIpZ4bYB1vFvpqGq1E/XLFaoVy9tT63vLjwL/URxhk4kUYejCXST3gemm6o2BPoj2tU00SKzttLuJbcaYsyGRyiH5xhcwcVIIMsau+gqG1ofMVp8YJBxIKD0JNyg+/bE+iORIjZeAoRexUfhZfiEyjmPj5bHJgtkMoiWrLnBSIbhjDrW5narzxXgWyjoelSH8x1ko0kVGtHHDCdWoTIHjMA16HiLqv3BqzeB5cXNeqY1afbZe8KH1rUlSJB4Tg2qz6+AEUQ=="
|
||||
SUPABASE_JWT_SECRET: "AgCXWGuGOPbdUZsn1G+amfHxm1CZAmuiULAml7sDJ+SUXUBlBWOf/wb0Gf9vnjPrpS5QqeYUQDzVPIXRqs1BkL7m51zAYt4U5K1XGgF4VmUv5Jqm/99iLB/biuVBuGj32wuYzGNEfuPPz6sfg51AfPfuOCDE/bX9xD+M5E++wVQChulm0Lqab5GdBgZC2M90Cb57EjNbwkCnNhO1HY2etwMKJ5q4J6N8gW1nxdWemUFEtQuHRBwEhCA+XRVf4MHQPwixb0Kn7cA+D6OthxWaxsXgg0li/kY7tF4xed2XXkfhARFbATryExcnAXLOucWS1+NKjLSUCZdqeqR/+C6uKyAYQNj60WU9ikDG5LJrLgnB2dXVBDNFHWbVtWtHABdyIVENZlXCBYtIJUpDBVFVIZp/GOyR9mhwPil0qZOiLE6HXiRENyMcZxNk1E9BHQZHS6WKExsi7RP3kJVFcWknBvH8IydkoINRfGO+LNy+H8EK51ml60iq6pvNVRwcxfZBuNcdJQrWflsLbi2dT6u9tWM27COnV2UCWqJuslVhdEAdpeB/nErgnBcSWXl4vtApasxYw7l5QWTU2597TvMidqm9ardvFOiuj9SxRdLZ/H3x3rsn8yn3C22E8Ism4ciEA9wxjwL3pgWiSsRsIsTpI0++lHSSY7hZvsarwFWcgwzjZhufqjVTbRJiHGOeXijiAqj+b5haCkdYmJCFeJuph11GABtORqnVh2xkPfzB3iWpfshX+udtjr7vdJCcpQyRbq972I8sTqFJXQc5hXQYu8/JWApKnpYMFq7MtrCKGurYxLPx7pYaf1sA"
|
||||
REDIS_PASSWORD: "AgBKMJoMuj4Aze7QZFm0mmR+7FJ/1Shc/fvFMc1yv1WcyT12ngDlSdmw6eW6PaAxnrzTRZbjGNxDVONS/8g86OvEEe+OiZjI7iaGxipGkxeKMzHPbHgQt97gKRT0wEQ8K6d67gD72YZDpVmYKMOWlMDIWl64404O1Xq4FJeBQQiB57MpP5VBX0Haxe+piYfyCcli/V9mZqLb8rzutl+IovCzd3z+rpJ2EC9kgCWjGzH0Kaylmrg86ZFFSQScTcv+UQ6/7y2WldVJPohMFEOFbxUXEThzkPxy7rryNNDrQ2M704a+/ixAqhQ9nJmaAfMNdFgp4T0oEQlsTPBEsXwCt3yzqbdAm+eAohe2X60d+trNsHdMGEzgWDFtTLEjCdKml9a7GJMJsZsf2Qb1AnvdwlLFWm9jm8X+x9YXrHvakso+zvRCB1uvVEB+77ys4y0flBXDheFOTsS7cnGfumexGV/0IrJPBujVJM1q6J1ilPGTYqWVpSznl4taCPvkGjFtsKj1JHlc1FMkyV9vmkHfMfC/YuYYzMpKcfMQlUh22gpth69ENhN3DNUUEH3m5Ea4hzG5lsiCJ9XFJyJ4RSqUU3U58zy18ONEzlX1qNb26oqTSe2j5+29JpTAOkmcRyMBH0WHhB1Us5vgYjN0WNKY4EKLO53kxJDJIKiquEb1mWAmy9yzft+LhroqpyhAUtTvh5MLVs1CCpUX2Q=="
|
||||
DATABASE_URL: "AgBiuPoCatLyHm2T4JojAjXxjd59gDazf2eSPGFjtagTe/ue6crSW9oios4+kzDhSoK+t6CVqBKtRZRK2pzeKJ0xNsEQbCPU8xGrymUS2HsBuadSKz6opJzsrF7V8cFsiZWl8aoJqV1QR2pbRf/o6ws/g2PiXnbykDPwViamQlN+iZXzYA35h8QPYgXLkdWXzqII6cnpxdkgDQGFuZxkKTm6yqX4tKwCT5GcpNNV333IxX33ljZQDwBJENxAGs43wH8KOhSeVq5uGArJz04teagn6zAxVhP6ZnoK77FCCCHzgQ5eupigBxWnLXYSuC0652hcmCWnVTy+eJzGAWvCwdTk45xZ2fyvxj6uTc5DG9Pqk1U5SlLr9C9yvou9Qwd30M4q/Sj9t4WtH4wMIuCHRp5uaTzDHdW+XHIhflRIPJD4XTXvotsbawCgpulwowrtWXtiDZmUJ1IOw12tXnBROk62lglfeb4y0zCc1snpBQeAJd1GWrksZ/j+VRTl6wJFCPfnQot1g6qccBah4Uiz266o2aybcbZH6nIu/hCrRX8QSFrZQZODJoLGZH1XDjYEPX/LHVaCRsQiBiFuWZbYqcU4RhmOiM/KKTimBsl0lzlAMEz8ITL0sLJnjJleqdqPuDp0IAkAZCjHK9cshJIv5Kxp+m9TFRSSscCRSFeVCqROaxZsYKpfdb0JaHFWaZ/h8Is="
|
||||
SENTRY_DSN: "AgB9i02k9BgaIXF0p9Qyyeo0PRa9bd3UiPBWQ3V4Jn19Vy5XAzKfYvqP8t+vafN2ffY+wCk1FlhYzdIuFjh3oRvdKvtwGEBZk6nLFiUrw/GSum0ueR2OzEy+AwGFXA9FstD0KCMJvyehSv9xRm9kqLOC4Xb/5lOWwTNF3AKqkEMEeKrOWx4OLXG6MLdR7OicY45BCE5WvcV2PizDaN5w3J72eUxFP0HjXit/aW/gK32IJME0RxeuQZ5TnPKTNrooYPR0eWXd2PgYshFjQ2ARy/OsvOrD10y8tQ3M5qx/HNWLC/r0lEu2np+9iUIAE1ufSwjmNSyi4V8usdZWq7xnf3vuKlSgmveqKkLbwQUWj1BpLNIjUvyY+1Rk1rxup/WCgaw+xOZd6sR/qTIjILv5GuzpU0AiwEm7sgl2pmpFXq6n6QjNOfZoPBTL73f4bpXNJ3EyMYDbPxOtGDz91B+bDtOsMr1DNWQslKkk3EIilm/l0+NuLKxf/e2HwM3sB15mkQqVZBdbiVOr7B27cR9xAnr296KE/BU6E9dp/fl+IgcaonMpTsE61pCLHWxQXNBO5X078/zhmaXBQyEBNQ5SPDr9u3pHWrrLkBtXwldZvgmLMMVFMAzrVVkJB4lC9sZj0pXPhda0/BsA4xcGRELj/PizwSr+kb3lDumNMqzEap5ZjEGCBpeeIVSo19v+RoEDw0AFmyxfYx2+91HsgiEqjEUg+J6yDmjAoRpOD1wRZOnnpR8ufMiqdBteCG8B5SXkhgto1WtDyOMVlX2wbmBFVetv2nAbMIA/l4E/Yv8HXiJsTqAkeYc5Qak6/SMGnZTw7Q=="
|
||||
SUPABASE_SERVICE_ROLE_KEY: "AgBKJDPEiTQUYLY0B/NKaAkxH7whrGuxQVtRdz9mEr/Bx06n1Yu1Zm4/oEQp3OvYerRvQWuv1k3//jf3eiya4ZW9+ZntfPdQWL9/tzq+/spevFtiEvuQ8uuUhtNOU4IGt27KTTlhCfeHKte8jtLQ/lwcrSrfPZ1T8Gy8PXdsAgakGUauEs2oHuX2XUaPE9UFF4HRAhmjPZ9e7u7Zfgcj8D+otjrwNVC5ZXFM7/ha0roeZHdpTvOcemKjxhiZA0FmdkXgOCPihNxlz0sKcupCEte6ocnSkpL3pBflBsa9+NLz7kLCUQPeOCExkMTndyqWk1kFci6j35cBP6PQlHfWPdo8OFCdG+3EfvEt5+4PQ08d7nXRZqowBiQdE2/e8qA/dZc8cJ7ecpza+9Qf/pNIl+9Ix0EFvmB6rpbO9w5Ptw2yMOAebVl7qV+A65GelvcPWROK5Vfftwx8KT2sn9ldVOYy+C7OafgOm8qaL7mEMePSwJy68MKpnMm/TceE7xxZ2sMSWEl9FMn4QXEawD4LQrJHKpum6XyUG2FlMkogHMikOEbJzz1ICAcHB6OWJXo3wU+fK8jkI4/UYioFSfF9MQXaC8bUGc4NT6T62KvjnrdkmOHG7HcN4UNQ7yBa/fP1pM7peYQdwAKr4Oxl4v3i96uKRdCuIimYiWpcxklkQhmSsMLKFMZGDDvv1BNtL6oxK4ZaEyWoorEyjkd2UrSpbP6cvyVMVWbTl1/BD350NRn6OYTpGIXwmAhqVWuuyt8kfLLU6Ot2MYcq/i16qvc3dA5XizLKHY95X8R+DlUCEzawF75Sx++eMPKU/o5rxhZNRjvffIcXtw1Hy/uqVCqilmSt33RqUsehOxQUqHBIW7L7sAik/L+hgTiE3MwN8XSfGncDB/bNweJh3ZSXsdwZD2bleEY1nWpsXVhcJDNcdW3YscJbsyTCGQcOb0zEQaxSmfLAd3rIa+SAZpFEOsD8A5kZjI4QpmqPkhNHeF8="
|
||||
ENCRYPTION_KEY: "AgAlH+nrWFAwm3DxUjlKTdjNeqJjs2ozS7VcIv7it9HmV7LYVntyWgaOVch0JJe6RKQ1U+xXD7Y0jSywk9iTPQe1R429q9uNk3Jnukd/U8UiD0WoFcvte7+ZhESFb5jyZqNEYHCYUDhQyi+Xkm2ha2PQG0hMFrLSabjok9YVO0lU6zroyJpPKs7WpoWaBlfOpqwCfDShKj50gpY5q/xgENkzDX83nKB+WX8BauGqw9GNFKcSZA4ZANHMLoJpqxhNwDqHJg0P9cUd59QfyrftNbr5xwpG+z0Qz/WehC4EuPj2eBn34GF+C02F7T7m6IqQd3x03gh5cyFUP37iQ/KY+CKif+slJMxC86pBVstGSvqAqX+43g/y2P3sQHTMKB+yXsnjkRPIeSAohqCntKDv4CfF1deVLLP5oVikFJOHAPdzVPDawex8hClzxmtVBa1loe44lEDnwHAQwZ+CGYhK6UxdnxEZWpu0om+SqWdiPor9rfY2U6ek6AymMjAci4pZAFgUNbv4saWQo8pXKyyhYfJ1jzwsnAl+tk72HnidVFOkoWkRiWDCiJV4ZwQNnJoKzq+8lE88GbFIc5aa+6a/+W092yWPgRoSwXy6gzDuWmHo6pfStVDxmS8c8e9pSBDyCFX6gN1Qqb1CIXRNcVq+vspwcLrYbs53i7lPUEpVatCIwPmOXvNqzr9C8zstUG5Znjt/p3KAEnRNnD7RmbKxLo6RUIHbn4hsicb74I8bjMHgVoqjAXT0pNCFN5JtPw=="
|
||||
@@ -1,129 +0,0 @@
|
||||
# prod values, overwrite base values as needed.
|
||||
|
||||
image:
|
||||
repository: us-east1-docker.pkg.dev/agpt-prod/agpt-backend-prod/agpt-backend-prod
|
||||
pullPolicy: Always
|
||||
tag: "latest"
|
||||
|
||||
serviceAccount:
|
||||
annotations:
|
||||
iam.gke.io/gcp-service-account: "prod-agpt-server-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
name: "prod-agpt-server-sa"
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8006
|
||||
pyroDaemonPort: 8004
|
||||
annotations:
|
||||
cloud.google.com/neg: '{"ingress": true}'
|
||||
beta.cloud.google.com/backend-config: '{"default": "autogpt-server-backend-config"}'
|
||||
|
||||
serviceExecutor:
|
||||
type: ClusterIP
|
||||
port: 8002
|
||||
targetPort: 8002
|
||||
annotations:
|
||||
beta.cloud.google.com/backend-config: '{"default": "autogpt-server-backend-config"}'
|
||||
|
||||
serviceDBManager:
|
||||
type: ClusterIP
|
||||
port: 8005
|
||||
targetPort: 8005
|
||||
annotations:
|
||||
beta.cloud.google.com/backend-config: '{"default": "autogpt-server-backend-config"}'
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: "gce"
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: gce
|
||||
kubernetes.io/ingress.global-static-ip-name: "agpt-prod-agpt-backend-ip"
|
||||
networking.gke.io/managed-certificates: "autogpt-server-cert"
|
||||
networking.gke.io/v1beta1.FrontendConfig: "autogpt-server-frontend-config"
|
||||
hosts:
|
||||
- host: backend.agpt.co
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: autogpt-server
|
||||
port: 8006
|
||||
defaultBackend:
|
||||
service:
|
||||
name: autogpt-server
|
||||
port:
|
||||
number: 8006
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
limits:
|
||||
cpu: 2
|
||||
memory: 10Gi
|
||||
|
||||
cors:
|
||||
allowOrigin: "https://platform.agpt.co"
|
||||
allowMethods:
|
||||
- "GET"
|
||||
- "POST"
|
||||
- "PUT"
|
||||
- "DELETE"
|
||||
- "OPTIONS"
|
||||
allowHeaders:
|
||||
- "Content-Type"
|
||||
- "Authorization"
|
||||
maxAge: 3600
|
||||
allowCredentials: true
|
||||
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8006
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 6
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8006
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 5
|
||||
failureThreshold: 6
|
||||
|
||||
domain: "backend.agpt.co"
|
||||
|
||||
env:
|
||||
APP_ENV: "prod"
|
||||
PYRO_HOST: "0.0.0.0"
|
||||
ENABLE_AUTH: "true"
|
||||
REDIS_HOST: "redis-prod-master.redis-prod.svc.cluster.local"
|
||||
REDIS_PORT: "6379"
|
||||
NUM_GRAPH_WORKERS: 10
|
||||
NUM_NODE_WORKERS: 3
|
||||
ENABLE_CREDIT: "true"
|
||||
BACKEND_CORS_ALLOW_ORIGINS: '["https://platform.agpt.co"]'
|
||||
FRONTEND_BASE_URL: "https://platform.agpt.co/"
|
||||
SUPABASE_URL: "https://bgwpwdsxblryihinutbx.supabase.co"
|
||||
AGENTSERVER_HOST: "autogpt-server.prod-agpt.svc.cluster.local"
|
||||
EXECUTIONMANAGER_HOST: "autogpt-server-executor.prod-agpt.svc.cluster.local"
|
||||
DATABASEMANAGER_HOST: "autogpt-server-executor.prod-agpt.svc.cluster.local"
|
||||
PYRO_CLIENT_COMM_TIMEOUT: 15
|
||||
PYRO_CLIENT_COMM_RETRY: 3
|
||||
|
||||
secrets:
|
||||
REPLICATE_API_KEY: "AgCPCgcYb+tE8/k45Y7/my4G2jWPCuEMTXJIn1fG1q4x4ZJPFzb43m7Uqtwn23NkmUZ5Qvh8BXedrtHwxapuYzw/P6c7xK66xfLKRbTWtYk4twS3sxPb+pt1FXY4USEjj5yeIFduybkqhE2QfnGoyrbDZ4Bz3AIgnrRD0Ee5m9u5yNZTPmJqZZqg4MRdUBCxCWIJBkW6DCE9nCPAQeNPD6e+lZ1j+/LocT2HX/ZlcsPXCxbn6wkxoyLqA0vUKSG9azS6oLvn0/3Cb01ozG8S2OEAqWIImFqhKGMfGqL6jSZWln43cmQdMTzSzM+HiprA9JHjZqGK7wOV9HZvSR+58IXoJGPBEIM7jIg5KqPjpZY4KFZBp5OiiRRYu+nCbuD+KsY/7ogjPHjbi1rpR8TrtXdzWNmwsTTmjytB/KEqeUpLWOEPgArFPyrNTS5/nmREH7r9jNEhfIRdTlS3IVGGXp/VN8napbNND1GDyzowvF771neq7/zTmfCRCJ4J0gwPNKM5rzOuRW+caEf2qOFBKIldVa/J0PFg5bAgpGL6jhpXHj0Q/+j1s3FA/D2ZebZTPIpKe40It3sWsS/0Qjhbj1GMbL4yUWvGpBSUTk7kZazkaVND1LbhjC+4AolTQdIU4MgW0bkmDn5ZI4a9/dHyLS3lFeYNSQ6vnbz+Id7zB3O0D6/FH8nfAUGL8V+J3eFKMp+G67z+XYH6WGABaNicz41zFBDF5hRax+k/ZziPPlFY0kDc3cAB6pLc"
|
||||
IDEOGRAM_API_KEY: "AgBTMZopEC5qALJvordVcdbUnwOEhLR5v6+7bTWg8GF2GSeNn2jKqM+o+wr2FjZJ0vtfyS+MjpOrr1xXrhdWLHg6HXyonjg67jS4BwxFrX60MbnkuoeYDX10O30JloAaMcq3a7OzLa/2r9RjqICO0fappaYHuysTcj6XD+wHsgQgZBSaqaomP7WR0YEIEiLVJaVFfQJaj1lqffIXxSQHE/oqafKqV3CeBPcD2jgwvErBMOBldTNDY2ehSmS54ebwLcXcLwf6JoQjXeit2Zry2ffnW5eNIIwYVl5GO4JT6rE2lB4B6jDs0z/y7toXdN5pGuVoYGDia8OKd7MuW3IlAWkhYLcoKla62/YzcC1JffMrqV++lWt4WFcuXWvL6UUNshwCdX/LQ9/tMt81cCQuin4mrVPxrEYALkin6HBaOWChCbhVS31lPWmFLM+vE+dvogY9Zp3PubxP5E3gsRLKn2LeAEXiGjBlf2H3IQ6/YI/WonsT1pKTHMkegHmvNz79XCFAJLnUIXlffznyTj+A+5VAVVl+i90mc2UtQLyEVuMbwK3lcoKB0IzNCs8OY/9DkuoROIikPOg79ZVmo+d1DzSl3y2tlR64Sw/pd5TL58+/MVbLFI35mKo1HKoxN+kUIDehFfZ8Sn8+8MkUsuAT7xfDvgYZpIxC2138XqTFJn2PhvdbQGB4l9dGIo+fjrddWuoEhAzZXJ8EmxTUaY+SRPKyWqKgf+w+qjdzRKqsE/zIo5Xj3LrnJh3VEC01waR1TdM+qIRTlpAO8m5oYHO8QB32GnabUbjPRDVIq2Vkp9qKpwgWtrBHTQ=="
|
||||
GROQ_API_KEY: "AgCxjMuIUxeJYxvGFMMRV3vOeTs7eJbA+oHsjCi6dCVL4/rk9GBK+NSDuG87ltIk5iwXsx75arP8YLHjifC0Jn5lfzxy4KLmQSkgfXBw+X05nO1zNoSWCadVhZDKAu1YL/FTD874f2UsSRLMV9BkqW2YNjN+WXab+dDTkicNcNTV6q/HKn6vMLeQd5PDv0Nbtup7B3C6rfSnIiKC0YH0Bqvc5BPEmw+6PVK9nPpdJiL6IxPX84LsJ/T1vMRNxlkFgEAN+3CZyx5q3ycMEQjOsBQGWny1HDeGuYeeYxRbg8PWMT+mx5uDampxqf66ztT1+PxpBx/+pgReSvWot5zGI1uN20Fiqav/n8VYF9x0wvYfFaSSGWeosjJ195MZDjq0cjWsy14lhGPbA839aZm+E6EQ3hmFzQULM4iR1sGu1OP87GhE6HbJ3Os4Gmsbo3XqWEy2puWSqcnZbkZvely5MGU6HDQ0L09EDMTG1PmmI3VmRiPUmJGxe+GtHaCmtJINsBrrbvjIki3TLSGwbIITKh5OEy5Y9My9H7WWZnzX8Dppkpqti1eUxh/GdtIZvLBve2N9nw65NRcx0sNp2knsO7Yk2+J2I9IrEwE8eC/AeBt7ii1ukCf1CSPNDj42GtqWgrQ15X85i7XCudmi2n4QfVL9/ZGOIjt95m8Ge+/o1Q4ltZBJ0wNgQPHClr12s/2H02BkmoJfUBlVQsGSc7yDz+cwPHLGb+tpjdPwENkm8yizTgK9/SJYa8gNLxFlJRa5MqZyMuye2A1mBQ=="
|
||||
REVID_API_KEY: "AgB2+w7euCOnPTTag2oZWnTDiuHZJGjpsIVzIhlXXL4HURNEesANasrjyaQo1Lw7Zi2QDEKF+0XnZduOs0q5kRED3CUD9QN2aDClblOXC1g5zfmsrRp2wpISdsvOmPuMbzmVgIGA8fxSASm8+tlGh8T+QvlmXVvfD6ZWAbLXEW/4Inrz8o9RyEIjoS/g6NynVYg4CaY4xdG6KZIUuR3VkiI8irH8mXKf5O4LKNC9qKTMF8/tYyyv1gS8GAiU9JcuWKUYpqHoNah293d+vTVXVwo6o0GoQ+huxh+90cS3D1FPhiWHABeLYS292brnshJY3AuoCAPZxyQK69EXZgjUFCc+m5n2juF27P38QcCxtgr66kMXwg582OikJ77nDg6QHafIGnqSkUG3O184UOAzUe/iOjjDNlpxQaZoRQXP37zPIZcingWUx4zvZVjbsQcKSqdiI5u6K8kDw7F8wfCJI+3Y6YH9k7cWE+6ZmK1U7hEh3YKmqI5I0e4WolljRv8PlsWLZdgN5u5M7NqtYjqEhdd2fJ9fJYedXeATRefUHtthhvLeSbg3wS0f90pldIej+da1ZPpnToBN/o2YUA03pbQmty0Ce4EVBbwEN9sSNJGC1hicquURQP0baLBTsXzVZRkTT8OckxRkCN8UysTdkMtIf10AdQ0QVe6lAxR0DjnBL/ysgpSF1ZyKBWm6l7rBEsIIWXjBJpeGo1arVQVtepk8q1nLLWVpykJIfRnPRTCE41/Z9c0="
|
||||
ANTHROPIC_API_KEY: "AgB+40jZoawJ6HaeyyLZvDp2ByF4EPy2Ce806D/lekwJVmxpYXgkQdLJyav6bt9c1g5eDShJqezx1T+jGV+ApQbhSwmO403nJdYO825Fd3XVJ5K0xfFNt8DOTC9r2egWFvJZL40s/Y24kpr2Mmsqp+Sk9DxMNdYG/Z4PnT8PLWgb3yIYGGPVjlWlHL82gn4/B1bVTk14/cGXX9eSr0ktKKmS2OGLMYUwLT3oYGy4bRq9bH91XwjjdW6vMluNBGYibpi2f4h3nYORaQn42OhzTqON3XUdvNmsw1ZH0raMAJq47SU0lC6Ar9MzwbtUWY3tF6BlTmyx3gPavjQCnXg5cRxmY8JklrynDoyN+SBludzaWDzdAjr4vGPpkOo56RBY+28tnNjmxgyttGIYfFa8DEsrrJJgZZxSUvRqwJc0TWIKRFP1aIHkQ5DclUilFtNfPMezxwcFqrsYTEvtDjsls/E8uTNUN99cVQ2x0PxDsLKr9xVKAKkzzOBEvKEAJy0t5RtRV9A6kc0b16YbjIkFphip4e7HJTWKRvavknw+MXjGXXQrz9+xp8LrjRcgCyZp3BqSo+gsX8KQJSnhiFfKvgt7RdVaUVUA+sn5fIQGPWA5IkbI4gS12BRFDw59+Doc5FbCGUip4jDL8I2bPuNKQZLmSMx93Nu/60WBRhKXYz+GNzLzvhk0IpEI3d2GeWvC61p/f5eKnsLKNLDrc3k8rFHiUmXXhB+oQXMRSUFqq4hen32VVPWRhzT8nefww5Tud21CBg5+87x6WHOnB/A4vw+VuKD3fdeo9tn4HlD3w2funOVu9yv+NaP+MTeHus2PBeab/OtKLH09ezxnhmA="
|
||||
OPENAI_API_KEY: "AgAjPjhje52qw5YSXjRAwoXU0WyDEIAHnz2CjFtSjkpbsvvXFPlPMlOd/y7/dvABoyZHB9Ukxjna6opqV/hK/vHR9ncp9i7cDYX3Rekj+mkA6arMdqdJ0eikAGqWYPieu8RcBn6pHFGmoC8ZZPgk6Eh3Wyi4OCaPfH/O1bTq/RBQU5VDFvYfaeDZmYIu6SkD88pI0lT12Dklk1apsHlS+g3/rpQwDXgemE/pdmcNnt1zS6Ifu4isN7yg1pg1Thja+UiQnEkIiZkvmD39LO8HrwOFt8guJctRZ5gnVxPmSEdJLN089/fj5VXxTO1kTprbh1KeG9RKYS5LEPNYpgcl9/o884qMc/r0/+Cy7gL5R1THrEPHurVg8JfssCq8k0SaEtCElQ2081Scc/0p/k4URpXrsxUKZ8XUTIvYS0y2mEJPAAqaHAkwthY8sizhOwqWWnt8dGbCPwfQ11TiNSMikKIim9Bwm4tKM9aEolROSkivbGqFQQYSkensyp2mTqx7iFYlGBa7Z7PFRBZgPzD2FojWc6o5tLui5Xgi67ukO5WeaBhO6eMd2CuIlXqu+5x3+ixIytp9Jpke4mZKwbjYai4j3iELbzEwbGkjsnDyWNYn+1KnPOogd6i5+YPn09FbQO2Qvg2t3yUP/ePeX+fdRYk7AnS/o6nllqj9GLas48JFUlEx+KSO4qwrflRqPUmfmD3wPDTYR2q6yJzdatLYzdRQxEctFhgvco63uhW1YH+1ei1YuxutYPkIOqUwbgfIC3XiW7Tr3R8Gd3TimJLQM1etR6dwrEaEm0jTCIKUoZ+65OIAeVtcXIwWtwRjjUOtR8k9B2UdFoJOgtfIFzlxwYj4xUJrzRkCLdFD1W362n2+O5n7QdXDjYXn9KmxVUEph2vloeS8IGrBjM/l743A3trFD4CZ9g=="
|
||||
DATABASE_URL: "AgAfP8iiQGaA68dGVHQuHiKXldqhWungOlLEy6kg6nkKIY6LAwwUJbF59SrsbJ6Lvaq+40XiPSEV6ZjC1JpDyNQyPYzS6hUO9Ev82ViQ2H4Ba62jehBjXufVhabGurHe+F/WsyrXAEY496yX8I3/voy92bR+r0z66jRKHPwI+OXP2CyvdfIz6ziGwInkdfGdP0WRopvmSzbr/atUc1MGVBGuCvNguYWQ3WUwiF38EPObsoYpgV8fuD4trrFE2imHRs23AXMK/ntkqAjZwVWXfZNwaFECT9y1ue04rjDhuoFsL6lhvsK9Xf07mrTzBjdjJl0eCCTxsm0kZTTCwsPSq6H+6w8bjH33M1qeEnORwMuthFy4p0r3e+qlWbhHHwR6ku9wiwzCavDTd27EEfMKkD3zG7NrnbYA4zelHfG2q3/1/PZCeAOsa5jo0EuMTJr4p1Z6deKS4wevzOqJ/FcU1/5T24aKdxhVMnVrF9HKCLKHD+lJLJE8XgdZLFeded234nQfc9MGoBCD6FJvgfJCrjQh8QCSpm1aBKgu795Esff3ZqXJFiq7YCTQTOv/P6RXR5XA/LEqq1m5pcyBDzKixILE1SEbNdeXbYNhe7SbobKpQ9gq3f2ssCRNZGMgJtde6TQFx7J76IE4Eu9oqZefNQxHvh9lH2l0bROWy5NYKHfAejXnVGxIEVnoyRvyFB/HMOc="
|
||||
SUPABASE_JWT_SECRET: "AgAYMdZyP+UhxIdTx6qyRzq9xf1dT7S+DFEC8KSPEFydX9+hAdJVTpprOlgLnqSbfSDmbqcFnCH+aK/6rdRx3HI3v41FogyCNFFxTrfxq1Esk8VuaVh8XrO2xKPd4iGBPZaTrenKlgt89aGdjPJzgl+NlZ5+/BXd95P2uX39DDGr9GJdO14zBt69O+L+Yt7kdd3ZMBjWYibZAzf+YaNIx/M7jjzGLYvxtywMVTrR+6e6GkGQSt5CzBpgk1b6ugPVtFs7PqmMtUqXMQjlrW2u7WVZRWeXO93ukc/TtjO2XUY9JfrgibMf0H81NDDTAAQBNqaDk0LdXsPUo9QGnyeQZTsfAOaeM6lTxX9qCYjneN6pxe60U1BKLURpordRdBs3peAedNJ95GC75qcdSkZE2agjwJvXKs8yy2Ig5eiU/80W27IWPMSLWhMSSf4ixyfkNWM4EfWL45bXlVGvtYaeyqByb0QU1g+II3AukIyO1qOS572y0sGseEv/UlfU2NDBLFejeBZaz4s/20lSyLhP3v1Y9aTs8qWIGl67syFKZoCwPRxwip2v7wIDnlDYXtlxMpQUWDnSUX16zQiVALD3izeDYkd1RViBgdYT/G0tp6lBeV1vnF8tBEGWIl3GJFV0okUflAQ9NIrdC5+BlcQDD08Jn0oGjyje7KE/BfvB1lHT7K+h9rr8B/U8zBSaAe+KFjA8pcjHqXgi4Zx3ayTXdAddyFZd0YqONohEAvXB+BLLdYJVNNXjBFwY62XQ6ojD2ZYWz4m/Wo+/zG0Zm5s/v2VS8UT5qe2Wjs3oGHKIJc6Eo3hVwLefcb7V"
|
||||
SENTRY_DSN: "AgA+X2HkF9b3+p13JS4vG7VY+8p7su6qJ7smoPKqYh44Vpb7J5Eu9ksPNQkcFTDDPT8jAylqsHWUdI0A8u20+a4lqqGkmPN5tCgyBgAL1pIyvPUQjYUbL7A5lTQKlRLJJ+05h5XbkRU7cWR+G4yDUCDj2HcThne0CNDUbDao9D67ekSLUtp6/d0KO45Efao4MLuqISnypPUBGHmAdWGr2z/w7ItXjvUKt3RpH6pSCrGzjlKPKhenKdTsk/NX4Z+ew/JBbHiDQjKCdj0UlXFWH7Q4axaFy0T8tsqf/UN7n/QTalYE+v28isxrHvoR6h7kZETQV/gl0y7DdmTCi8/A1j1+e/9zUx6HvK+C/qGMsKMdNgaaVNSdfFp/yfMgXTUn4HGAls4gjVKSSRaIAbBq32NdKkIvRfocuAGsxInwbrDXLR0nzbHG/U/QhlvfL2gfqKRIVRJtEh99VW/KMMeXZUWR9dNt9gfTMtyzL7eta4oEV+g7sdO/9VjDn5wtic2/7eAxgA7wTEoDA8m0whpHH4VcPLHUfKLTHnRXVu6bykAfBgfEKhJBS8DghvPyu73qL5MREuYkGya4n0RQ73h5ja7mYwI0lsefQszP9Fz1lR+757dhJ6+/E7nNnOE/ShD/8xE0V54pd2IvrRoJmcOsIOZ5w+xWfmN8OyLn7wuEpqEuMHEoisLF9RSp2V5iKbB+fFB4o5P1/VqkNPEFBe0jA4K8DAGX+VdChMpjAI47wF22aj+jmTRf+EY+5l+aEvjyU0G7oUPVzzG8rYa6p+v56zeVsmU4SHIDO75J1cH7tnYDeOxk9fAYZgNplS4gKHVT0w=="
|
||||
SUPABASE_SERVICE_ROLE_KEY: "AgCADpjXfdpTDruyK2F4GRNT/Kl+yaI87mQdXDHQo3jOC3gWoOiRlXg70JG3jIi2cWjAXwU8ySjpT87aJdRwsMToeMD78zr0FbOSB2abx7OPTij8zWFSzhIo4cLoEkvLxZO9HXwQc959Cxh5oBcn6WBhJ5XMUxNWALIem9+Lb5Eu1CwxSF0EDrl3znx3Iqw/zUqnAgS+Ob4AAiJwXNO641ja7dAKYkb2NJ/KCBgmSXAaPfxQByuNkGP4iwmQuxhhJQ/N+LRVCu03J6NLPVw22feKKtZxAAroMDn5wPhRdmzBawqbRsejiCb0JNL2yd574CDN5xzsDur/RYkCpTrMWzgnN3F1VcYMuB9FwYazKU3XqviOYtP8Ca4sUQChHQEOFP8n3Nt0Z17zo1NtgRt8IBpXpDeZFgDZU6Zy8EtpHHn05KT8YqyLDms2LfJhduiuyndbZgeIfr7IcxbU4aBafh+J/tfN7Tlj5NFYxFImKQ0NFg5z6W9zKKkfFMo9WUcOOXgwg8+g6xeZUX9g3rNpMBNf2bt0UfNqSIBeAmUZVKHuEqneFONbgtqOP2NKsKsSfvCsnpKgAndv+eL627qWAuDzywWuoAcxsF/Kvo/fQnv1a+7abCr1Qhf61u3DBriGp6TAVhQ9z7iGqvkuviELt97NKekeevCgdjwWpk78iKBCmxJobBTErdX2Xhrqfc5AHteoUBYv3TS7N8ZcOmfVmZc2ulgLLQZZ5hK30w9FFu28bu01ArfKcSp3U21keaC/cGHBNdUWgAbg3wIH+3y3vU2MRHI6T6sFrRsNgJH6b8S+HcOInTsoaLFiRv7SYxGYliV47AEukv4G2G+9XO4i4y9P90u5i7KM+J5FRlR6sfiISPozGHUBe9EAKYQcqaSSGP7FWsyNl6DGq/pDkG8IJYqNr21Sl9N1cdhK/Hdd4J80q05A9f3AyzHjtU4YVcvz4TCKr1FJLugBUsz120cA8FxGXweIQRWCzGvSeGA="
|
||||
REDIS_PASSWORD: "AgB7eiUuFQO88vVMI28xfmJsA2QzEb71r3NyDJ/KTNsjqn7ai1KpjVaaTDyr4Xzo1wOhwwwxlhIoeBwf26wPiraJtkjRU9z9Aotvy0u8SXFm05ObhMjJoY2dBvW6ga3KNaunWoTx5e6NbYPGRIgNtRBVN4PH5Lf7Ou5SZBjJBaVWgIT1x71tB2eD2XksOw2mrfaF0WODsQxXDOaF9BJ4Gn7yIT0Nh76Okn9uhesQxvojaqlAIeAKXyrZJwAH5qL3D772rYsISmbHC0bCBgx4dbbtvsr4YgiR387ri7KGfrEqoFH/jzUp5cwsJNyBpWG1n2O0QXYgbMIsmJP6rdD+KTZkLGBz0wgq/JySCZM9hj54dYtLE7LMmpZn7//EKZk7zsV1u9oSciQisWcJqW8El+IMOAZilqSR2NjpI4cb0xR7/gTLLQF33+wnZwbbHghbDwTowkzOZ0i7qt73YkR8MKrlLhLcCGHjhyb50xr1DJl9mVUoyHXvFOj2tQO/273sMNdKpJvNFi9EEhdirzbcuphnaRm5xXYF1CHKtXUp6EvdxgHqEuoGwh5Kt8dtGMJfSJ40LsARZXCFU7CC6g/faPq93K5QB/bwlOdABeOVF/odqXZQAADX3TQwIPMH36XuqwNggWQ8Igy5o1d3Hi84jVChmjid/Wk8DREmkntzDy+4Jxzqx1rPSThyoOvopirY8VA="
|
||||
ENCRYPTION_KEY: "AgCmQ6fVBbbkm884bZyenUPhrbVBb3+sjOFwekFeeptorwVNDTqfOXtoWzl+W+t13tCqHDn8EqEgOGUPSJutAxfiyKcPo9IFDaMskUzaTGUSx/XUmQzHrI9tKP6doSk8V1Vmwm5PRk1elpMP90aG+TtjG1BLFU8JIozEFEvqcmdB9apnXacBV26vP2Gk709DqAYaCkGpXGfoCKDWNjrF/68W8a6UOaRC/+qHuoWXwi03rY16RdPIRRryHICrpp+l6zJToZFHboSV3UpENjJ4tWUW2Qd8pzE5+ZGiZaHcmqp0WtyBmN8d+7m1q2t5RjJ7DTuVmr+XgS5Eb28aHshZK4gdzlqEsYZSMSwxzTgKrDIPCxPqz+TDPA31fQyR1FfwNxgHztXGluUGPAVxtYVij/CGAkQpISHIjR4FR776lMFkddBaVQfbIyXQhnhEeaV9Swxr1EXG9/Nj6q3n13WmCsMVUZYTk147UCeaTdV6Ec4DRDoTVk4uVgGNsjgRS0wLdnW6naPKndOEz8XpjRtnPz1xNeyLW8SF9DAAoOV+zOrfzbzFaFfXozcExFs2OIDa+D9z57j0wi1Nh8qUoFIFVSjIJ5rOztDlDEd/15P5Zvfm5t/GIJNsIUoCEepirqEnQMqs4/J2ZkhL77qPk4QuvY6AMAvx8pOIh/4Z0Fwf2vJtKhN1lNvq9i7NFoiuiaWSzH/LWcsX8U2ibZ+Do5OspJuFIsP6E1v1Mm9hQdmbEp4XRpb4eBvy2L1a5K9vVw=="
|
||||
@@ -1,84 +0,0 @@
|
||||
# base values, environment specific variables should be specified/overwritten in environment values
|
||||
|
||||
replicaCount: 1
|
||||
|
||||
image:
|
||||
repository: us-east1-docker.pkg.dev/agpt-dev/agpt-server-dev/agpt-server-dev
|
||||
pullPolicy: IfNotPresent
|
||||
tag: "latest"
|
||||
|
||||
imagePullSecrets: []
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
serviceAccount:
|
||||
create: true
|
||||
automount: true
|
||||
annotations: {}
|
||||
name: ""
|
||||
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
|
||||
podSecurityContext: {}
|
||||
|
||||
securityContext: {}
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 80
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
className: ""
|
||||
annotations: {}
|
||||
hosts:
|
||||
- host: chart-example.local
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
tls: []
|
||||
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 1
|
||||
memory: 1Gi
|
||||
|
||||
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
maxReplicas: 100
|
||||
targetMemoryUtilizationPercentage: 80
|
||||
|
||||
volumes: []
|
||||
|
||||
volumeMounts: []
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
|
||||
domain: ""
|
||||
|
||||
cors:
|
||||
allowOrigins:
|
||||
- "https://dev-builder.agpt.co"
|
||||
allowMethods:
|
||||
- "GET"
|
||||
- "POST"
|
||||
- "PUT"
|
||||
- "DELETE"
|
||||
- "OPTIONS"
|
||||
allowHeaders:
|
||||
- "Content-Type"
|
||||
- "Authorization"
|
||||
maxAge: 3600
|
||||
allowCredentials: true
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
||||
@@ -1,10 +0,0 @@
|
||||
apiVersion: v2
|
||||
name: autogpt-websocket-server
|
||||
description: A Helm chart for Websocket Server
|
||||
|
||||
type: application
|
||||
|
||||
|
||||
version: 0.1.0
|
||||
|
||||
appVersion: "1.0.0"
|
||||
@@ -1,22 +0,0 @@
|
||||
1. Get the application URL by running these commands:
|
||||
{{- if .Values.ingress.enabled }}
|
||||
{{- range $host := .Values.ingress.hosts }}
|
||||
{{- range .paths }}
|
||||
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "autogpt-websocket-server.fullname" . }})
|
||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT
|
||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
You can watch its status by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "autogpt-websocket-server.fullname" . }}'
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "autogpt-websocket-server.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "autogpt-websocket-server.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||
{{- end }}
|
||||
@@ -1,62 +0,0 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "autogpt-websocket-server.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "autogpt-websocket-server.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "autogpt-websocket-server.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "autogpt-websocket-server.labels" -}}
|
||||
helm.sh/chart: {{ include "autogpt-websocket-server.chart" . }}
|
||||
{{ include "autogpt-websocket-server.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "autogpt-websocket-server.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "autogpt-websocket-server.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "autogpt-websocket-server.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "autogpt-websocket-server.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,26 +0,0 @@
|
||||
apiVersion: cloud.google.com/v1
|
||||
kind: BackendConfig
|
||||
metadata:
|
||||
name: {{ include "autogpt-websocket-server.fullname" . }}-backend-config
|
||||
spec:
|
||||
customRequestHeaders:
|
||||
headers:
|
||||
- "Access-Control-Allow-Origin:{{ .Values.cors.allowOrigin }}"
|
||||
- "Access-Control-Allow-Methods:{{ .Values.cors.allowMethods | join "," }}"
|
||||
- "Access-Control-Allow-Headers:{{ .Values.cors.allowHeaders | join "," }}"
|
||||
- "Access-Control-Max-Age:{{ .Values.cors.maxAge }}"
|
||||
{{- if .Values.cors.allowCredentials }}
|
||||
- "Access-Control-Allow-Credentials:true"
|
||||
{{- end }}
|
||||
customResponseHeaders:
|
||||
headers:
|
||||
- "Access-Control-Allow-Origin:https://dev-builder.agpt.co"
|
||||
- "Access-Control-Allow-Methods:{{ .Values.cors.allowMethods | join "," }}"
|
||||
- "Access-Control-Allow-Headers:{{ .Values.cors.allowHeaders | join "," }}"
|
||||
- "Access-Control-Max-Age:{{ .Values.cors.maxAge }}"
|
||||
{{- if .Values.cors.allowCredentials }}
|
||||
- "Access-Control-Allow-Credentials:true"
|
||||
{{- end }}
|
||||
timeoutSec: 1800
|
||||
connectionDraining:
|
||||
drainingTimeoutSec: 1800
|
||||
@@ -1,10 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "autogpt-websocket-server.fullname" . }}-config
|
||||
labels:
|
||||
{{- include "autogpt-websocket-server.labels" . | nindent 4 }}
|
||||
data:
|
||||
{{- range $key, $value := .Values.env }}
|
||||
{{ $key }}: {{ $value | quote }}
|
||||
{{- end }}
|
||||
@@ -1,78 +0,0 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "autogpt-websocket-server.fullname" . }}
|
||||
labels:
|
||||
{{- include "autogpt-websocket-server.labels" . | nindent 4 }}
|
||||
spec:
|
||||
{{- if not .Values.autoscaling.enabled }}
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "autogpt-websocket-server.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "autogpt-websocket-server.labels" . | nindent 8 }}
|
||||
{{- with .Values.podLabels }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "autogpt-websocket-server.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: {{ include "autogpt-websocket-server.fullname" . }}-config
|
||||
- secretRef:
|
||||
name: {{ include "autogpt-websocket-server.fullname" . }}-secrets
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
command: ["poetry", "run", "ws"]
|
||||
ports:
|
||||
- name: ws
|
||||
containerPort: {{ .Values.service.port }}
|
||||
protocol: TCP
|
||||
{{- if .Values.livenessProbe.enabled }}
|
||||
livenessProbe:
|
||||
{{- toYaml .Values.livenessProbe | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- if .Values.readinessProbe.enabled }}
|
||||
readinessProbe:
|
||||
{{- toYaml .Values.readinessProbe | nindent 12 }}
|
||||
{{- end }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
{{- with .Values.volumeMounts }}
|
||||
volumeMounts:
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
{{- with .Values.volumes }}
|
||||
volumes:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -1,6 +0,0 @@
|
||||
apiVersion: networking.gke.io/v1beta1
|
||||
kind: FrontendConfig
|
||||
metadata:
|
||||
name: {{ include "autogpt-websocket-server.fullname" . }}-frontend-config
|
||||
spec:
|
||||
timeoutSec: 1800
|
||||
@@ -1,32 +0,0 @@
|
||||
{{- if .Values.autoscaling.enabled }}
|
||||
apiVersion: autoscaling/v2
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: {{ include "autogpt-websocket-server.fullname" . }}
|
||||
labels:
|
||||
{{- include "autogpt-websocket-server.labels" . | nindent 4 }}
|
||||
spec:
|
||||
scaleTargetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
name: {{ include "autogpt-websocket-server.fullname" . }}
|
||||
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||
metrics:
|
||||
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: cpu
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||
{{- end }}
|
||||
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||
- type: Resource
|
||||
resource:
|
||||
name: memory
|
||||
target:
|
||||
type: Utilization
|
||||
averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,61 +0,0 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $fullName := include "autogpt-websocket-server.fullname" . -}}
|
||||
{{- $svcPort := .Values.service.port -}}
|
||||
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1
|
||||
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
{{- else -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
{{- end }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
labels:
|
||||
{{- include "autogpt-websocket-server.labels" . | nindent 4 }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||
ingressClassName: {{ .Values.ingress.className }}
|
||||
{{- end }}
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ .host | quote }}
|
||||
http:
|
||||
paths:
|
||||
{{- range .paths }}
|
||||
- path: {{ .path }}
|
||||
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
||||
pathType: {{ .pathType }}
|
||||
{{- end }}
|
||||
backend:
|
||||
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||
service:
|
||||
name: {{ $fullName }}
|
||||
port:
|
||||
number: {{ $svcPort }}
|
||||
{{- else }}
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: {{ $svcPort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,7 +0,0 @@
|
||||
apiVersion: networking.gke.io/v1
|
||||
kind: ManagedCertificate
|
||||
metadata:
|
||||
name: {{ include "autogpt-websocket-server.fullname" . }}-cert
|
||||
spec:
|
||||
domains:
|
||||
- {{ .Values.domain }}
|
||||
@@ -1,16 +0,0 @@
|
||||
apiVersion: bitnami.com/v1alpha1
|
||||
kind: SealedSecret
|
||||
metadata:
|
||||
name: {{ include "autogpt-websocket-server.fullname" . }}-secrets
|
||||
namespace: {{ .Release.Namespace }}
|
||||
annotations:
|
||||
sealedsecrets.bitnami.com/cluster-wide: "true"
|
||||
spec:
|
||||
encryptedData:
|
||||
{{- range $key, $value := .Values.secrets }}
|
||||
{{ $key }}: {{ $value }}
|
||||
{{- end }}
|
||||
template:
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-secrets
|
||||
namespace: {{ .Release.Namespace }}
|
||||
@@ -1,19 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "autogpt-websocket-server.fullname" . }}
|
||||
labels:
|
||||
{{- include "autogpt-websocket-server.labels" . | nindent 4 }}
|
||||
{{- with .Values.service.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: 8001
|
||||
protocol: TCP
|
||||
name: ws
|
||||
selector:
|
||||
{{- include "autogpt-websocket-server.selectorLabels" . | nindent 4 }}
|
||||
@@ -1,13 +0,0 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "autogpt-websocket-server.serviceAccountName" . }}
|
||||
labels:
|
||||
{{- include "autogpt-websocket-server.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
automountServiceAccountToken: {{ .Values.serviceAccount.automount }}
|
||||
{{- end }}
|
||||
@@ -1,15 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: "{{ include "autogpt-websocket-server.fullname" . }}-test-connection"
|
||||
labels:
|
||||
{{- include "autogpt-websocket-server.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
"helm.sh/hook": test
|
||||
spec:
|
||||
containers:
|
||||
- name: wget
|
||||
image: busybox
|
||||
command: ['wget']
|
||||
args: ['{{ include "autogpt-websocket-server.fullname" . }}:{{ .Values.service.port }}']
|
||||
restartPolicy: Never
|
||||
@@ -1,82 +0,0 @@
|
||||
replicaCount: 1 # not scaling websocket server for now
|
||||
|
||||
image:
|
||||
repository: us-east1-docker.pkg.dev/agpt-dev/agpt-backend-dev/agpt-backend-dev
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8001
|
||||
annotations:
|
||||
cloud.google.com/neg: '{"ingress": true}'
|
||||
beta.cloud.google.com/backend-config: '{"default": "autogpt-websocket-server-backend-config"}'
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: "gce"
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: gce
|
||||
kubernetes.io/ingress.global-static-ip-name: "agpt-dev-agpt-ws-server-ip"
|
||||
networking.gke.io/managed-certificates: "autogpt-websocket-server-cert"
|
||||
hosts:
|
||||
- host: dev-ws-server.agpt.co
|
||||
paths:
|
||||
- path: /ws
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: autogpt-websocket-server
|
||||
port: 8001
|
||||
defaultBackend:
|
||||
service:
|
||||
name: autogpt-websocket-server
|
||||
port:
|
||||
number: 8001
|
||||
|
||||
domain: "dev-ws-server.agpt.co"
|
||||
|
||||
resources:
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
|
||||
autoscaling:
|
||||
enabled: false
|
||||
|
||||
cors:
|
||||
allowOrigins: "https://dev-builder.agpt.co"
|
||||
allowMethods:
|
||||
- "GET"
|
||||
- "POST"
|
||||
- "PUT"
|
||||
- "DELETE"
|
||||
- "OPTIONS"
|
||||
allowHeaders:
|
||||
- "Content-Type"
|
||||
- "Authorization"
|
||||
maxAge: 3600
|
||||
allowCredentials: true
|
||||
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: 8001
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 5
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: 8001
|
||||
initialDelaySeconds: 15
|
||||
periodSeconds: 10
|
||||
|
||||
env:
|
||||
REDIS_HOST: "redis-dev-master.redis-dev.svc.cluster.local"
|
||||
REDIS_PORT: "6379"
|
||||
|
||||
secrets:
|
||||
REDIS_PASSWORD: "AgBKMJoMuj4Aze7QZFm0mmR+7FJ/1Shc/fvFMc1yv1WcyT12ngDlSdmw6eW6PaAxnrzTRZbjGNxDVONS/8g86OvEEe+OiZjI7iaGxipGkxeKMzHPbHgQt97gKRT0wEQ8K6d67gD72YZDpVmYKMOWlMDIWl64404O1Xq4FJeBQQiB57MpP5VBX0Haxe+piYfyCcli/V9mZqLb8rzutl+IovCzd3z+rpJ2EC9kgCWjGzH0Kaylmrg86ZFFSQScTcv+UQ6/7y2WldVJPohMFEOFbxUXEThzkPxy7rryNNDrQ2M704a+/ixAqhQ9nJmaAfMNdFgp4T0oEQlsTPBEsXwCt3yzqbdAm+eAohe2X60d+trNsHdMGEzgWDFtTLEjCdKml9a7GJMJsZsf2Qb1AnvdwlLFWm9jm8X+x9YXrHvakso+zvRCB1uvVEB+77ys4y0flBXDheFOTsS7cnGfumexGV/0IrJPBujVJM1q6J1ilPGTYqWVpSznl4taCPvkGjFtsKj1JHlc1FMkyV9vmkHfMfC/YuYYzMpKcfMQlUh22gpth69ENhN3DNUUEH3m5Ea4hzG5lsiCJ9XFJyJ4RSqUU3U58zy18ONEzlX1qNb26oqTSe2j5+29JpTAOkmcRyMBH0WHhB1Us5vgYjN0WNKY4EKLO53kxJDJIKiquEb1mWAmy9yzft+LhroqpyhAUtTvh5MLVs1CCpUX2Q=="
|
||||
@@ -1,84 +0,0 @@
|
||||
replicaCount: 1 # not scaling websocket server for now
|
||||
|
||||
image:
|
||||
repository: us-east1-docker.pkg.dev/agpt-prod/agpt-backend-prod/agpt-backend-prod
|
||||
tag: latest
|
||||
pullPolicy: Always
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8001
|
||||
annotations:
|
||||
cloud.google.com/neg: '{"ingress": true}'
|
||||
beta.cloud.google.com/backend-config: '{"default": "autogpt-websocket-server-backend-config"}'
|
||||
|
||||
ingress:
|
||||
enabled: true
|
||||
className: "gce"
|
||||
annotations:
|
||||
kubernetes.io/ingress.class: gce
|
||||
kubernetes.io/ingress.global-static-ip-name: "agpt-prod-agpt-ws-backend-ip"
|
||||
networking.gke.io/managed-certificates: "autogpt-websocket-server-cert"
|
||||
hosts:
|
||||
- host: ws-backend.agpt.co
|
||||
paths:
|
||||
- path: /ws
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: autogpt-websocket-server
|
||||
port: 8001
|
||||
defaultBackend:
|
||||
service:
|
||||
name: autogpt-websocket-server
|
||||
port:
|
||||
number: 8001
|
||||
|
||||
domain: "ws-backend.agpt.co"
|
||||
|
||||
resources:
|
||||
limits:
|
||||
cpu: 200m
|
||||
memory: 256Mi
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
|
||||
autoscaling:
|
||||
enabled: false
|
||||
|
||||
cors:
|
||||
allowOrigins: "https://platform.agpt.co"
|
||||
allowMethods:
|
||||
- "GET"
|
||||
- "POST"
|
||||
- "PUT"
|
||||
- "DELETE"
|
||||
- "OPTIONS"
|
||||
allowHeaders:
|
||||
- "Content-Type"
|
||||
- "Authorization"
|
||||
maxAge: 3600
|
||||
allowCredentials: true
|
||||
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: 8001
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 5
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: 8001
|
||||
initialDelaySeconds: 15
|
||||
periodSeconds: 10
|
||||
|
||||
env:
|
||||
REDIS_HOST: "redis-prod-master.redis-prod.svc.cluster.local"
|
||||
REDIS_PORT: "6379"
|
||||
BACKEND_CORS_ALLOW_ORIGINS: '["https://platform.agpt.co"]'
|
||||
|
||||
secrets:
|
||||
REDIS_PASSWORD: "AgBl/a138QK7k/GzlkjQHIElN+1GK4ao/kw9AgT7iRC48qlWu2xZQlJiC07r3y8MCaY8CljKpggBYN3CmtzYMoIer/FgKNK0pA7vKGSEMIajRJPKZmxMw9NcfXeLPDNz/9Irw3+7DYMWrATXGTsfuvsurVuxWZQQOSrjhzqmd0PyHsLlzflZXZrTncMOailMIBWggtPUoSFm3ytGHFCEp903XEwtoHzVc+LcV4ZOZ8x6GXx9RXwGzlMI3zy8/w9dw1YpeIR8w9yFMp5OnQjsxPP7leiyInD7HNlT/Edi0zWb+WeoVo4rNQt6spURK46FPJVeFyZX3AerM5oQx0ngAH3s55LktMCwFjEY9PtutudrKeXVk23gQ9C2U+7S3c1ebjOlY3f6sovosaXZDf5wbxxjdCAwfHLSqBlI+lTTnrOK9sijMdk1wdpmmap2cXy3QbQa9r0xzCzFHpwGBrtQhFVUyxQL9TENACXU/jBL7hv57MyUUGKfzYdVPMEy6FagBX5UapZxSyKwSR3Cm8Bo16v+y+I/j2zSoFheUQYLsi3JDjtaEDkZ6RLF1H/tecQ5HWtp6kb4YlC7WZhxR0xcKFoi7Bp5bUKSyDRzbkgVhK5LeRG6BhfvJguRSOevGYslB53GqBt/yH27gMW4QCrwGPeLfO2b3f2QVkmLbAghoHSCw/s79O1BMxGNac7Slo1YhJo="
|
||||
SUPABASE_JWT_SECRET: "AgAYMdZyP+UhxIdTx6qyRzq9xf1dT7S+DFEC8KSPEFydX9+hAdJVTpprOlgLnqSbfSDmbqcFnCH+aK/6rdRx3HI3v41FogyCNFFxTrfxq1Esk8VuaVh8XrO2xKPd4iGBPZaTrenKlgt89aGdjPJzgl+NlZ5+/BXd95P2uX39DDGr9GJdO14zBt69O+L+Yt7kdd3ZMBjWYibZAzf+YaNIx/M7jjzGLYvxtywMVTrR+6e6GkGQSt5CzBpgk1b6ugPVtFs7PqmMtUqXMQjlrW2u7WVZRWeXO93ukc/TtjO2XUY9JfrgibMf0H81NDDTAAQBNqaDk0LdXsPUo9QGnyeQZTsfAOaeM6lTxX9qCYjneN6pxe60U1BKLURpordRdBs3peAedNJ95GC75qcdSkZE2agjwJvXKs8yy2Ig5eiU/80W27IWPMSLWhMSSf4ixyfkNWM4EfWL45bXlVGvtYaeyqByb0QU1g+II3AukIyO1qOS572y0sGseEv/UlfU2NDBLFejeBZaz4s/20lSyLhP3v1Y9aTs8qWIGl67syFKZoCwPRxwip2v7wIDnlDYXtlxMpQUWDnSUX16zQiVALD3izeDYkd1RViBgdYT/G0tp6lBeV1vnF8tBEGWIl3GJFV0okUflAQ9NIrdC5+BlcQDD08Jn0oGjyje7KE/BfvB1lHT7K+h9rr8B/U8zBSaAe+KFjA8pcjHqXgi4Zx3ayTXdAddyFZd0YqONohEAvXB+BLLdYJVNNXjBFwY62XQ6ojD2ZYWz4m/Wo+/zG0Zm5s/v2VS8UT5qe2Wjs3oGHKIJc6Eo3hVwLefcb7V"
|
||||
@@ -1,98 +0,0 @@
|
||||
# Default values for autogpt-websocket-server.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
replicaCount: 1
|
||||
|
||||
image:
|
||||
repository: nginx
|
||||
pullPolicy: IfNotPresent
|
||||
# Overrides the image tag whose default is the chart appVersion.
|
||||
tag: ""
|
||||
|
||||
imagePullSecrets: []
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
serviceAccount:
|
||||
# Specifies whether a service account should be created
|
||||
create: true
|
||||
# Automatically mount a ServiceAccount's API credentials?
|
||||
automount: true
|
||||
# Annotations to add to the service account
|
||||
annotations: {}
|
||||
# The name of the service account to use.
|
||||
# If not set and create is true, a name is generated using the fullname template
|
||||
name: ""
|
||||
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
|
||||
podSecurityContext: {}
|
||||
# fsGroup: 2000
|
||||
|
||||
securityContext: {}
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# readOnlyRootFilesystem: true
|
||||
# runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 80
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
className: ""
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
hosts:
|
||||
- host: chart-example.local
|
||||
paths:
|
||||
- path: /
|
||||
pathType: ImplementationSpecific
|
||||
tls: []
|
||||
# - secretName: chart-example-tls
|
||||
# hosts:
|
||||
# - chart-example.local
|
||||
|
||||
resources: {}
|
||||
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||
# choice for the user. This also increases chances charts run on environments with little
|
||||
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
maxReplicas: 100
|
||||
targetCPUUtilizationPercentage: 80
|
||||
# targetMemoryUtilizationPercentage: 80
|
||||
|
||||
# Additional volumes on the output Deployment definition.
|
||||
volumes: []
|
||||
# - name: foo
|
||||
# secret:
|
||||
# secretName: mysecret
|
||||
# optional: false
|
||||
|
||||
# Additional volumeMounts on the output Deployment definition.
|
||||
volumeMounts: []
|
||||
# - name: foo
|
||||
# mountPath: "/etc/foo"
|
||||
# readOnly: true
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
@@ -1,15 +0,0 @@
|
||||
architecture: standalone
|
||||
auth:
|
||||
enabled: true
|
||||
password: password
|
||||
master:
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 3Gi
|
||||
configmap:
|
||||
redis.conf: |
|
||||
bind 127.0.0.1
|
||||
protected-mode yes
|
||||
requirepass password
|
||||
replica:
|
||||
replicaCount: 0
|
||||
@@ -1,15 +0,0 @@
|
||||
architecture: standalone
|
||||
auth:
|
||||
enabled: true
|
||||
password: "" #empty on purpose
|
||||
master:
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 3Gi
|
||||
configmap:
|
||||
redis.conf: |
|
||||
bind 127.0.0.1
|
||||
protected-mode yes
|
||||
requirepass password
|
||||
replica:
|
||||
replicaCount: 0
|
||||
4
autogpt_platform/infra/terraform/.gitignore
vendored
4
autogpt_platform/infra/terraform/.gitignore
vendored
@@ -1,4 +0,0 @@
|
||||
*.tfstate
|
||||
*.tfstate.backup
|
||||
tfplan
|
||||
.terraform/
|
||||
22
autogpt_platform/infra/terraform/.terraform.lock.hcl
generated
22
autogpt_platform/infra/terraform/.terraform.lock.hcl
generated
@@ -1,22 +0,0 @@
|
||||
# This file is maintained automatically by "terraform init".
|
||||
# Manual edits may be lost in future updates.
|
||||
|
||||
provider "registry.terraform.io/hashicorp/google" {
|
||||
version = "4.85.0"
|
||||
constraints = "~> 4.0"
|
||||
hashes = [
|
||||
"h1:ZVDZuhYSIWhCkSuDkwFeSIJjn0/DcCxak2W/cHW4OQQ=",
|
||||
"zh:17d60a6a6c1741cf1e09ac6731433a30950285eac88236e623ab4cbf23832ca3",
|
||||
"zh:1c70254c016439dbb75cab646b4beace6ceeff117c75d81f2cc27d41c312f752",
|
||||
"zh:35e2aa2cc7ac84ce55e05bb4de7b461b169d3582e56d3262e249ff09d64fe008",
|
||||
"zh:417afb08d7b2744429f6b76806f4134d62b0354acf98e8a6c00de3c24f2bb6ad",
|
||||
"zh:622165d09d21d9a922c86f1fc7177a400507f2a8c4a4513114407ae04da2dd29",
|
||||
"zh:7cdb8e39a8ea0939558d87d2cb6caceded9e21f21003d9e9f9ce648d5db0bc3a",
|
||||
"zh:851e737dc551d6004a860a8907fda65118fc2c7ede9fa828f7be704a2a39e68f",
|
||||
"zh:a331ad289a02a2c4473572a573dc389be0a604cdd9e03dd8dbc10297fb14f14d",
|
||||
"zh:b67fd531251380decd8dd1f849460d60f329f89df3d15f5815849a1dd001f430",
|
||||
"zh:be8785957acca4f97aa3e800b313b57d1fca07788761c8867c9bc701fbe0bdb5",
|
||||
"zh:cb6579a259fe020e1f88217d8f6937b2d5ace15b6406370977a1966eb31b1ca5",
|
||||
"zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c",
|
||||
]
|
||||
}
|
||||
@@ -1,146 +0,0 @@
|
||||
project_id = "agpt-dev"
|
||||
region = "us-central1"
|
||||
zone = "us-central1-a"
|
||||
network_name = "dev-gke-network"
|
||||
subnet_name = "dev-gke-subnet"
|
||||
subnet_cidr = "10.0.0.0/24"
|
||||
cluster_name = "dev-gke-cluster"
|
||||
node_count = 3
|
||||
node_pool_name = "dev-main-pool"
|
||||
machine_type = "e2-highmem-4"
|
||||
disk_size_gb = 100
|
||||
static_ip_names = ["agpt-server-ip", "agpt-builder-ip", "agpt-ws-server-ip", "agpt-market-ip"]
|
||||
|
||||
|
||||
service_accounts = {
|
||||
"dev-agpt-server-sa" = {
|
||||
display_name = "AutoGPT Dev Server Account"
|
||||
description = "Service account for agpt dev server"
|
||||
},
|
||||
"dev-agpt-builder-sa" = {
|
||||
display_name = "AutoGPT Dev Builder Account"
|
||||
description = "Service account for agpt dev builder"
|
||||
},
|
||||
"dev-agpt-ws-server-sa" = {
|
||||
display_name = "AutoGPT Dev WebSocket Server Account"
|
||||
description = "Service account for agpt dev websocket server"
|
||||
},
|
||||
"dev-agpt-market-sa" = {
|
||||
display_name = "AutoGPT Dev Market Server Account"
|
||||
description = "Service account for agpt dev market server"
|
||||
},
|
||||
"dev-github-actions-sa" = {
|
||||
display_name = "GitHub Actions Dev Service Account"
|
||||
description = "Service account for GitHub Actions deployments to dev"
|
||||
}
|
||||
}
|
||||
|
||||
workload_identity_bindings = {
|
||||
"dev-agpt-server-workload-identity" = {
|
||||
service_account_name = "dev-agpt-server-sa"
|
||||
namespace = "dev-agpt"
|
||||
ksa_name = "dev-agpt-server-sa"
|
||||
},
|
||||
"dev-agpt-builder-workload-identity" = {
|
||||
service_account_name = "dev-agpt-builder-sa"
|
||||
namespace = "dev-agpt"
|
||||
ksa_name = "dev-agpt-builder-sa"
|
||||
},
|
||||
"dev-agpt-ws-server-workload-identity" = {
|
||||
service_account_name = "dev-agpt-ws-server-sa"
|
||||
namespace = "dev-agpt"
|
||||
ksa_name = "dev-agpt-ws-server-sa"
|
||||
},
|
||||
"dev-agpt-market-workload-identity" = {
|
||||
service_account_name = "dev-agpt-market-sa"
|
||||
namespace = "dev-agpt"
|
||||
ksa_name = "dev-agpt-market-sa"
|
||||
},
|
||||
"dev-github-actions-workload-identity" = {
|
||||
service_account_name = "dev-github-actions-sa"
|
||||
namespace = "dev-agpt"
|
||||
ksa_name = "dev-github-actions-sa"
|
||||
}
|
||||
}
|
||||
|
||||
role_bindings = {
|
||||
"roles/container.developer" = [
|
||||
"serviceAccount:dev-agpt-server-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-builder-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-ws-server-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-market-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-github-actions-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/cloudsql.client" = [
|
||||
"serviceAccount:dev-agpt-server-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-builder-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-market-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/cloudsql.editor" = [
|
||||
"serviceAccount:dev-agpt-server-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-builder-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-market-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/cloudsql.instanceUser" = [
|
||||
"serviceAccount:dev-agpt-server-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-builder-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-market-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/iam.workloadIdentityUser" = [
|
||||
"serviceAccount:dev-agpt-server-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-builder-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-ws-server-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-market-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-github-actions-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
]
|
||||
"roles/compute.networkUser" = [
|
||||
"serviceAccount:dev-agpt-server-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-builder-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-ws-server-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-market-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/container.hostServiceAgentUser" = [
|
||||
"serviceAccount:dev-agpt-server-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-builder-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-ws-server-sa@agpt-dev.iam.gserviceaccount.com",
|
||||
"serviceAccount:dev-agpt-market-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/artifactregistry.writer" = [
|
||||
"serviceAccount:dev-github-actions-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/container.viewer" = [
|
||||
"serviceAccount:dev-github-actions-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/iam.serviceAccountTokenCreator" = [
|
||||
"principalSet://iam.googleapis.com/projects/638488734936/locations/global/workloadIdentityPools/dev-pool/*",
|
||||
"serviceAccount:dev-github-actions-sa@agpt-dev.iam.gserviceaccount.com"
|
||||
]
|
||||
}
|
||||
|
||||
pods_ip_cidr_range = "10.1.0.0/16"
|
||||
services_ip_cidr_range = "10.2.0.0/20"
|
||||
|
||||
public_bucket_names = ["website-artifacts"]
|
||||
standard_bucket_names = []
|
||||
bucket_admins = ["gcp-devops-agpt@agpt.co", "gcp-developers@agpt.co"]
|
||||
|
||||
workload_identity_pools = {
|
||||
"dev-pool" = {
|
||||
display_name = "Development Identity Pool"
|
||||
providers = {
|
||||
"github" = {
|
||||
issuer_uri = "https://token.actions.githubusercontent.com"
|
||||
attribute_mapping = {
|
||||
"google.subject" = "assertion.sub"
|
||||
"attribute.repository" = "assertion.repository"
|
||||
"attribute.repository_owner" = "assertion.repository_owner"
|
||||
}
|
||||
}
|
||||
}
|
||||
service_accounts = {
|
||||
"dev-github-actions-sa" = [
|
||||
"Significant-Gravitas/AutoGPT"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,141 +0,0 @@
|
||||
project_id = "agpt-prod"
|
||||
region = "us-central1"
|
||||
zone = "us-central1-a"
|
||||
network_name = "prod-gke-network"
|
||||
subnet_name = "prod-gke-subnet"
|
||||
subnet_cidr = "10.0.0.0/24"
|
||||
cluster_name = "prod-gke-cluster"
|
||||
node_count = 4
|
||||
node_pool_name = "prod-main-pool"
|
||||
machine_type = "e2-highmem-4"
|
||||
disk_size_gb = 100
|
||||
static_ip_names = ["agpt-backend-ip", "agpt-frontend-ip", "agpt-ws-backend-ip", "agpt-market-ip"]
|
||||
|
||||
|
||||
service_accounts = {
|
||||
"prod-agpt-backend-sa" = {
|
||||
display_name = "AutoGPT prod backend Account"
|
||||
description = "Service account for agpt prod backend"
|
||||
},
|
||||
"prod-agpt-frontend-sa" = {
|
||||
display_name = "AutoGPT prod frontend Account"
|
||||
description = "Service account for agpt prod frontend"
|
||||
},
|
||||
"prod-agpt-ws-backend-sa" = {
|
||||
display_name = "AutoGPT prod WebSocket backend Account"
|
||||
description = "Service account for agpt prod websocket backend"
|
||||
},
|
||||
"prod-agpt-market-sa" = {
|
||||
display_name = "AutoGPT prod Market backend Account"
|
||||
description = "Service account for agpt prod market backend"
|
||||
},
|
||||
"prod-github-actions-sa" = {
|
||||
display_name = "GitHub Actions Prod Service Account"
|
||||
description = "Service account for GitHub Actions deployments to prod"
|
||||
}
|
||||
}
|
||||
|
||||
workload_identity_bindings = {
|
||||
"prod-agpt-backend-workload-identity" = {
|
||||
service_account_name = "prod-agpt-backend-sa"
|
||||
namespace = "prod-agpt"
|
||||
ksa_name = "prod-agpt-backend-sa"
|
||||
},
|
||||
"prod-agpt-frontend-workload-identity" = {
|
||||
service_account_name = "prod-agpt-frontend-sa"
|
||||
namespace = "prod-agpt"
|
||||
ksa_name = "prod-agpt-frontend-sa"
|
||||
},
|
||||
"prod-agpt-ws-backend-workload-identity" = {
|
||||
service_account_name = "prod-agpt-ws-backend-sa"
|
||||
namespace = "prod-agpt"
|
||||
ksa_name = "prod-agpt-ws-backend-sa"
|
||||
},
|
||||
"prod-agpt-market-workload-identity" = {
|
||||
service_account_name = "prod-agpt-market-sa"
|
||||
namespace = "prod-agpt"
|
||||
ksa_name = "prod-agpt-market-sa"
|
||||
}
|
||||
}
|
||||
|
||||
role_bindings = {
|
||||
"roles/container.developer" = [
|
||||
"serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-ws-backend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-github-actions-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/cloudsql.client" = [
|
||||
"serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/cloudsql.editor" = [
|
||||
"serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/cloudsql.instanceUser" = [
|
||||
"serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/iam.workloadIdentityUser" = [
|
||||
"serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-ws-backend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-github-actions-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
]
|
||||
"roles/compute.networkUser" = [
|
||||
"serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-ws-backend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/container.hostServiceAgentUser" = [
|
||||
"serviceAccount:prod-agpt-backend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-frontend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-ws-backend-sa@agpt-prod.iam.gserviceaccount.com",
|
||||
"serviceAccount:prod-agpt-market-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/artifactregistry.writer" = [
|
||||
"serviceAccount:prod-github-actions-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/container.viewer" = [
|
||||
"serviceAccount:prod-github-actions-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
],
|
||||
"roles/iam.serviceAccountTokenCreator" = [
|
||||
"principalSet://iam.googleapis.com/projects/1021527134101/locations/global/workloadIdentityPools/prod-pool/*",
|
||||
"serviceAccount:prod-github-actions-sa@agpt-prod.iam.gserviceaccount.com"
|
||||
]
|
||||
}
|
||||
|
||||
pods_ip_cidr_range = "10.1.0.0/16"
|
||||
services_ip_cidr_range = "10.2.0.0/20"
|
||||
|
||||
public_bucket_names = ["website-artifacts"]
|
||||
standard_bucket_names = []
|
||||
bucket_admins = ["gcp-devops-agpt@agpt.co", "gcp-developers@agpt.co"]
|
||||
|
||||
workload_identity_pools = {
|
||||
"prod-pool" = {
|
||||
display_name = "Production Identity Pool"
|
||||
providers = {
|
||||
"github" = {
|
||||
issuer_uri = "https://token.actions.githubusercontent.com"
|
||||
attribute_mapping = {
|
||||
"google.subject" = "assertion.sub"
|
||||
"attribute.repository" = "assertion.repository"
|
||||
"attribute.repository_owner" = "assertion.repository_owner"
|
||||
}
|
||||
}
|
||||
}
|
||||
service_accounts = {
|
||||
"prod-github-actions-sa" = [
|
||||
"Significant-Gravitas/AutoGPT"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
terraform {
|
||||
required_version = ">= 1.9.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = "~> 4.0"
|
||||
}
|
||||
}
|
||||
|
||||
backend "gcs" {
|
||||
bucket = "agpt-dev-terraform"
|
||||
prefix = "terraform/state"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
provider "google" {
|
||||
project = var.project_id
|
||||
zone = var.zone
|
||||
}
|
||||
|
||||
module "static_ips" {
|
||||
source = "./modules/static_ip"
|
||||
|
||||
project_id = var.project_id
|
||||
ip_names = var.static_ip_names
|
||||
region = var.region
|
||||
}
|
||||
|
||||
module "networking" {
|
||||
source = "./modules/networking"
|
||||
|
||||
project_id = var.project_id
|
||||
region = var.region
|
||||
network_name = var.network_name
|
||||
subnet_name = var.subnet_name
|
||||
subnet_cidr = var.subnet_cidr
|
||||
pods_ip_cidr_range = var.pods_ip_cidr_range
|
||||
services_ip_cidr_range = var.services_ip_cidr_range
|
||||
}
|
||||
|
||||
module "gke_cluster" {
|
||||
source = "./modules/gke_cluster"
|
||||
|
||||
project_id = var.project_id
|
||||
zone = var.zone
|
||||
cluster_name = var.cluster_name
|
||||
node_pool_name = var.node_pool_name
|
||||
node_count = var.node_count
|
||||
machine_type = var.machine_type
|
||||
disk_size_gb = var.disk_size_gb
|
||||
network = module.networking.network_self_link
|
||||
subnetwork = module.networking.subnet_self_link
|
||||
enable_autopilot = var.enable_autopilot
|
||||
}
|
||||
|
||||
module "iam" {
|
||||
source = "./modules/iam"
|
||||
|
||||
project_id = var.project_id
|
||||
service_accounts = var.service_accounts
|
||||
workload_identity_bindings = var.workload_identity_bindings
|
||||
role_bindings = var.role_bindings
|
||||
workload_identity_pools = var.workload_identity_pools
|
||||
}
|
||||
|
||||
module "storage" {
|
||||
source = "./modules/storage"
|
||||
|
||||
project_id = var.project_id
|
||||
region = var.region
|
||||
standard_bucket_names = var.standard_bucket_names
|
||||
public_bucket_names = var.public_bucket_names
|
||||
bucket_admins = var.bucket_admins
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
resource "google_container_cluster" "primary" {
|
||||
name = var.cluster_name
|
||||
location = var.zone
|
||||
|
||||
workload_identity_config {
|
||||
workload_pool = "${var.project_id}.svc.id.goog"
|
||||
}
|
||||
|
||||
|
||||
dynamic "node_pool" {
|
||||
for_each = var.enable_autopilot ? [] : [1]
|
||||
content {
|
||||
name = var.node_pool_name
|
||||
node_count = var.node_count
|
||||
|
||||
node_config {
|
||||
machine_type = var.machine_type
|
||||
disk_size_gb = var.disk_size_gb
|
||||
|
||||
workload_metadata_config {
|
||||
mode = "GKE_METADATA"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
network = var.network
|
||||
subnetwork = var.subnetwork
|
||||
|
||||
ip_allocation_policy {
|
||||
cluster_secondary_range_name = "pods"
|
||||
services_secondary_range_name = "services"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
output "cluster_name" {
|
||||
description = "The name of the cluster"
|
||||
value = google_container_cluster.primary.name
|
||||
}
|
||||
|
||||
output "cluster_endpoint" {
|
||||
description = "The endpoint for the cluster"
|
||||
value = google_container_cluster.primary.endpoint
|
||||
}
|
||||
|
||||
output "node_pool_name" {
|
||||
description = "The name of the node pool"
|
||||
value = var.enable_autopilot ? null : google_container_cluster.primary.node_pool[0].name
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
variable "project_id" {
|
||||
description = "The project ID to host the cluster in"
|
||||
}
|
||||
|
||||
variable "zone" {
|
||||
description = "The zone to host the cluster in"
|
||||
}
|
||||
|
||||
variable "cluster_name" {
|
||||
description = "The name for the GKE cluster"
|
||||
}
|
||||
|
||||
variable "node_count" {
|
||||
description = "Number of nodes in the cluster"
|
||||
}
|
||||
|
||||
variable "node_pool_name" {
|
||||
description = "Name of the node pool in the cluster"
|
||||
}
|
||||
|
||||
variable "machine_type" {
|
||||
description = "Type of machine to use for nodes"
|
||||
}
|
||||
|
||||
variable "disk_size_gb" {
|
||||
description = "Size of the disk attached to each node, specified in GB"
|
||||
default = 100
|
||||
}
|
||||
|
||||
variable "network" {
|
||||
description = "The VPC network to host the cluster in"
|
||||
}
|
||||
|
||||
variable "subnetwork" {
|
||||
description = "The subnetwork to host the cluster in"
|
||||
}
|
||||
|
||||
variable "enable_autopilot" {
|
||||
description = "Enable Autopilot for this cluster"
|
||||
type = bool
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
resource "google_service_account" "service_accounts" {
|
||||
for_each = var.service_accounts
|
||||
account_id = each.key
|
||||
display_name = each.value.display_name
|
||||
description = each.value.description
|
||||
}
|
||||
|
||||
# IAM policy binding for Workload Identity
|
||||
resource "google_service_account_iam_binding" "workload_identity_binding" {
|
||||
for_each = var.workload_identity_bindings
|
||||
service_account_id = google_service_account.service_accounts[each.value.service_account_name].name
|
||||
role = "roles/iam.workloadIdentityUser"
|
||||
|
||||
members = [
|
||||
"serviceAccount:${var.project_id}.svc.id.goog[${each.value.namespace}/${each.value.ksa_name}]"
|
||||
]
|
||||
}
|
||||
|
||||
# Role bindings grouped by role
|
||||
resource "google_project_iam_binding" "role_bindings" {
|
||||
for_each = var.role_bindings
|
||||
project = var.project_id
|
||||
role = each.key
|
||||
|
||||
members = each.value
|
||||
}
|
||||
|
||||
resource "google_iam_workload_identity_pool" "pools" {
|
||||
for_each = var.workload_identity_pools
|
||||
workload_identity_pool_id = each.key
|
||||
display_name = each.value.display_name
|
||||
}
|
||||
|
||||
resource "google_iam_workload_identity_pool_provider" "providers" {
|
||||
for_each = merge([
|
||||
for pool_id, pool in var.workload_identity_pools : {
|
||||
for provider_id, provider in pool.providers :
|
||||
"${pool_id}/${provider_id}" => merge(provider, {
|
||||
pool_id = pool_id
|
||||
})
|
||||
}
|
||||
]...)
|
||||
|
||||
workload_identity_pool_id = split("/", each.key)[0]
|
||||
workload_identity_pool_provider_id = split("/", each.key)[1]
|
||||
|
||||
attribute_mapping = each.value.attribute_mapping
|
||||
oidc {
|
||||
issuer_uri = each.value.issuer_uri
|
||||
allowed_audiences = each.value.allowed_audiences
|
||||
}
|
||||
attribute_condition = "assertion.repository_owner==\"Significant-Gravitas\""
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
output "service_account_emails" {
|
||||
description = "The emails of the created service accounts"
|
||||
value = { for k, v in google_service_account.service_accounts : k => v.email }
|
||||
}
|
||||
|
||||
output "workload_identity_pools" {
|
||||
value = google_iam_workload_identity_pool.pools
|
||||
}
|
||||
|
||||
output "workload_identity_providers" {
|
||||
value = {
|
||||
for k, v in google_iam_workload_identity_pool_provider.providers : k => v.name
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
variable "project_id" {
|
||||
description = "The ID of the project"
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "service_accounts" {
|
||||
description = "Map of service accounts to create"
|
||||
type = map(object({
|
||||
display_name = string
|
||||
description = string
|
||||
}))
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "workload_identity_bindings" {
|
||||
description = "Map of Workload Identity bindings to create"
|
||||
type = map(object({
|
||||
service_account_name = string
|
||||
namespace = string
|
||||
ksa_name = string
|
||||
}))
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "role_bindings" {
|
||||
description = "Map of roles to list of members"
|
||||
type = map(list(string))
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "workload_identity_pools" {
|
||||
type = map(object({
|
||||
display_name = string
|
||||
providers = map(object({
|
||||
issuer_uri = string
|
||||
attribute_mapping = map(string)
|
||||
allowed_audiences = optional(list(string))
|
||||
}))
|
||||
service_accounts = map(list(string)) # Map of SA to list of allowed principals
|
||||
}))
|
||||
default = {}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
resource "google_compute_network" "vpc_network" {
|
||||
name = var.network_name
|
||||
auto_create_subnetworks = false
|
||||
}
|
||||
|
||||
resource "google_compute_subnetwork" "subnet" {
|
||||
name = var.subnet_name
|
||||
ip_cidr_range = var.subnet_cidr
|
||||
region = var.region
|
||||
network = google_compute_network.vpc_network.self_link
|
||||
|
||||
secondary_ip_range {
|
||||
range_name = "pods"
|
||||
ip_cidr_range = var.pods_ip_cidr_range
|
||||
}
|
||||
|
||||
secondary_ip_range {
|
||||
range_name = "services"
|
||||
ip_cidr_range = var.services_ip_cidr_range
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
output "network_name" {
|
||||
description = "The name of the VPC network"
|
||||
value = google_compute_network.vpc_network.name
|
||||
}
|
||||
|
||||
output "network_self_link" {
|
||||
description = "The self-link of the VPC network"
|
||||
value = google_compute_network.vpc_network.self_link
|
||||
}
|
||||
|
||||
output "subnet_name" {
|
||||
description = "The name of the subnet"
|
||||
value = google_compute_subnetwork.subnet.name
|
||||
}
|
||||
|
||||
output "subnet_self_link" {
|
||||
description = "The self-link of the subnet"
|
||||
value = google_compute_subnetwork.subnet.self_link
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
variable "project_id" {
|
||||
description = "The project ID to host the network in"
|
||||
}
|
||||
|
||||
variable "region" {
|
||||
description = "The region to host the network in"
|
||||
}
|
||||
|
||||
variable "network_name" {
|
||||
description = "The name of the VPC network"
|
||||
}
|
||||
|
||||
variable "subnet_name" {
|
||||
description = "The name of the subnet"
|
||||
}
|
||||
|
||||
variable "subnet_cidr" {
|
||||
description = "The CIDR range for the subnet"
|
||||
}
|
||||
|
||||
variable "pods_ip_cidr_range" {
|
||||
description = "The IP address range for pods"
|
||||
default = "10.1.0.0/16"
|
||||
}
|
||||
|
||||
variable "services_ip_cidr_range" {
|
||||
description = "The IP address range for services"
|
||||
default = "10.2.0.0/20"
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
resource "google_compute_global_address" "static_ip" {
|
||||
count = length(var.ip_names)
|
||||
name = "${var.project_id}-${var.ip_names[count.index]}"
|
||||
address_type = "EXTERNAL"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
output "ip_addresses" {
|
||||
description = "Map of created static IP addresses"
|
||||
value = { for i, ip in google_compute_global_address.static_ip : var.ip_names[i] => ip.address }
|
||||
}
|
||||
|
||||
output "ip_names" {
|
||||
description = "List of full names of the created static IP addresses"
|
||||
value = google_compute_global_address.static_ip[*].name
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
variable "project_id" {
|
||||
description = "The project ID to prepend to IP names"
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "ip_names" {
|
||||
description = "List of custom names for static IPs"
|
||||
type = list(string)
|
||||
}
|
||||
|
||||
variable "region" {
|
||||
description = "Region to create the static IPs in"
|
||||
type = string
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
|
||||
# Public Buckets
|
||||
resource "google_storage_bucket" "public_buckets" {
|
||||
for_each = toset(var.public_bucket_names)
|
||||
name = "${var.project_id}-${each.value}"
|
||||
location = var.region
|
||||
force_destroy = true
|
||||
|
||||
uniform_bucket_level_access = true
|
||||
|
||||
cors {
|
||||
origin = ["*"]
|
||||
method = ["GET", "HEAD", "OPTIONS"]
|
||||
response_header = ["*"]
|
||||
max_age_seconds = 3600
|
||||
}
|
||||
}
|
||||
|
||||
resource "google_storage_bucket_iam_policy" "public_access" {
|
||||
for_each = google_storage_bucket.public_buckets
|
||||
|
||||
bucket = each.value.name
|
||||
policy_data = jsonencode({
|
||||
bindings = [
|
||||
{
|
||||
role = "roles/storage.objectViewer"
|
||||
members = ["allUsers"]
|
||||
},
|
||||
{
|
||||
role = "roles/storage.admin"
|
||||
members = [for admin in var.bucket_admins : "group:${admin}"]
|
||||
}
|
||||
]
|
||||
})
|
||||
}
|
||||
|
||||
# Standard Buckets, with default permissions
|
||||
resource "google_storage_bucket" "standard_buckets" {
|
||||
for_each = toset(var.standard_bucket_names)
|
||||
name = "${var.project_id}-${each.value}"
|
||||
location = var.region
|
||||
force_destroy = true
|
||||
|
||||
uniform_bucket_level_access = true
|
||||
|
||||
versioning {
|
||||
enabled = true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
resource "google_storage_bucket_iam_member" "standard_access" {
|
||||
for_each = {
|
||||
for pair in setproduct(keys(google_storage_bucket.standard_buckets), ["gcp-devops-agpt@agpt.co", "gcp-developers@agpt.co"]) :
|
||||
"${pair[0]}-${pair[1]}" => {
|
||||
bucket = google_storage_bucket.standard_buckets[pair[0]].name
|
||||
member = "group:${pair[1]}"
|
||||
}
|
||||
}
|
||||
|
||||
bucket = each.value.bucket
|
||||
role = "roles/storage.objectAdmin"
|
||||
member = each.value.member
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
output "public_bucket_names" {
|
||||
description = "The names of the created website artifacts buckets"
|
||||
value = { for k, v in google_storage_bucket.public_buckets : k => v.name }
|
||||
}
|
||||
|
||||
output "public_bucket_urls" {
|
||||
description = "The URLs of the created website artifacts buckets"
|
||||
value = { for k, v in google_storage_bucket.public_buckets : k => v.url }
|
||||
}
|
||||
|
||||
output "standard_bucket_names" {
|
||||
description = "The names of the created standard buckets"
|
||||
value = { for k, v in google_storage_bucket.standard_buckets : k => v.name }
|
||||
}
|
||||
|
||||
output "standard_bucket_urls" {
|
||||
description = "The URLs of the created standard buckets"
|
||||
value = { for k, v in google_storage_bucket.standard_buckets : k => v.url }
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
variable "project_id" {
|
||||
description = "The ID of the project"
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "region" {
|
||||
description = "The region where the bucket will be created"
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "public_bucket_names" {
|
||||
description = "List of bucket names that should be publicly accessible"
|
||||
type = list(string)
|
||||
default = []
|
||||
}
|
||||
|
||||
variable "standard_bucket_names" {
|
||||
description = "List of bucket names that should be publicly accessible"
|
||||
type = list(string)
|
||||
default = []
|
||||
}
|
||||
|
||||
variable "bucket_admins" {
|
||||
description = "List of groups that should be admins of the buckets"
|
||||
type = list(string)
|
||||
default = ["gcp-devops-agpt@agpt.co", "gcp-developers@agpt.co"]
|
||||
}
|
||||
@@ -1,148 +0,0 @@
|
||||
variable "project_id" {
|
||||
description = "The project ID to host the cluster in"
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "region" {
|
||||
description = "Project region"
|
||||
type = string
|
||||
default = "us-central1"
|
||||
}
|
||||
|
||||
variable "zone" {
|
||||
description = "The zone to host the cluster in"
|
||||
type = string
|
||||
default = "us-central1-a"
|
||||
}
|
||||
|
||||
variable "network_name" {
|
||||
description = "The name of the VPC network"
|
||||
type = string
|
||||
default = "gke-network"
|
||||
}
|
||||
|
||||
variable "subnet_name" {
|
||||
description = "The name of the subnet"
|
||||
type = string
|
||||
default = "gke-subnet"
|
||||
}
|
||||
|
||||
variable "subnet_cidr" {
|
||||
description = "The CIDR range for the subnet"
|
||||
type = string
|
||||
default = "10.0.0.0/24"
|
||||
}
|
||||
|
||||
variable "cluster_name" {
|
||||
description = "The name for the GKE cluster"
|
||||
type = string
|
||||
default = "gke-cluster"
|
||||
}
|
||||
|
||||
variable "node_count" {
|
||||
description = "Number of nodes in the cluster"
|
||||
type = number
|
||||
default = 3
|
||||
}
|
||||
|
||||
variable "node_pool_name" {
|
||||
description = "The name for the node pool"
|
||||
type = string
|
||||
default = "default-pool"
|
||||
}
|
||||
|
||||
variable "machine_type" {
|
||||
description = "Type of machine to use for nodes"
|
||||
type = string
|
||||
default = "e2-medium"
|
||||
}
|
||||
|
||||
variable "disk_size_gb" {
|
||||
description = "Size of the disk attached to each node, specified in GB"
|
||||
type = number
|
||||
default = 100
|
||||
}
|
||||
|
||||
variable "enable_autopilot" {
|
||||
description = "Enable Autopilot for this cluster"
|
||||
type = bool
|
||||
default = false
|
||||
}
|
||||
|
||||
variable "static_ip_names" {
|
||||
description = "List of custom names for static IPs"
|
||||
type = list(string)
|
||||
default = ["ip-1", "ip-2", "ip-3"]
|
||||
}
|
||||
|
||||
variable "service_accounts" {
|
||||
description = "Map of service accounts to create"
|
||||
type = map(object({
|
||||
display_name = string
|
||||
description = string
|
||||
}))
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "workload_identity_bindings" {
|
||||
description = "Map of Workload Identity bindings to create"
|
||||
type = map(object({
|
||||
service_account_name = string
|
||||
namespace = string
|
||||
ksa_name = string
|
||||
}))
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "role_bindings" {
|
||||
description = "Map of roles to list of members"
|
||||
type = map(list(string))
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "pods_ip_cidr_range" {
|
||||
description = "The IP address range for pods"
|
||||
type = string
|
||||
default = "10.1.0.0/16"
|
||||
}
|
||||
|
||||
variable "services_ip_cidr_range" {
|
||||
description = "The IP address range for services"
|
||||
type = string
|
||||
default = "10.2.0.0/20"
|
||||
}
|
||||
|
||||
variable "public_bucket_names" {
|
||||
description = "List of bucket names that should be publicly accessible"
|
||||
type = list(string)
|
||||
default = []
|
||||
}
|
||||
|
||||
variable "standard_bucket_names" {
|
||||
description = "List of bucket names that should be publicly accessible"
|
||||
type = list(string)
|
||||
default = []
|
||||
}
|
||||
|
||||
variable "bucket_admins" {
|
||||
description = "List of groups that should be admins of the buckets"
|
||||
type = list(string)
|
||||
default = ["gcp-devops-agpt@agpt.co", "gcp-developers@agpt.co"]
|
||||
}
|
||||
|
||||
variable "workload_identity_pools" {
|
||||
type = map(object({
|
||||
display_name = string
|
||||
providers = map(object({
|
||||
issuer_uri = string
|
||||
attribute_mapping = map(string)
|
||||
allowed_audiences = optional(list(string))
|
||||
}))
|
||||
service_accounts = map(list(string))
|
||||
}))
|
||||
default = {}
|
||||
description = "Configuration for workload identity pools and their providers"
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user