Skip to content

Commit fb37b94

Browse files
authored
Merge pull request #343
development
2 parents fc1575b + 13cba96 commit fb37b94

File tree

18 files changed

+82
-118
lines changed

18 files changed

+82
-118
lines changed

flux-operator/index.ts

+1-63
Original file line numberDiff line numberDiff line change
@@ -66,74 +66,12 @@ const operatorClusterRoleBinding = new kubernetes.rbac.v1.ClusterRoleBinding(`op
6666
apiGroup: "rbac.authorization.k8s.io",
6767
},
6868
});
69-
const operatorDeployment = new kubernetes.apps.v1.Deployment(`pulumi-kubernetes-operator-${ns}`, {
70-
metadata: {
71-
"namespace": ns,
72-
},
73-
spec: {
74-
replicas: 1,
75-
selector: {
76-
matchLabels: {
77-
name: "pulumi-kubernetes-operator",
78-
},
79-
},
80-
template: {
81-
metadata: {
82-
labels: {
83-
name: "pulumi-kubernetes-operator",
84-
},
85-
},
86-
spec: {
87-
serviceAccountName: operatorServiceAccount.metadata.name,
88-
containers: [{
89-
name: "pulumi-kubernetes-operator",
90-
image: image,
91-
args: ["--zap-level=error", "--zap-time-encoding=iso8601"],
92-
imagePullPolicy: "Always",
93-
env: [
94-
{
95-
name: "WATCH_NAMESPACE",
96-
valueFrom: {
97-
fieldRef: {
98-
fieldPath: "metadata.namespace",
99-
},
100-
},
101-
},
102-
{
103-
name: "POD_NAME",
104-
valueFrom: {
105-
fieldRef: {
106-
fieldPath: "metadata.name",
107-
},
108-
},
109-
},
110-
{
111-
name: "OPERATOR_NAME",
112-
value: "pulumi-kubernetes-operator",
113-
},
114-
{
115-
name: "GRACEFUL_SHUTDOWN_TIMEOUT_DURATION",
116-
value: "5m",
117-
},
118-
{
119-
name: "MAX_CONCURRENT_RECONCILES",
120-
value: "10",
121-
},
12269

12370

124-
],
125-
}],
126-
// Should be same or larger than GRACEFUL_SHUTDOWN_TIMEOUT_DURATION
127-
terminationGracePeriodSeconds: 300,
128-
},
129-
},
130-
},
131-
}, deploymentOptions);
132-
13371
// Create the API token as a Kubernetes Secret.
13472
const accessToken = new Secret("operator-accesstoken", {
13573
metadata: {
136-
name: "flux-secret",
74+
name: "pulumi-operator-secret",
13775
namespace: ns
13876
},
13977
stringData: {accessToken: pulumiAccessToken},

l0/components/GitlabRunner.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ export function createGitlabRunner(namespace: Namespace) {
1111
const serviceAccount = createServiceAccount(namespace)
1212
const role = createRole(namespace)
1313
const roleBinding = createRoleBinding(namespace, role, serviceAccount)
14-
return new k8s.helm.v3.Chart("gitlab-runner", {
14+
return new k8s.helm.v4.Chart("gitlab-runner", {
1515
chart: "gitlab-runner",
1616
namespace: namespace.metadata.name,
17-
fetchOpts: {
17+
repositoryOpts: {
1818
repo: "https://charts.gitlab.io/"
1919
},
2020
values: {

l0/components/addons.ts

+15-15
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import {Namespace} from "@pulumi/kubernetes/core/v1";
55
import versions from "../versions";
66

77
export function installCilium(opts: CustomResourceOptions) {
8-
return new helm.v3.Chart("cilium", {
9-
chart: "cilium",
10-
version: "1.15.6",
8+
return new helm.v4.Chart("cilium", {
9+
chart: versions.cilium.depName,
10+
version: versions.cilium.version,
1111
namespace: "kube-system",
12-
fetchOpts: {
13-
repo: "https://helm.cilium.io/",
12+
repositoryOpts: {
13+
repo: versions.cilium.registryUrl,
1414
},
1515
}, opts)
1616
}
@@ -19,10 +19,10 @@ export function installCilium(opts: CustomResourceOptions) {
1919

2020
export function installCertManager(opts: CustomResourceOptions) {
2121
//TODO: Switch to Helm Release, to enable Hook Support
22-
return new helm.v3.Chart("cert-manager", {
22+
return new helm.v4.Chart("cert-manager", {
2323
chart: versions.certManager.depName,
2424
version: versions.certManager.version,
25-
fetchOpts: {
25+
repositoryOpts: {
2626
repo: versions.certManager.registryUrl,
2727
},
2828
namespace: "kube-system",
@@ -39,10 +39,10 @@ export function installExternalSecretsOperator(opts: CustomResourceOptions) {
3939
name: "external-secrets"
4040
}
4141
}, opts)
42-
return new helm.v3.Chart("external-secrets", {
42+
return new helm.v4.Chart("external-secrets", {
4343
chart: versions.externalSecrets.depName ,
4444
version: versions.externalSecrets.version,
45-
fetchOpts: {
45+
repositoryOpts: {
4646
repo: versions.externalSecrets.registryUrl,
4747
},
4848
namespace: ns.metadata.name,
@@ -59,10 +59,10 @@ export function installIstio(opts: CustomResourceOptions) {
5959
name: "istio-system"
6060
}
6161
}, opts)
62-
new helm.v3.Chart("istio-base", {
62+
new helm.v4.Chart("istio-base", {
6363
chart: versions.istioBase.depName,
6464
version: versions.istioBase.version,
65-
fetchOpts: {
65+
repositoryOpts: {
6666
repo: versions.istioBase.registryUrl,
6767
},
6868
namespace: ns.metadata.name,
@@ -71,10 +71,10 @@ export function installIstio(opts: CustomResourceOptions) {
7171
},
7272
}, opts);
7373

74-
return new helm.v3.Chart("istiod", {
74+
return new helm.v4.Chart("istiod", {
7575
chart: versions.istioD.depName,
7676
version: versions.istioD.version,
77-
fetchOpts: {
77+
repositoryOpts: {
7878
repo: versions.istioD.registryUrl,
7979
},
8080
namespace: ns.metadata.name,
@@ -123,11 +123,11 @@ export function installCSIDriver(token: Input<string>, opts: CustomResourceOptio
123123
}
124124
},opts)
125125

126-
return new helm.v3.Chart("hcloud-csi", {
126+
return new helm.v4.Chart("hcloud-csi", {
127127
chart: versions.hcloudCSI.depName,
128128
namespace: "kube-system",
129129
version: versions.hcloudCSI.version,
130-
fetchOpts: {
130+
repositoryOpts: {
131131
repo: versions.hcloudCSI.registryUrl
132132
},
133133
},opts)

l0/components/flux/chart/index.ts

-14
This file was deleted.

l0/components/juicefs.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const ns = new k8s.core.v1.Namespace(ident, {
1010
metadata: { name: ident },
1111
})
1212

13-
const redis = new k8s.helm.v3.Release("redis", {
13+
const redis = new k8s.helm.v4.Release("redis", {
1414
namespace: ns.metadata.name,
1515
name: "redis",
1616
chart: "redis",
@@ -47,7 +47,7 @@ const minioSecret = {
4747
}
4848

4949
const juiceStorageClassName = "juice"
50-
const juicefs = new k8s.helm.v3.Release("juicefs-driver", {
50+
const juicefs = new k8s.helm.v4.Release("juicefs-driver", {
5151
namespace: ns.metadata.name,
5252
chart: versions.juiceCsiDriver.depName,
5353
version: versions.juiceCsiDriver.version,
@@ -79,7 +79,7 @@ const storage = k8s.storage.v1.StorageClass.get(
7979

8080
export const juicefsStorage = storage.metadata.name
8181

82-
new k8s.helm.v3.Release("juicefs-gateway", {
82+
new k8s.helm.v4.Release("juicefs-gateway", {
8383
namespace: ns.metadata.name,
8484
chart: "juicefs-s3-gateway",
8585
version: "0.9.0",
@@ -95,7 +95,7 @@ new k8s.helm.v3.Release("juicefs-gateway", {
9595
},
9696
})
9797

98-
new k8s.helm.v3.Release("juicefs-volume-hook", {
98+
new k8s.helm.v4.Release("juicefs-volume-hook", {
9999
namespace: ns.metadata.name,
100100
chart: "juicefs-volume-hook",
101101
version: "0.2.4",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import {CustomResourceOptions, Input} from "@pulumi/pulumi";
2+
import {helm} from "@pulumi/kubernetes";
3+
import versions from "../../../versions";
4+
import {Namespace} from "@pulumi/kubernetes/core/v1";
5+
6+
export function installPulumiOperator(pulumiAccessToken: Input<string>, namespace: Namespace, opts: CustomResourceOptions) {
7+
//TODO: Switch to Helm Release, to enable Hook Support
8+
return new helm.v4.Chart("pulumi-operator", {
9+
chart: versions.pulumiOperator.registryUrl!!,
10+
namespace: namespace.metadata.name,
11+
version: versions.pulumiOperator.version,
12+
values: {
13+
image: {
14+
tag: "2.0.0-beta.3"
15+
}
16+
}
17+
}, opts);
18+
}

l0/components/velero.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const ns = new k8s.core.v1.Namespace(ident, {
88
metadata: { name: ident },
99
})
1010

11-
new k8s.helm.v3.Release("velero", {
11+
new k8s.helm.v4.Release("velero", {
1212
namespace: ns.metadata.name,
1313
name: "velero",
1414
chart: "velero",

l0/create/Hetzner.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
import {Namespace} from "@pulumi/kubernetes/core/v1";
1515
import {Provider} from "@pulumi/kubernetes";
1616
import {Input} from "@pulumi/pulumi";
17+
import {installPulumiOperator} from "../components/pulumi-operator/chart";
1718

1819

1920
export function createHetznerK3S(config: pulumi.Config, clusterName: string, mail: Input<string>) {
@@ -46,13 +47,18 @@ export function createHetznerK3S(config: pulumi.Config, clusterName: string, mai
4647
const certManager = installCertManager({provider:kubernetesProvider})
4748
installClusterIssuer(mail!!,{provider: kubernetesProvider, dependsOn: [certManager]})
4849
installIstio({provider: kubernetesProvider})
50+
4951
const externalSecrets = installExternalSecretsOperator({provider: kubernetesProvider})
50-
new Namespace("flux-system", {
52+
53+
//const pulumiAccessToken = config.getSecret("pulumiAccessToken")
54+
const pulumiOperatorNamespace = new Namespace("pulumi-kubernetes-operator", {
5155
metadata: {
52-
name: "flux-system"
56+
name: "pulumi-kubernetes-operator"
5357
},
5458
},
5559
{provider: kubernetesProvider}
5660
)
61+
// const pulumiOperator = installPulumiOperator(pulumiAccessToken!!, pulumiOperatorNamespace, {provider: kubernetesProvider})
62+
5763
return {kubeconfig: kubeconfig, cluster: pulumi.output(cluster)}
5864
}

l0/versions.ts

+7
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,13 @@ export const versions: Record<string, VersionEntry> = {
5858
versioning: "semver-coerced",
5959
registryUrl: "https://charts.external-secrets.io"
6060
},
61+
pulumiOperator: {
62+
version: "0.8.1",
63+
depName: "pulumi-kubernetes-operator",
64+
datasource: "helm",
65+
versioning: "semver-coerced",
66+
registryUrl: "oci://ghcr.io/pulumi/helm-charts/pulumi-kubernetes-operator"
67+
},
6168

6269
};
6370

l1/components/etcd/chart/Etcd.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import {Namespace, Secret} from "@pulumi/kubernetes/core/v1";
33

44

55
export function createEtcd(namespace: Namespace, secret: Secret) {
6-
return new k8s.helm.v3.Chart("etcd", {
6+
return new k8s.helm.v4.Chart("etcd", {
77
chart: "etcd",
88
namespace: namespace.metadata.name,
9-
fetchOpts: {
9+
repositoryOpts: {
1010
repo: "https://charts.bitnami.com/bitnami"
1111
},
1212
values: {

l1/components/kafka/chart/Kafka.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import {Namespace, Secret} from "@pulumi/kubernetes/core/v1";
33

44

55
export function createKafka(namespace: Namespace, secret: Secret) {
6-
return new k8s.helm.v3.Chart("kafka", {
6+
return new k8s.helm.v4.Chart("kafka", {
77
chart: "kafka",
88
namespace: namespace.metadata.name,
9-
fetchOpts: {
9+
repositoryOpts: {
1010
repo: "https://charts.bitnami.com/bitnami"
1111
},
1212
values: {

l2/Pulumi.hetzner.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,7 @@ config:
1717
secure: AAABAD/h/5wcP3a2K4aZY3e8zhvSFxpvP4aYzkV3iPl2UE4qauHXV6fMndab2TzKyjoqWOYUAGJWjwW4xRNK0Q==
1818
l2:s3-secret:
1919
secure: AAABAOyJpJFwRpQnQVyFz3S7Pgf41EmOOts3Fzh4QfOMDL+3XY3AHeYjyyIr15NCCTsN879eOJDYgbKl/sWiFg==
20+
l2:yubi-client-secret:
21+
secure: AAABANxQrX2UjUlkvn7qqFyp5PAg6Lxt1kTtJ0Mh47+cIsUua3yZ/B6LJSHFwN3R82W3yBB4glJcjjKk
22+
l2:yubi-client-id:
23+
secure: AAABAGQXUV3oPcgNQ71AZNLWw4IazST0atdQeFK+xr1SpDkfMi4=

l2/index.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,15 @@ import * as postgresql from "@pulumi/postgresql";
44
import {Provider, Role} from "@pulumi/postgresql";
55
import {RandomPassword} from "@pulumi/random";
66
import {Config, getStack, interpolate, StackReference} from "@pulumi/pulumi";
7-
import {createBackupSecret, createSecretWrapper, createUmamiSecret} from "./secrets";
7+
import {createBackupSecret, createUmamiSecret} from "./secrets";
88
import {ConfigMap} from "@pulumi/kubernetes/core/v1";
99
import createBackupCronjob from "./CronJob";
1010
import {createVaultwardenManual} from "./providers/Manual/Vaultwarden";
11-
import {createPaperless} from "./providers/Manual/paperless/Paperless";
1211
import {createDirectus} from "./create/directus";
1312
import * as aws from "@pulumi/aws"
1413
import {createSecretStore} from "./secretstore";
1514
import * as k8s from "@pulumi/kubernetes"
1615
import {createKubevoyage} from "./create/kubevoyage";
17-
import {createPlane} from "./create/plane";
1816

1917
const config = new Config();
2018
const stack = getStack();
@@ -120,10 +118,13 @@ export const umamiSecret = {
120118
}
121119
createUmami("manual", namespaceUmami, createUmamiSecret(namespaceUmami, umamiSecret))
122120

123-
121+
const yubiClientSecret = config.getSecret("yubi-client-secret")
122+
const yubiClientId = config.getSecret("yubi-client-id")
124123
const vaultwardenCredentials = createDBCredentials("vaultwarden")
125124
export const vaultwardenSecret = {
126-
"database-url": interpolate`postgresql://${vaultwardenCredentials.user}:${vaultwardenCredentials.password}@${postgresUrl}:5432/${vaultwardenCredentials.db}`
125+
"database-url": interpolate`postgresql://${vaultwardenCredentials.user}:${vaultwardenCredentials.password}@${postgresUrl}:5432/${vaultwardenCredentials.db}`,
126+
"yubico-client-secret": interpolate`${yubiClientSecret}`,
127+
"yubico-client-id":interpolate`${yubiClientId}`
127128
}
128129
const vaultwardenNamespace = createNamespace("vaultwarden")
129130
const configMap = new ConfigMap("vaultwarden", {

l2/providers/Charts/Directus.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import {dbPassword, dbRootPassword} from "../../../util/env";
88

99
export function createDirectusHelmChart(namespace: Namespace, secret: Secret, config: ConfigMap) {
1010

11-
return new k8s.helm.v3.Chart("directus-release", {
11+
return new k8s.helm.v4.Chart("directus-release", {
1212
chart: "directus",
1313
namespace: namespace.metadata.name,
14-
fetchOpts: {
14+
repositoryOpts: {
1515
repo: "https://directus-community.github.io/helm-chart",
1616
},
1717
values: {

l2/providers/Charts/Kubevoyage.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ export type KubevoyageConfig = {
1515

1616
export function createKubevoyageHelmChart(config: KubevoyageConfig) {
1717

18-
return new k8s.helm.v3.Chart("kubevoyage", {
18+
return new k8s.helm.v4.Chart("kubevoyage", {
1919
chart: "kubevoyage",
2020
version: "0.7.0",
2121
namespace: "default",
22-
fetchOpts: {
22+
repositoryOpts: {
2323
repo: "https://b-urb.github.io/KubeVoyage/",
2424
},
2525
values: {

0 commit comments

Comments
 (0)