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
+6 -5
View File
@@ -22,13 +22,16 @@ import { Logger } from 'winston';
import { createAuthProviderRouter } from '../providers';
import { Config } from '@backstage/config';
import { DatabaseKeyStore, TokenFactory, createOidcRouter } from '../identity';
import { NotFoundError } from '@backstage/backend-common';
import {
NotFoundError,
PluginEndpointDiscovery,
} from '@backstage/backend-common';
export interface RouterOptions {
logger: Logger;
database: Knex;
config: Config;
basePath?: string;
discovery: PluginEndpointDiscovery;
}
export async function createRouter(
@@ -38,9 +41,7 @@ export async function createRouter(
const logger = options.logger.child({ plugin: 'auth' });
const appUrl = options.config.getString('app.baseUrl');
const backendUrl = options.config.getString('backend.baseUrl');
// TODO(Rugvip): Replace with service discovery of external URL
const authUrl = backendUrl + (options.basePath ?? '/api/auth');
const authUrl = await options.discovery.getExternalBaseUrl('auth');
const keyDurationSeconds = 3600;
@@ -23,6 +23,7 @@ import {
createServiceBuilder,
useHotMemoize,
loadBackendConfig,
SingleHostDiscovery,
} from '@backstage/backend-common';
export interface ServerOptions {
@@ -34,6 +35,7 @@ export async function startStandaloneServer(
): Promise<Server> {
const logger = options.logger.child({ service: 'auth-backend' });
const config = ConfigReader.fromConfigs(await loadBackendConfig());
const discovery = SingleHostDiscovery.fromConfig(config);
const database = useHotMemoize(module, () => {
const knex = Knex({
@@ -52,6 +54,7 @@ export async function startStandaloneServer(
logger,
config,
database,
discovery,
});
const service = createServiceBuilder(module)