2024-07-12 14:41:34 +00:00
## Tiltfile for working with Futureporn cluster
2024-07-10 02:34:23 +00:00
2024-07-12 14:41:34 +00:00
## remote development settings
# allow_k8s_contexts('vke-e01a95c7-aa18-45a9-b8c2-ca36b6bb33f3')
# default_registry('ttl.sh/cjfuturepornnet-98ajf9iwejf9iupawh4efu8hawe')
2024-07-10 02:34:23 +00:00
2024-07-12 14:41:34 +00:00
## don't scrub secrets so we can more easily debug
2024-07-10 02:34:23 +00:00
secret_settings(
disable_scrub=True
)
2024-05-27 22:20:58 +00:00
2024-07-30 20:34:25 +00:00
## helm_remote and deploy_cert_manager are BANNED because they use too much bandwidth and crash my computer
##
2024-06-27 04:41:16 +00:00
## cert-manager slows down Tilt updates so I prefer to keep it commented unless I specifically need to test certs
2024-07-12 14:41:34 +00:00
## cert-manager loaded using this extension is PAINFULLY SLOW, and it must re-install and re-test every time the Tiltfile changes.
## additionally, it is SYNCRHONOUS, which means nothing else can update until cert-manager is updated. @see https://github.com/tilt-dev/tilt-extensions/pull/90#issuecomment-704381205
2024-07-28 00:42:09 +00:00
## TL;DR: This is convenient, but it's much faster to use a helm chart for working with cert-manager.
2024-07-23 02:59:41 +00:00
# load('ext://cert_manager', 'deploy_cert_manager')
# deploy_cert_manager(
# load_to_kind=True,
# version='v1.15.1',
# )
2024-07-30 20:34:25 +00:00
# load('ext://helm_remote', 'helm_remote')
2024-06-12 04:28:36 +00:00
2024-07-10 02:34:23 +00:00
load('ext://dotenv', 'dotenv')
dotenv(fn='.env.development')
2024-06-19 16:46:23 +00:00
2024-06-04 23:06:47 +00:00
2024-06-18 02:21:08 +00:00
# helm_remote(
# 'velero',
# repo_name='velero',
# repo_url='https://vmware-tanzu.github.io/helm-charts',
# namespace='futureporn',
# version='6.6.0',
# set=[
# 'configuration.backupStorageLocation[0].name=dev',
# 'configuration.backupStorageLocation[0].provider=aws',
# 'configuration.backupStorageLocation[0].bucket=futureporn-db-backup-dev',
# 'configuration.backupStorageLocation[0].config.region=us-west-000',
# 'configuration.backupStorageLocation[0].config.s3ForcePathStyle=true',
# 'configuration.backupStorageLocation[0].config.s3Url=https://s3.us-west-000.backblazeb2.com',
# 'credentials.secretContents=cloud\n[default]\naws_access_key_id=AAAA\naws_secret_access_key=BBBB',
# 'snapshotsEnabled=false',
# # --set configuration.backupStorageLocation[0].name=<BACKUP STORAGE LOCATION NAME> \
# # --set configuration.backupStorageLocation[0].provider=<PROVIDER NAME> \
# # --set configuration.backupStorageLocation[0].bucket=<BUCKET NAME> \
# # --set configuration.backupStorageLocation[0].config.region=<REGION> \
# # --set configuration.volumeSnapshotLocation[0].name=<VOLUME SNAPSHOT LOCATION NAME> \
# # --set configuration.volumeSnapshotLocation[0].provider=<PROVIDER NAME> \
# # --set configuration.volumeSnapshotLocation[0].config.region=<REGION> \
# # --set initContainers[0].name=velero-plugin-for-<PROVIDER NAME> \
# # --set initContainers[0].image=velero/velero-plugin-for-<PROVIDER NAME>:<PROVIDER PLUGIN TAG> \
# # --set initContainers[0].volumeMounts[0].mountPath=/target \
# # --set initContainers[0].volumeMounts[0].name=plugins
# ]
# )
2024-06-28 23:23:04 +00:00
2024-06-04 23:06:47 +00:00
# helm_remote(
# 'nitter',
# repo_name='truecharts',
# repo_url='https://charts.truecharts.org',
# namespace='futureporn',
# version='7.1.4',
# )
2024-05-27 22:20:58 +00:00
# helm_remote(
# 'frp-operator',
# repo_name='frp-operator',
# repo_url='https://zufardhiyaulhaq.com/frp-operator/charts/releases/',
# namespace='futureporn',
# version='1.0.0'
# )
# helm_remote(
# 'kubernetes-ingress-controller',
# repo_name='kubernetes-ingress-controller',
# repo_url='https://ngrok.github.io/kubernetes-ingress-controller',
# namespace='futureporn',
# create_namespace='false',
# set=[
# 'credentials.apiKey=%s' % os.getenv('NGROK_API_KEY'),
# 'credentials.authtoken=%s' % os.getenv('NGROK_AUTHTOKEN')
# ]
# )
2024-05-29 23:43:47 +00:00
2024-06-04 23:06:47 +00:00
# k8s_yaml(helm(
# './charts/nitter',
# values=['./charts/nitter/values.yaml'],
# ))
2024-07-06 08:49:51 +00:00
2024-05-27 22:20:58 +00:00
k8s_yaml(helm(
'./charts/fp',
2024-07-10 02:34:23 +00:00
values=['./charts/fp/values.yaml'],
2024-05-27 22:20:58 +00:00
))
2024-07-30 20:34:25 +00:00
## we are using a local helm chart instead of using helm_remote because that command makes the tilt builds Hella slow.
## to download this chart, we used the following commands.
## future re-pulling is needed to keep things up-to-date.
##
## helm repo add bitnami https://charts.bitnami.com/bitnami
## helm pull bitnami/postgresql --untar --destination ./charts/postgresql
k8s_yaml(helm(
'./charts/postgresql/postgresql',
namespace='futureporn',
values=[
'./charts/postgresql/values-overrides.yaml'
]
))
2024-07-10 02:34:23 +00:00
2024-07-30 20:34:25 +00:00
k8s_yaml(helm(
'./charts/cert-manager/cert-manager',
namespace='cert-manager',
values=['./charts/cert-manager/values-overrides.yaml']
))
2024-05-27 22:20:58 +00:00
# docker_build('fp/link2cid', './packages/link2cid')
docker_build(
'fp/strapi',
'.',
2024-07-12 14:41:34 +00:00
dockerfile='./d.strapi.dockerfile',
2024-07-14 05:20:35 +00:00
target='strapi',
2024-07-12 14:41:34 +00:00
only=[
2024-07-14 05:20:35 +00:00
'./.npmrc',
2024-07-12 14:41:34 +00:00
'./package.json',
'./pnpm-lock.yaml',
2024-07-14 05:20:35 +00:00
'./pnpm-workspace.yaml',
2024-07-30 20:34:25 +00:00
'./services/strapi',
2024-07-12 14:41:34 +00:00
'./packages/types',
],
2024-05-27 22:20:58 +00:00
live_update=[
2024-07-30 20:34:25 +00:00
sync('./services/strapi', '/app'),
run('cd /app && pnpm i', trigger=['./services/strapi/package.json', './services/strapi/pnpm-lock.yaml'])
],
pull=False,
2024-05-27 22:20:58 +00:00
)
2024-07-23 02:59:41 +00:00
# docker_build(
# 'fp/bot',
# '.',
# only=[
# './.npmrc',
# './package.json',
# './pnpm-lock.yaml',
# './pnpm-workspace.yaml',
# './packages/bot',
# './packages/image',
# './packages/scout',
# './packages/storage',
# './packages/workflows',
# './packages/types',
# './packages/utils',
# ],
# dockerfile='./d.bot.dockerfile',
# target='dev',
# live_update=[
# sync('./packages/bot', '/app'),
# run('cd /app && pnpm i', trigger=['./packages/bot/package.json', './packages/bot/pnpm-lock.yaml'])
# ]
# )
2024-07-06 08:49:51 +00:00
2024-05-27 22:20:58 +00:00
2024-07-04 21:20:29 +00:00
2024-05-27 22:20:58 +00:00
load('ext://uibutton', 'cmd_button')
2024-06-12 04:28:36 +00:00
cmd_button('postgres:create',
2024-07-10 02:34:23 +00:00
argv=['./scripts/postgres-create.sh'],
2024-07-23 02:59:41 +00:00
resource='postgresql-primary',
2024-06-12 04:28:36 +00:00
icon_name='dataset',
text='create (empty) databases',
)
2024-05-27 22:20:58 +00:00
cmd_button('postgres:restore',
2024-07-30 20:34:25 +00:00
argv=['./scripts/postgres-restore.sh'],
2024-07-23 02:59:41 +00:00
resource='postgresql-primary',
2024-06-12 04:28:36 +00:00
icon_name='upload',
2024-05-27 22:20:58 +00:00
text='restore db from backup',
)
cmd_button('postgres:drop',
argv=['sh', './scripts/postgres-drop.sh'],
2024-07-23 02:59:41 +00:00
resource='postgresql-primary',
2024-05-27 22:20:58 +00:00
icon_name='delete',
2024-07-25 13:53:52 +00:00
text='DROP all databases'
2024-06-12 04:28:36 +00:00
)
2024-07-23 02:59:41 +00:00
2024-07-25 13:53:52 +00:00
cmd_button('capture-api:create',
argv=['http', '--ignore-stdin', 'POST', 'http://localhost:5003/api/record', "url='https://twitch.tv/ironmouse'", "channel='ironmouse'"],
resource='capture-api',
icon_name='send',
text='Start Recording'
)
2024-07-28 00:42:09 +00:00
2024-07-30 20:34:25 +00:00
cmd_button('postgrest:restore',
argv=['./scripts/postgrest.sh'],
resource='postgrest',
icon_name='start',
text='initialize',
2024-06-12 04:28:36 +00:00
)
2024-05-27 22:20:58 +00:00
2024-07-30 20:34:25 +00:00
cmd_button('postgrest:migrate',
argv=[''],
resource='postgrest',
icon_name='directions_run',
text='Run migrations',
)
cmd_button('pgadmin4:restore',
argv=['./scripts/pgadmin-import-connection.sh'],
resource='pgadmin4',
icon_name='hub',
text='import connection',
)
2024-05-27 22:20:58 +00:00
## Uncomment the following for fp/next in dev mode
## this is useful for changing the UI and seeing results
docker_build(
'fp/next',
'.',
2024-07-12 14:41:34 +00:00
dockerfile='d.next.dockerfile',
2024-07-10 02:34:23 +00:00
target='next',
2024-05-27 22:20:58 +00:00
build_args={
2024-06-27 04:41:16 +00:00
'NEXT_PUBLIC_STRAPI_URL': 'https://strapi.fp.sbtp.xyz'
2024-05-27 22:20:58 +00:00
},
live_update=[
2024-07-30 20:34:25 +00:00
sync('./services/next', '/app')
],
pull=False,
2024-05-27 22:20:58 +00:00
)
2024-07-23 02:59:41 +00:00
# docker_build(
# 'fp/scout',
# '.',
# dockerfile='d.scout.dockerfile',
# target='scout',
# live_update=[
# sync('./packages/scout', '/app'),
# run('cd /app && pnpm i', trigger=['./packages/scout/package.json', './packages/scout/pnpm-lock.yaml']),
# ],
# entrypoint='pnpm nodemon --ext js,ts,json,yaml --exec node --no-warnings=ExperimentalWarning --loader ts-node/esm ./src/index.ts'
# # entrypoint='pnpm tsx watch ./src/index.ts'
# )
2024-07-10 02:34:23 +00:00
2024-07-14 05:20:35 +00:00
docker_build(
2024-07-23 02:59:41 +00:00
'fp/mailbox',
2024-07-14 05:20:35 +00:00
'.',
2024-07-23 02:59:41 +00:00
dockerfile='d.mailbox.dockerfile',
target='mailbox',
2024-07-14 05:20:35 +00:00
only=[
'./.npmrc',
'./package.json',
'./pnpm-lock.yaml',
'./pnpm-workspace.yaml',
'./packages/image',
'./packages/scout',
2024-07-30 20:34:25 +00:00
'./services/mailbox',
2024-07-14 05:20:35 +00:00
'./packages/types',
'./packages/utils',
'./packages/video',
'./packages/storage',
],
live_update=[
2024-07-30 20:34:25 +00:00
sync('./services/mailbox', '/app'),
run('cd /app && pnpm i', trigger=['./services/mailbox/package.json', './services/mailbox/pnpm-lock.yaml']),
2024-07-14 05:20:35 +00:00
],
2024-07-30 20:34:25 +00:00
pull=False,
2024-07-14 05:20:35 +00:00
# entrypoint='pnpm nodemon --ext js,ts,json,yaml --exec node --no-warnings=ExperimentalWarning --loader ts-node/esm ./src/index.ts'
)
2024-07-23 02:59:41 +00:00
# docker_build(
# 'fp/meal',
# '.',
# dockerfile='d.meal.dockerfile',
# target='meal',
# only=[
# './.npmrc',
# './package.json',
# './pnpm-lock.yaml',
# './pnpm-workspace.yaml',
# './packages/meal',
# './packages/taco',
# './packages/types',
# ],
# live_update=[
# sync('./packages/meal', '/app'),
# # run('cd /app && pnpm i', trigger=['./packages/meal/package.json', './packages/meal/pnpm-lock.yaml']),
# ],
# )
2024-07-10 02:34:23 +00:00
docker_build(
2024-07-23 02:59:41 +00:00
'fp/capture',
2024-07-10 02:34:23 +00:00
'.',
2024-07-23 02:59:41 +00:00
dockerfile='d.capture.dockerfile',
target='capture',
2024-07-12 14:41:34 +00:00
only=[
'./.npmrc',
'./package.json',
'./pnpm-lock.yaml',
'./pnpm-workspace.yaml',
2024-07-23 02:59:41 +00:00
'./packages/capture',
'./packages/scout',
2024-07-12 14:41:34 +00:00
'./packages/types',
2024-07-23 02:59:41 +00:00
'./packages/utils',
2024-07-28 00:42:09 +00:00
'./services/capture',
2024-07-12 14:41:34 +00:00
],
2024-07-10 02:34:23 +00:00
live_update=[
2024-07-28 00:42:09 +00:00
sync('./packages/capture/dist', '/app/dist'),
2024-07-30 20:34:25 +00:00
],
pull=False,
2024-07-10 02:34:23 +00:00
)
2024-05-27 22:20:58 +00:00
# k8s_resource(
# workload='kubernetes-ingress-controller-manager',
# links=[
# link(os.getenv('NGROK_URL'), 'Endpoint')
# ],
# labels='ngrok'
# )
# k8s_resource(
# workload='frp-operator-controller-manager',
# labels='tunnel'
# )
2024-07-06 08:49:51 +00:00
# k8s_resource(
# workload='echo',
# links=[
# link('https://echo.fp.sbtp.xyz'),
# link('http://echo.futureporn.svc.cluster.local:8001')
# ],
# labels='debug'
# )
2024-07-30 20:34:25 +00:00
# k8s_resource(
# workload='uppy',
# links=[
# link('https://uppy.fp.sbtp.xyz'),
# ],
# resource_deps=['redis-master'],
# labels=['backend'],
# )
2024-05-27 22:20:58 +00:00
k8s_resource(
workload='next',
port_forwards=['3000'],
links=[
2024-06-27 04:41:16 +00:00
link('https://next.fp.sbtp.xyz'),
2024-06-12 04:28:36 +00:00
],
2024-07-23 02:59:41 +00:00
resource_deps=['strapi', 'postgresql-primary'],
2024-07-04 21:20:29 +00:00
labels=['frontend'],
2024-05-27 22:20:58 +00:00
)
k8s_resource(
workload='strapi',
port_forwards=['1339'],
links=[
2024-07-06 08:49:51 +00:00
link('https://strapi.fp.sbtp.xyz/admin'),
2024-06-27 04:41:16 +00:00
link('https://strapi.fp.sbtp.xyz'),
2024-06-12 04:28:36 +00:00
],
2024-07-23 02:59:41 +00:00
resource_deps=['postgresql-primary'],
2024-07-04 21:20:29 +00:00
labels=['backend'],
2024-05-27 22:20:58 +00:00
)
2024-06-01 02:43:44 +00:00
2024-05-27 22:20:58 +00:00
k8s_resource(
2024-07-23 02:59:41 +00:00
workload='postgresql-primary',
2024-07-02 03:50:54 +00:00
port_forwards=['5432'],
2024-07-30 20:34:25 +00:00
labels=['database'],
2024-05-27 22:20:58 +00:00
)
2024-07-02 03:50:54 +00:00
k8s_resource(
2024-07-30 20:34:25 +00:00
workload='postgresql-read',
labels=['database']
2024-07-02 03:50:54 +00:00
)
2024-07-04 21:20:29 +00:00
k8s_resource(
2024-07-23 02:59:41 +00:00
workload='mailbox',
resource_deps=['postgresql-primary', 'strapi'],
2024-07-04 21:20:29 +00:00
labels=['backend'],
)
2024-06-12 04:28:36 +00:00
2024-05-29 23:43:47 +00:00
2024-06-04 23:06:47 +00:00
# k8s_resource(
# workload='nitter',
# port_forwards=['6060:10606'],
2024-06-12 04:28:36 +00:00
# )
2024-07-04 21:20:29 +00:00
# temporarily disabled to save CPU resources
2024-06-27 04:41:16 +00:00
# helm_remote(
2024-07-04 21:20:29 +00:00
# 'kube-prometheus-stack',
# repo_name='kube-prometheus-stack',
# repo_url='https://prometheus-community.github.io/helm-charts',
2024-06-27 04:41:16 +00:00
# namespace='futureporn',
2024-07-04 21:20:29 +00:00
# version='61.1.1',
2024-06-27 04:41:16 +00:00
# set=[
2024-07-04 21:20:29 +00:00
# 'prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.storageClassName=vultr-block-storage',
# 'admin.existingSecret=grafana',
# 'sidecar.dashboards.enabled=true',
# 'grafana.admin.existingSecret=grafana',
# 'grafana.sidecar.dashboards.enabled=true',
# 'grafana.sidecar.dashboards.defaultFolderName=balls',
# 'grafana.sidecar.dashboards.label=grafana_dashboard',
# 'grafana.sidecar.dashboards.provider.foldersFromFileStructure=true'
2024-06-27 04:41:16 +00:00
# ]
# )
2024-07-30 20:34:25 +00:00
2024-06-28 23:23:04 +00:00
2024-07-18 12:37:36 +00:00
## redis is only here for uppy's usage.
## If we can engineer a way to delete redis, let's do it
2024-07-30 20:34:25 +00:00
# helm_remote(
# 'redis',
# repo_name='redis',
# repo_url='https://charts.bitnami.com/bitnami',
# namespace='futureporn',
# version='19.6.1',
# set=[
# 'auth.existingSecret=redis',
# 'auth.existingSecretPasswordKey=password',
# 'replica.persistence.enabled=false',
# 'architecture=standalone'
# ]
# )
2024-07-06 08:49:51 +00:00
2024-07-04 21:20:29 +00:00
k8s_resource(
workload='external-dns',
labels=['networking'],
)
k8s_resource(
workload='cert-manager-webhook-exoscale',
labels=['networking'],
)
2024-07-06 08:49:51 +00:00
2024-07-30 20:34:25 +00:00
# k8s_resource(
# workload='redis-master',
# labels=['backend']
# )
2024-07-06 08:49:51 +00:00
2024-07-23 02:59:41 +00:00
# k8s_resource(
# workload='bot',
# labels=['backend'],
# # resource_deps=['strapi'],
# )
2024-07-14 05:20:35 +00:00
k8s_resource(
2024-07-23 02:59:41 +00:00
workload='capture-api',
port_forwards=['5003'],
2024-07-14 05:20:35 +00:00
labels=['backend'],
2024-07-30 20:34:25 +00:00
resource_deps=['postgrest', 'postgresql-primary'],
2024-07-14 05:20:35 +00:00
)
2024-07-23 02:59:41 +00:00
k8s_resource(
workload='capture-worker',
labels=['backend'],
2024-07-30 20:34:25 +00:00
resource_deps=['postgrest', 'postgresql-primary'],
)
k8s_resource(
workload='postgrest',
port_forwards=['9000'],
labels=['database'],
resource_deps=['postgresql-primary'],
)
k8s_resource(
workload='pgadmin4',
port_forwards=['5050:80'],
labels=['database'],
)
k8s_resource(
workload='cert-manager',
labels=['certificates'],
)
k8s_resource(
workload='cert-manager-cainjector',
labels=['certificates'],
)
k8s_resource(
workload='cert-manager-webhook',
labels=['certificates'],
)
k8s_resource(
workload='cert-manager-startupapicheck',
labels=['certificates'],
)