Skip to content

Commit

Permalink
feat: adds properties to construct to improve reuse
Browse files Browse the repository at this point in the history
  • Loading branch information
Adam Stortz committed Feb 16, 2023
1 parent 29fb719 commit 777f6b0
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 11 deletions.
3 changes: 3 additions & 0 deletions API.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ new ContainerService(scope: Construct, id: string, props: ContainerServiceProps)

Name | Type | Description
-----|------|-------------
**applicationLoadBalancer** | <code>[aws_elasticloadbalancingv2.ApplicationLoadBalancer](#aws-cdk-lib-aws-elasticloadbalancingv2-applicationloadbalancer)</code> | <span></span>
**service** | <code>[aws_ecs.FargateService](#aws-cdk-lib-aws-ecs-fargateservice)</code> | <span></span>


Expand Down Expand Up @@ -155,6 +156,8 @@ new KeyCloak(scope: Construct, id: string, props: KeyCloakProps)

Name | Type | Description
-----|------|-------------
**applicationLoadBalancer** | <code>[aws_elasticloadbalancingv2.ApplicationLoadBalancer](#aws-cdk-lib-aws-elasticloadbalancingv2-applicationloadbalancer)</code> | <span></span>
**keycloakSecret** | <code>[aws_secretsmanager.ISecret](#aws-cdk-lib-aws-secretsmanager-isecret)</code> | <span></span>
**vpc** | <code>[aws_ec2.IVpc](#aws-cdk-lib-aws-ec2-ivpc)</code> | <span></span>
**db**? | <code>[Database](#cdk-keycloak-database)</code> | __*Optional*__

Expand Down
24 changes: 13 additions & 11 deletions src/keycloak.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
import * as cdk from 'aws-cdk-lib';
import {
aws_certificatemanager as certmgr,
aws_ec2 as ec2,
aws_elasticloadbalancingv2 as elbv2,
aws_ec2 as ec2, aws_ecs as ecs, aws_elasticloadbalancingv2 as elbv2,
aws_iam as iam,
aws_logs as logs,
aws_rds as rds,
aws_ecs as ecs,
aws_secretsmanager as secretsmanager,
aws_rds as rds, aws_secretsmanager as secretsmanager,
} from 'aws-cdk-lib';
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';


Expand Down Expand Up @@ -212,6 +209,8 @@ export interface KeyCloakProps {
export class KeyCloak extends Construct {
readonly vpc: ec2.IVpc;
readonly db?: Database;
readonly applicationLoadBalancer: elbv2.ApplicationLoadBalancer;
readonly keycloakSecret: secretsmanager.ISecret;
constructor(scope: Construct, id: string, props: KeyCloakProps) {
super(scope, id);

Expand All @@ -222,6 +221,7 @@ export class KeyCloak extends Construct {
throw new Error(`Aurora serverless is not supported in ${region}`);
}

this.keycloakSecret = this._generateKeycloakSecret();
this.vpc = props.vpc ?? getOrCreateVpc(this);
this.db = this.addDatabase({
vpc: this.vpc,
Expand All @@ -234,20 +234,21 @@ export class KeyCloak extends Construct {
singleDbInstance: props.singleDbInstance,
backupRetention: props.backupRetention,
});
this.addKeyCloakContainerService({
const keycloakContainerService = this.addKeyCloakContainerService({
database: this.db,
vpc: this.vpc,
keycloakVersion: props.keycloakVersion,
publicSubnets: props.publicSubnets,
privateSubnets: props.privateSubnets,
keycloakSecret: this._generateKeycloakSecret(),
keycloakSecret: this.keycloakSecret,
certificate: certmgr.Certificate.fromCertificateArn(this, 'ACMCert', props.certificateArn),
bastion: props.bastion,
nodeCount: props.nodeCount,
stickinessCookieDuration: props.stickinessCookieDuration,
autoScaleTask: props.autoScaleTask,
env: props.env,
});
this.applicationLoadBalancer = keycloakContainerService.applicationLoadBalancer;
if (!cdk.Stack.of(this).templateOptions.description) {
cdk.Stack.of(this).templateOptions.description = '(SO8021) - Deploy keycloak on AWS with cdk-keycloak construct library';
}
Expand Down Expand Up @@ -559,6 +560,7 @@ export interface ContainerServiceProps {

export class ContainerService extends Construct {
readonly service: ecs.FargateService;
readonly applicationLoadBalancer: elbv2.ApplicationLoadBalancer;
constructor(scope: Construct, id: string, props: ContainerServiceProps) {
super(scope, id);

Expand Down Expand Up @@ -644,14 +646,14 @@ export class ContainerService extends Construct {
});
};

const alb = new elbv2.ApplicationLoadBalancer(this, 'ALB', {
this.applicationLoadBalancer = new elbv2.ApplicationLoadBalancer(this, 'ALB', {
vpc,
vpcSubnets: props.publicSubnets,
internetFacing: true,
});
printOutput(this, 'EndpointURL', `https://${alb.loadBalancerDnsName}`);
printOutput(this, 'EndpointURL', `https://${this.applicationLoadBalancer.loadBalancerDnsName}`);

const listener = alb.addListener('HttpsListener', {
const listener = this.applicationLoadBalancer.addListener('HttpsListener', {
protocol: elbv2.ApplicationProtocol.HTTPS,
certificates: [{ certificateArn: props.certificate.certificateArn }],
});
Expand Down

0 comments on commit 777f6b0

Please sign in to comment.