// The simple deployment of FerretDB proxy to be a bit more fluent with hscloud. // - kubectl -n personal-noisersup create secret generic ferretdb --from-literal=pg_password=password --from-literal=secret_key=pg_password // - kubecfg update personal/noisersup/ferretdb.jsonnet // - nix run nixpkgs#mongosh "mongodb://username:password@185.236.240.50/ferretdb?authMechanism=PLAIN" local kube = import '../../kube/kube.libsonnet'; local postgres = import '../../kube/postgres.libsonnet'; { local top = self, local cfg = self.cfg, cfg:: { name: 'ferretdb', image: 'ghcr.io/ferretdb/ferretdb:latest', namespace: 'personal-noisersup', }, ns: kube.Namespace(cfg.namespace), deployment: top.ns.Contain(kube.Deployment(cfg.name)) { spec+: { replicas: 1, template+: { spec+: { containers_: { default: kube.Container(cfg.name) { image: cfg.image, ports_: { http: { containerPort: 27017 }, }, env: [ { name: 'FERRETDB_POSTGRESQL_URL', value: 'postgres://postgres:5432/ferretdb' }, ], }, }, }, }, }, }, postgres: postgres { cfg+: { namespace: cfg.namespace, appName: 'ferretdb-postgres', database: 'ferretdb', username: 'username', password: { secretKeyRef: { name: top.cfg.name, key: 'pg_password' } }, storageClassName: 'waw-hdd-redundant-3', }, }, service: top.ns.Contain(kube.Service(cfg.name)) { target_pod:: top.deployment.spec.template, spec+: { ports: [ { name: 'http', port: 27017, targetPort: 27017, protocol: 'TCP' }, ], type: 'LoadBalancer', externalTrafficPolicy: 'Local', }, }, }