Merge pull request #2600 from spotify/rugvip/disco

backend: add service discovery interface and implement for single host deployments
This commit is contained in:
Patrik Oldsberg
2020-09-25 13:32:36 +02:00
committed by GitHub
23 changed files with 261 additions and 48 deletions
+5 -3
View File
@@ -30,6 +30,7 @@ import {
getRootLogger,
useHotMemoize,
notFoundHandler,
SingleHostDiscovery,
} from '@backstage/backend-common';
import { ConfigReader, AppConfig } from '@backstage/config';
import healthcheck from './plugins/healthcheck';
@@ -59,7 +60,8 @@ function makeCreateEnv(loadedConfigs: AppConfig[]) {
},
},
);
return { logger, database, config };
const discovery = SingleHostDiscovery.fromConfig(config);
return { logger, database, config, discovery };
};
}
@@ -85,11 +87,11 @@ async function main() {
apiRouter.use('/rollbar', await rollbar(rollbarEnv));
apiRouter.use('/scaffolder', await scaffolder(scaffolderEnv));
apiRouter.use('/sentry', await sentry(sentryEnv));
apiRouter.use('/auth', await auth(authEnv, '/api/auth'));
apiRouter.use('/auth', await auth(authEnv));
apiRouter.use('/identity', await identity(identityEnv));
apiRouter.use('/techdocs', await techdocs(techdocsEnv));
apiRouter.use('/kubernetes', await kubernetes(kubernetesEnv));
apiRouter.use('/proxy', await proxy(proxyEnv, '/api/proxy'));
apiRouter.use('/proxy', await proxy(proxyEnv));
apiRouter.use('/graphql', await graphql(graphqlEnv));
apiRouter.use(notFoundHandler());
+7 -5
View File
@@ -17,9 +17,11 @@
import { createRouter } from '@backstage/plugin-auth-backend';
import { PluginEnvironment } from '../types';
export default async function createPlugin(
{ logger, database, config }: PluginEnvironment,
basePath: string,
) {
return await createRouter({ logger, config, database, basePath });
export default async function createPlugin({
logger,
database,
config,
discovery,
}: PluginEnvironment) {
return await createRouter({ logger, config, database, discovery });
}
+6 -5
View File
@@ -18,9 +18,10 @@
import { createRouter } from '@backstage/plugin-proxy-backend';
import { PluginEnvironment } from '../types';
export default async function createPlugin(
{ logger, config }: PluginEnvironment,
pathPrefix: string,
) {
return await createRouter({ logger, config, pathPrefix });
export default async function createPlugin({
logger,
config,
discovery,
}: PluginEnvironment) {
return await createRouter({ logger, config, discovery });
}
+2
View File
@@ -29,6 +29,7 @@ import Docker from 'dockerode';
export default async function createPlugin({
logger,
config,
discovery,
}: PluginEnvironment) {
const generators = new Generators();
const techdocsGenerator = new TechdocsGenerator(logger, config);
@@ -51,5 +52,6 @@ export default async function createPlugin({
dockerClient,
logger,
config,
discovery,
});
}
+2
View File
@@ -17,9 +17,11 @@
import Knex from 'knex';
import { Logger } from 'winston';
import { Config } from '@backstage/config';
import { PluginEndpointDiscovery } from '@backstage/backend-common';
export type PluginEnvironment = {
logger: Logger;
database: Knex;
config: Config;
discovery: PluginEndpointDiscovery;
};