@blitzm/azure-kubernetes is a typescript library for simplifying the process of creating an AKS cluster with a single managed node groups. It abstracts the complicated configurations to provider a simple input interface for Blitzm developers to deploy resources to the cloud platform with little or no domain knowledge of the provider.
This package can be installed using npm
npm install --save --save-exact @blitzm/azure-kubernetes
import { AzureKubernetes } from '@blitzm/azure-kubernetes';
import * as azure from '@pulumi/azure';
const vnet = new azure.network.VirtualNetwork('vnet', {
name: 'vnet',
resourceGroupName: resourceGroup.name,
addressSpaces: [ '10.13.0.0/16' ]
});
const subnet = new azure.network.Subnet('subnet', {
name: 'subnet',
resourceGroupName: resourceGroup.name,
virtualNetworkName: vnet.name,
addressPrefixes: [ '10.13.0.0/24' ]
});
// a cluster without Firewall
const cluster = new AzureKubernetes('cluster', {
resourceGroup: resourceGroup,
network: {
subnet: clusterSubnet,
vNet: vNet,
},
nodeSize: 'Standard_B2s',
nodeDiskGB: 30,
minNodes: 1
maxNodes:3
});
// a cluster with Firewall to control the egress
const cluster = new AzureKubernetes(
'cluster',
{
resourceGroup: resourceGroup,
minNodes: 1,
maxNodes: 2,
network: {
subnet: clusterSubnet,
vNet: vNet,
},
firewall: {
enable: true,
allowedHttpDomains: [
"*.docker.com",
"*.docker.io",
"*.k8s.io",
"*.pkg.dev",
"*.appspot.com",
"*.gcr.io",
"*.amazonaws.com",
"quay.io",
"*.quay.io",
"letsencrypt.org",
"*.letsencrypt.org",
],
},
nginxIngress: {
enabled: true,
},
certManager: {
enabled: true,
},
maxPods: 60,
kubernetesVersion: "1.29",
}
);
export const cluster = cluster.cluster
export const kubeconfig = cluster.kubeconfig
export const servicePrincipal = cluster.servicePrincipal
export const ingressId = cluster.ingressPublicIP
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.