careful-winter-88523
05/25/2023, 2:12 AMimport * as digitalocean from "@pulumi/digitalocean";
import * as kubernetes from "@pulumi/kubernetes";
const defaultRegion: digitalocean.Region = digitalocean.Region.LON1;
/**
* Domain
*/
const domain = new digitalocean.Domain("domain", {
name: "some-domain",
ipAddress: 'some-ip'
});
/**
* Kubernetes
* This is here just to fix 50% of the time, when running pulumi up it failed due to 'incompatable version error'.
*/
async function getKubernetesVersions() {
const versions = digitalocean.getKubernetesVersions({});
return (await versions).latestVersion;
}
const cluster = new digitalocean.KubernetesCluster("do-cluster", {
region: defaultRegion,
version: getKubernetesVersions(),
nodePool: {
name: "api-pool",
size: 's-1vcpu-2gb',
nodeCount: 1,
},
});
export const kubeconfig = cluster.kubeConfigs[0].rawConfig;
const provider = new kubernetes.Provider("do-k8s", { kubeconfig });
const appLabels = { "app": "app-nginx" };
const app = new kubernetes.apps.v1.Deployment("do-app-dep", {
spec: {
selector: { matchLabels: appLabels },
replicas: 1,
template: {
metadata: { labels: appLabels },
spec: {
containers: [{
name: "nginx",
image: "nginx",
}],
},
},
},
}, { provider });
const appService = new kubernetes.core.v1.Service("do-app-svc", {
spec: {
type: "LoadBalancer",
selector: app.spec.template.metadata.labels,
ports: [{ port: 80 }],
},
}, { provider });
export const ingressIp = appService.status.loadBalancer.ingress[0].ip;
// point <http://api.some-domain.com|api.some-domain.com> to the ingress IP
const apiRecord = new digitalocean.DnsRecord("api", {
domain: domain.name,
type: "A",
name: "api",
value: ingressIp,
ttl: 30
});
Many thanks in advance! (PS: sorry if this isn't really the right place to post this)