Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Development #6

Merged
merged 29 commits into from
Feb 22, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: refactor structure
Björn Urban committed Feb 5, 2024
commit df181918e8ce127020d33422b945e1dd65d5fc8b
14 changes: 14 additions & 0 deletions l0/components/flux/chart/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import {CustomResourceOptions} from "@pulumi/pulumi";
import {helm} from "@pulumi/kubernetes";

export function installFlux(opts: CustomResourceOptions) {
//TODO: Switch to Helm Release, to enable Hook Support
return new helm.v3.Chart("flux-operator", {
chart: "pulumi-kubernetes-operator",
version: "v0.5.0",
fetchOpts: {
repo: "https://pulumi.github.io/pulumi-kubernetes-operator",
},

}, opts);
}
12 changes: 11 additions & 1 deletion l0/index.ts
Original file line number Diff line number Diff line change
@@ -11,6 +11,8 @@ import * as fs from "fs";
import {Provider} from "@pulumi/kubernetes";
import {installCertManager, installCilium, installClusterIssuer, installCSIDriver} from "./components/addons";
import {RandomPassword} from "@pulumi/random";
import {installFlux} from "./components/flux/chart";
import {Namespace} from "@pulumi/kubernetes/core/v1";


const config = new pulumi.Config();
@@ -27,7 +29,7 @@ const k3sToken = new RandomPassword("k3sToken", {
length: 30
})
const k3sCluster = new K3sCluster(hetznerOrchestrator, provider, hcloudToken, k3sToken);
const result = k3sCluster.createCluster(clusterName, true, 2, 2)
const result = k3sCluster.createCluster(clusterName, true, 1, 1)
// Write to a file
result.kubeconfig.apply(value => {
fs.writeFileSync(filename, value, 'utf8');
@@ -39,6 +41,14 @@ const cilium = installCilium({provider:kubernetesProvider});
installCSIDriver(hcloudToken,{provider: kubernetesProvider, dependsOn: [cilium]})
const certManager = installCertManager({provider:kubernetesProvider})
installClusterIssuer(mail!!,{provider: kubernetesProvider, dependsOn: [certManager]})
//installFlux({provider:kubernetesProvider, dependsOn:[cilium]})
new Namespace("flux-system", {
metadata: {
name: "flux-system"
},
},
{provider: kubernetesProvider}
)


// const example = new gitlab.GroupVariable("kubeconfig", {
12 changes: 8 additions & 4 deletions l0/k3s/K3sCluster.ts
Original file line number Diff line number Diff line change
@@ -49,10 +49,14 @@ export class K3sCluster<T extends keyof CloudProviderTypes> {
publicKey: it,
}, {provider: this.provider}));
const initialNode = this.orchestrator.createServer(sshKeys, network, serverType, masterConfig(this.k3sToken.result, useCilium), "master-main")
for (let i = 0; i < (agentCount + masterCount - 1); i++) {
const worker = i < masterCount - 1
const serverName = i < masterCount - 1 ? `master-${i+1}` : `node-${masterCount-i}`
this.orchestrator.createServer(sshKeys, network, serverType, workerConfig(initialNode.ipv4Address, this.k3sToken.result, useCilium, worker), serverName)
for (let i = 0; i < masterCount - 1; i++) {
const serverName = `master-${i+1}`
this.orchestrator.createServer(sshKeys, network, serverType, workerConfig(initialNode.ipv4Address, this.k3sToken.result, useCilium, false), serverName)
}

for (let i = 0; i < agentCount; i++) {
const serverName = `node-${i}`
this.orchestrator.createServer(sshKeys, network, serverType, workerConfig(initialNode.ipv4Address, this.k3sToken.result, useCilium, true), serverName)
}

const kubeconfig = this.getConfig(initialNode.ipv4Address, sshKey); // Assuming this returns the kubeconfig as a string
6 changes: 3 additions & 3 deletions l0/k3s/cloudinit.ts
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ export const masterConfig = (k3sToken: Input<string>, disableFlannel: boolean):
`;
}

export const workerConfig = (masterIp: Output<string>, k3sToken: Input<string>, disableFlannel: boolean, worker: boolean = true): Output<string> => {
export const workerConfig = (masterIp: Output<string>, k3sToken: Input<string>, disableFlannel: boolean, isWorker: boolean = true): Output<string> => {
return pulumi.interpolate`
#cloud-config
users:
@@ -25,7 +25,7 @@ export const workerConfig = (masterIp: Output<string>, k3sToken: Input<string>,
shell: /bin/bash
runcmd:
- |
curl -sfL https://get.k3s.io | K3S_TOKEN=${k3sToken} K3S_KUBECONFIG_MODE="644" K3S_URL=https://${masterIp}:6443 sh -s - ${worker ? "agent" : "server"} \
${disableFlannel ? "--flannel-backend none --disable-network-policy" : ""}
curl -sfL https://get.k3s.io | K3S_TOKEN=${k3sToken} K3S_URL=https://${masterIp}:6443 sh -s - ${isWorker ? "agent" : "server"} \
${disableFlannel && !isWorker ? "--flannel-backend none --disable-network-policy" : ""}
`;
}