blob: 8e3788ffbb7ed052cd390c564dc1b9834d5e657d [file] [log] [blame]
noisersupdba676d2023-08-14 02:05:24 +00001// The simple deployment of FerretDB proxy to be a bit more fluent with hscloud.
2// - kubectl -n personal-noisersup create secret generic ferretdb --from-literal=pg_password=password --from-literal=secret_key=pg_password
3// - kubecfg update personal/noisersup/ferretdb.jsonnet
4// - nix run nixpkgs#mongosh "mongodb://username:password@185.236.240.50/ferretdb?authMechanism=PLAIN"
5local kube = import '../../kube/kube.libsonnet';
6local postgres = import '../../kube/postgres.libsonnet';
7
8{
9 local top = self,
10 local cfg = self.cfg,
11
12 cfg:: {
13 name: 'ferretdb',
14 image: 'ghcr.io/ferretdb/ferretdb:latest',
15 namespace: 'personal-noisersup',
16 },
17
18 ns: kube.Namespace(cfg.namespace),
19
20 deployment: top.ns.Contain(kube.Deployment(cfg.name)) {
21 spec+: {
22 replicas: 1,
23 template+: {
24 spec+: {
25 containers_: {
26 default: kube.Container(cfg.name) {
27 image: cfg.image,
28 ports_: {
29 http: { containerPort: 27017 },
30 },
31 env: [
32 { name: 'FERRETDB_POSTGRESQL_URL', value: 'postgres://postgres:5432/ferretdb' },
33 ],
34 },
35 },
36 },
37 },
38 },
39 },
40
41 postgres: postgres {
42 cfg+: {
43 namespace: cfg.namespace,
44 appName: 'ferretdb-postgres',
45 database: 'ferretdb',
46 username: 'username',
47 password: { secretKeyRef: { name: top.cfg.name, key: 'pg_password' } },
48
49 storageClassName: 'waw-hdd-redundant-3',
50 },
51 },
52
53 service: top.ns.Contain(kube.Service(cfg.name)) {
54 target_pod:: top.deployment.spec.template,
55 spec+: {
56 ports: [
57 { name: 'http', port: 27017, targetPort: 27017, protocol: 'TCP' },
58 ],
59 type: 'LoadBalancer',
60 externalTrafficPolicy: 'Local',
61 },
62 },
63}