|
@@ -25,19 +25,94 @@ const cluster = new eks.Cluster('eksctl-my-cluster', {
|
|
export const kubeconfig = cluster.kubeconfig
|
|
export const kubeconfig = cluster.kubeconfig
|
|
|
|
|
|
// Create a repository
|
|
// Create a repository
|
|
-const repo = new awsx.ecr.Repository('my-repo')
|
|
|
|
|
|
+const repo = new awsx.ecr.Repository('joystream/apps')
|
|
|
|
|
|
-const redisLeader = new k8sjs.ServiceDeployment('redis-leader', {
|
|
|
|
|
|
+export const joystreamAppsImage = repo.buildAndPushImage({
|
|
|
|
+ dockerfile: '../../../apps.Dockerfile',
|
|
|
|
+ context: '../../../',
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+const redis = new k8sjs.ServiceDeployment('redis', {
|
|
image: 'redis:6.0-alpine',
|
|
image: 'redis:6.0-alpine',
|
|
ports: [6379],
|
|
ports: [6379],
|
|
|
|
+ provider: cluster.provider,
|
|
})
|
|
})
|
|
|
|
|
|
const db = new k8sjs.ServiceDeployment('postgres-db', {
|
|
const db = new k8sjs.ServiceDeployment('postgres-db', {
|
|
image: 'postgres:12',
|
|
image: 'postgres:12',
|
|
ports: [5432],
|
|
ports: [5432],
|
|
|
|
+ provider: cluster.provider,
|
|
|
|
+ env: [
|
|
|
|
+ { name: 'POSTGRES_USER', value: process.env.DB_USER! },
|
|
|
|
+ { name: 'POSTGRES_PASSWORD', value: process.env.DB_PASS! },
|
|
|
|
+ { name: 'POSTGRES_DB', value: process.env.INDEXER_DB_NAME! },
|
|
|
|
+ ],
|
|
|
|
+ allocateIpAddress: false,
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+const indexer = new k8sjs.ServiceDeployment('indexer', {
|
|
|
|
+ image: 'joystream/hydra-indexer:2.1.0-beta.9',
|
|
|
|
+ provider: cluster.provider,
|
|
|
|
+ env: [
|
|
|
|
+ { name: 'DB_HOST', value: 'postgres-db' },
|
|
|
|
+ { name: 'DB_NAME', value: process.env.INDEXER_DB_NAME! },
|
|
|
|
+ { name: 'INDEXER_WORKERS', value: '5' },
|
|
|
|
+ { name: 'REDIS_URI', value: 'redis://redis:6379/0' },
|
|
|
|
+ { name: 'DEBUG', value: 'index-builder:*' },
|
|
|
|
+ { name: 'WS_PROVIDER_ENDPOINT_URI', value: process.env.WS_PROVIDER_ENDPOINT_URI! },
|
|
|
|
+ { name: 'TYPES_JSON', value: 'types.json' },
|
|
|
|
+ ],
|
|
|
|
+ command: ['yarn db:bootstrap && yarn start:prod'],
|
|
|
|
+ allocateIpAddress: false,
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+const hydraIndexerGateway = new k8sjs.ServiceDeployment('hydra-indexer-gateway', {
|
|
|
|
+ image: 'joystream/hydra-indexer:2.1.0-beta.9',
|
|
|
|
+ ports: [5432],
|
|
|
|
+ provider: cluster.provider,
|
|
env: [
|
|
env: [
|
|
{ name: 'POSTGRES_USER', value: process.env.DB_USER! },
|
|
{ name: 'POSTGRES_USER', value: process.env.DB_USER! },
|
|
{ name: 'POSTGRES_PASSWORD', value: process.env.DB_PASS! },
|
|
{ name: 'POSTGRES_PASSWORD', value: process.env.DB_PASS! },
|
|
{ name: 'POSTGRES_DB', value: process.env.INDEXER_DB_NAME! },
|
|
{ name: 'POSTGRES_DB', value: process.env.INDEXER_DB_NAME! },
|
|
],
|
|
],
|
|
|
|
+ allocateIpAddress: false,
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+const processor = new k8sjs.ServiceDeployment('processor', {
|
|
|
|
+ image: joystreamAppsImage,
|
|
|
|
+ provider: cluster.provider,
|
|
|
|
+ env: [
|
|
|
|
+ { name: 'INDEXER_ENDPOINT_URL', value: `http://hydra-indexer-gateway:${process.env.WARTHOG_APP_PORT}/graphql` },
|
|
|
|
+ { name: 'TYPEORM_HOST', value: 'postgres-db' },
|
|
|
|
+ { name: 'TYPEORM_DATABASE', value: process.env.DB_NAME! },
|
|
|
|
+ { name: 'DEBUG', value: 'index-builder:*' },
|
|
|
|
+ { name: 'PROCESSOR_POLL_INTERVAL', value: '1000' },
|
|
|
|
+ ],
|
|
|
|
+ volumeMounts: [
|
|
|
|
+ {
|
|
|
|
+ mountPath: '/joystream/query-node/mappings/lib/generated/types/typedefs.json',
|
|
|
|
+ name: 'tmp-volume',
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ volumes: [
|
|
|
|
+ {
|
|
|
|
+ name: 'tmp-volume',
|
|
|
|
+ hostPath: {
|
|
|
|
+ path: '../../../types/augment/all/defs.json',
|
|
|
|
+ type: 'FileOrCreate',
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ allocateIpAddress: false,
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+const graphqlServer = new k8sjs.ServiceDeployment('graphql-server', {
|
|
|
|
+ image: joystreamAppsImage,
|
|
|
|
+ ports: [Number(process.env.GRAPHQL_SERVER_PORT!)],
|
|
|
|
+ provider: cluster.provider,
|
|
|
|
+ env: [
|
|
|
|
+ { name: 'DB_HOST', value: 'postgres-db' },
|
|
|
|
+ { name: 'DB_NAME', value: process.env.DB_NAME! },
|
|
|
|
+ ],
|
|
|
|
+ allocateIpAddress: true,
|
|
})
|
|
})
|