Compare commits

..

2 Commits

Author SHA1 Message Date
Morten Olsen
cad527e644 fix: add http service to authentik 2025-11-18 15:18:17 +01:00
Morten Olsen
ce2cebf77b fix: oidc auth url 2025-10-13 23:32:48 +02:00
4 changed files with 34 additions and 14 deletions

View File

@@ -30,7 +30,7 @@
"eventemitter3": "^5.0.1", "eventemitter3": "^5.0.1",
"execa": "^9.6.0", "execa": "^9.6.0",
"knex": "^3.1.0", "knex": "^3.1.0",
"p-queue": "^9.0.0", "p-queue": "^8.1.0",
"p-retry": "^7.0.0", "p-retry": "^7.0.0",
"pg": "^8.16.3", "pg": "^8.16.3",
"sqlite3": "^5.1.7", "sqlite3": "^5.1.7",

View File

@@ -44,8 +44,8 @@ importers:
specifier: ^3.1.0 specifier: ^3.1.0
version: 3.1.0(pg@8.16.3)(sqlite3@5.1.7) version: 3.1.0(pg@8.16.3)(sqlite3@5.1.7)
p-queue: p-queue:
specifier: ^9.0.0 specifier: ^8.1.0
version: 9.0.1 version: 8.1.1
p-retry: p-retry:
specifier: ^7.0.0 specifier: ^7.0.0
version: 7.0.0 version: 7.0.0
@@ -1475,17 +1475,17 @@ packages:
resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
p-queue@9.0.1: p-queue@8.1.1:
resolution: {integrity: sha512-RhBdVhSwJb7Ocn3e8ULk4NMwBEuOxe+1zcgphUy9c2e5aR/xbEsdVXxHJ3lynw6Qiqu7OINEyHlZkiblEpaq7w==} resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==}
engines: {node: '>=20'} engines: {node: '>=18'}
p-retry@7.0.0: p-retry@7.0.0:
resolution: {integrity: sha512-3BgO9rjULJYyr0Y0pcsG7FZ+7JB/hfOODO8kx9ppumiO5jprUF92WK/Y7Q0xppZtq4VhTcPiVq7qWLQfIV5aKQ==} resolution: {integrity: sha512-3BgO9rjULJYyr0Y0pcsG7FZ+7JB/hfOODO8kx9ppumiO5jprUF92WK/Y7Q0xppZtq4VhTcPiVq7qWLQfIV5aKQ==}
engines: {node: '>=20'} engines: {node: '>=20'}
p-timeout@7.0.1: p-timeout@6.1.4:
resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
engines: {node: '>=20'} engines: {node: '>=14.16'}
parent-module@1.0.1: parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
@@ -3653,16 +3653,16 @@ snapshots:
aggregate-error: 3.1.0 aggregate-error: 3.1.0
optional: true optional: true
p-queue@9.0.1: p-queue@8.1.1:
dependencies: dependencies:
eventemitter3: 5.0.1 eventemitter3: 5.0.1
p-timeout: 7.0.1 p-timeout: 6.1.4
p-retry@7.0.0: p-retry@7.0.0:
dependencies: dependencies:
is-network-error: 1.1.0 is-network-error: 1.1.0
p-timeout@7.0.1: {} p-timeout@6.1.4: {}
parent-module@1.0.1: parent-module@1.0.1:
dependencies: dependencies:

View File

@@ -32,7 +32,7 @@ class BootstrapService {
public ensure = async () => { public ensure = async () => {
await this.namespaces.ensure(); await this.namespaces.ensure();
await this.repos.ensure(); await this.repos.ensure();
// await this.releases.ensure(); await this.releases.ensure();
await this.cloudflareTunnel.ensure({ await this.cloudflareTunnel.ensure({
spec: {}, spec: {},
}); });

View File

@@ -18,6 +18,7 @@ import { RepoService } from '#bootstrap/repos/repos.ts';
import { DestinationRule } from '#resources/istio/destination-rule/destination-rule.ts'; import { DestinationRule } from '#resources/istio/destination-rule/destination-rule.ts';
import { NotReadyError } from '#utils/errors.ts'; import { NotReadyError } from '#utils/errors.ts';
import { ExternalHttpService } from '../external-http-service.ts/external-http-service.ts'; import { ExternalHttpService } from '../external-http-service.ts/external-http-service.ts';
import { HttpService } from '../http-service/http-service.ts';
const specSchema = z.object({ const specSchema = z.object({
environment: z.string(), environment: z.string(),
@@ -44,6 +45,7 @@ class AuthentikServer extends CustomResource<typeof specSchema> {
#initSecret: Secret<InitSecretData>; #initSecret: Secret<InitSecretData>;
#service: Service; #service: Service;
#helmRelease: HelmRelease; #helmRelease: HelmRelease;
#httpService: HttpService;
#externalHttpService: ExternalHttpService; #externalHttpService: ExternalHttpService;
#destinationRule: DestinationRule; #destinationRule: DestinationRule;
@@ -72,6 +74,8 @@ class AuthentikServer extends CustomResource<typeof specSchema> {
this.#destinationRule.on('changed', this.queueReconcile); this.#destinationRule.on('changed', this.queueReconcile);
this.#externalHttpService = resourceService.get(ExternalHttpService, this.name, this.namespace); this.#externalHttpService = resourceService.get(ExternalHttpService, this.name, this.namespace);
this.#httpService = resourceService.get(HttpService, this.name, this.namespace);
} }
public get service() { public get service() {
@@ -168,7 +172,7 @@ class AuthentikServer extends CustomResource<typeof specSchema> {
chart: { chart: {
spec: { spec: {
chart: 'authentik', chart: 'authentik',
version: '2025.10.3', version: '2025.6.4',
sourceRef: { sourceRef: {
apiVersion: 'source.toolkit.fluxcd.io/v1', apiVersion: 'source.toolkit.fluxcd.io/v1',
kind: 'HelmRepository', kind: 'HelmRepository',
@@ -253,6 +257,22 @@ class AuthentikServer extends CustomResource<typeof specSchema> {
}, },
}); });
await this.#httpService.ensure({
metadata: {
ownerReferences: [this.ref],
},
spec: {
environment: this.spec.environment,
subdomain: this.spec.subdomain || 'authentik',
destination: {
host: this.#service.hostname,
port: {
number: 80,
},
},
},
});
await this.#externalHttpService.ensure({ await this.#externalHttpService.ensure({
metadata: { metadata: {
ownerReferences: [this.ref], ownerReferences: [this.ref],