Skip to content

Commit

Permalink
Merge pull request #773 from tsahiduek/create-ns-for-metrics-server
Browse files Browse the repository at this point in the history
Adding create Namespace support for Metrics-Server addon
  • Loading branch information
elamaran11 authored Jul 18, 2023
2 parents e30025e + c4a0774 commit 0928491
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 27 deletions.
1 change: 1 addition & 0 deletions docs/addons/metrics-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ blueprints-addon-metrics-server 1/1 1

1. Deploys the metrics-server helm chart in `kube-system` namespace by default.
2. Supports [standard helm configuration options](./index.md#standard-helm-add-on-configuration-options).
3. Supports `createNamespace` configuration to deploy the addon to a customized namespace.

## Testing with Kubernetes Dashboard

Expand Down
19 changes: 6 additions & 13 deletions lib/addons/kube-state-metrics/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,20 +45,13 @@ export class KubeStateMetricsAddOn extends HelmAddOn {
const cluster = clusterInfo.cluster;
let values: Values = populateValues(this.options);
values = merge(values, this.props.values ?? {});

if( this.options.createNamespace == true){
// Let CDK Create the Namespace
const namespace = createNamespace(this.options.namespace! , cluster);
const chart = this.addHelmChart(clusterInfo, values);
chart.node.addDependency(namespace);
return Promise.resolve(chart);

} else {
//Namespace is already created
const chart = this.addHelmChart(clusterInfo, values);
return Promise.resolve(chart);
const chart = this.addHelmChart(clusterInfo, values);
if (this.options.createNamespace == true) {
// Let CDK Create the Namespace
const namespace = createNamespace(this.options.namespace!, cluster);
chart.node.addDependency(namespace);
}

return Promise.resolve(chart);
}
}

Expand Down
47 changes: 33 additions & 14 deletions lib/addons/metrics-server/index.ts
Original file line number Diff line number Diff line change
@@ -1,33 +1,52 @@
import { ClusterInfo } from "../../spi";
import { HelmAddOn, HelmAddOnProps, HelmAddOnUserProps } from "../helm-addon";
import { Construct } from 'constructs';
import merge from 'ts-deepmerge';
import { ClusterInfo, Values } from '../../spi';
import { HelmAddOn, HelmAddOnProps, HelmAddOnUserProps } from '../helm-addon';
import { createNamespace } from '../../utils';

/**
* Configuration options for the add-on.
*/
type MetricsServerAddOnProps = HelmAddOnUserProps;

export interface MetricsServerAddOnProps extends HelmAddOnUserProps {
/**
* To Create Namespace using CDK
*/
createNamespace?: boolean;
}

/**
* Defaults options for the add-on
*/
const defaultProps: HelmAddOnProps = {
chart: "metrics-server",
repository: "https://kubernetes-sigs.github.io/metrics-server",
version: "3.10.0",
const defaultProps: HelmAddOnProps & MetricsServerAddOnProps = {
chart: 'metrics-server',
repository: 'https://kubernetes-sigs.github.io/metrics-server',
version: '3.10.0',
release: 'blueprints-addon-metrics-server',
name: 'metrics-server',
namespace: 'kube-system'
namespace: 'kube-system',
createNamespace: false,
};

export class MetricsServerAddOn extends HelmAddOn {

private options: MetricsServerAddOnProps;
readonly options: MetricsServerAddOnProps;

constructor(props?: MetricsServerAddOnProps) {
super({ ...defaultProps, ...props });
this.options = this.props;
this.options = this.props as MetricsServerAddOnProps;
}

deploy(clusterInfo: ClusterInfo): void {
this.addHelmChart(clusterInfo, this.options.values);
deploy(clusterInfo: ClusterInfo): Promise<Construct> {
const cluster = clusterInfo.cluster;
let values: Values = this.options ?? {};
values = merge(values, this.props.values ?? {});
const chart = this.addHelmChart(clusterInfo, values);

if (this.options.createNamespace == true) {
// Let CDK Create the Namespace
const namespace = createNamespace(this.options.namespace!, cluster);
chart.node.addDependency(namespace);
}
return Promise.resolve(chart);
}
}
}

0 comments on commit 0928491

Please sign in to comment.