-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathletsencrypt.ts
50 lines (47 loc) · 1.32 KB
/
letsencrypt.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import * as pulumi from "@pulumi/pulumi";
import * as k8s from "@pulumi/kubernetes";
import { provider } from ".";
export type LetsEncryptOptions = {
provider: k8s.Provider;
email?: string;
solvers?: Array<any>;
};
const pulumiComponentNamespace: string = "turingev:LetsEncrypt";
export class LetsEncrypt extends pulumi.ComponentResource {
public readonly issuer: k8s.apiextensions.CustomResource;
constructor(
name: string,
args: LetsEncryptOptions,
opts?: pulumi.ComponentResourceOptions,
) {
super(pulumiComponentNamespace, name, args, opts);
this.issuer = new k8s.apiextensions.CustomResource(
name,
{
apiVersion: "cert-manager.io/v1",
kind: "ClusterIssuer",
metadata: { name },
spec: {
acme: {
server: "https://acme-v02.api.letsencrypt.org/directory",
email: args.email,
privateKeySecretRef: {
name: "letsencrypt-account-key",
},
solvers: args.solvers ?? [
{
selector: {},
http01: {
ingress: {
class: "traefik",
},
},
},
],
},
},
},
{ dependsOn: args.provider, provider: provider, parent: this },
);
}
}