Initial release: rarelens platform skeleton (AGPL-3.0)
ci / api (push) Failing after 10s
ci / terraform (push) Failing after 11s
ci / web (push) Failing after 35s
ci / pipeline (push) Failing after 2m29s
ci / images (api) (push) Skipped
ci / images (ml) (push) Skipped
ci / images (pipeline) (push) Skipped
ci / images (web) (push) Skipped

End-to-end variant interpretation platform for rare genetic disease research:
SvelteKit UI, FastAPI + PostgreSQL API, Nextflow/Ensembl VEP pipeline,
LightGBM pathogenicity scoring with MLflow, K8s/ArgoCD/GCP infrastructure.
Public test data only; no clinical claims.
This commit is contained in:
2026-09-11 16:55:35 +01:00
commit 5463f489a3
74 changed files with 4597 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
apiVersion: apps/v1
kind: Deployment
metadata: { name: api }
spec:
replicas: 2
selector: { matchLabels: { app: api } }
template:
metadata: { labels: { app: api } }
spec:
serviceAccountName: rarelens-api
containers:
- name: api
image: rarelens/api
ports: [{ containerPort: 8000 }]
envFrom: [{ secretRef: { name: api-secrets } }]
readinessProbe: { httpGet: { path: /health, port: 8000 }, periodSeconds: 5 }
resources: { requests: { cpu: 250m, memory: 512Mi }, limits: { cpu: "1", memory: 1Gi } }
---
apiVersion: v1
kind: Service
metadata: { name: api }
spec: { selector: { app: api }, ports: [{ port: 80, targetPort: 8000 }] }
---
apiVersion: v1
kind: ServiceAccount
metadata: { name: rarelens-api }
+9
View File
@@ -0,0 +1,9 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata: { name: rarelens }
spec:
rules:
- http:
paths:
- { path: /api, pathType: Prefix, backend: { service: { name: api, port: { number: 80 } } } }
- { path: /, pathType: Prefix, backend: { service: { name: web, port: { number: 80 } } } }
+4
View File
@@ -0,0 +1,4 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: rarelens
resources: [namespace.yaml, api.yaml, web.yaml, ingress.yaml]
+3
View File
@@ -0,0 +1,3 @@
apiVersion: v1
kind: Namespace
metadata: { name: rarelens }
+20
View File
@@ -0,0 +1,20 @@
apiVersion: apps/v1
kind: Deployment
metadata: { name: web }
spec:
replicas: 2
selector: { matchLabels: { app: web } }
template:
metadata: { labels: { app: web } }
spec:
containers:
- name: web
image: rarelens/web
ports: [{ containerPort: 3000 }]
env: [{ name: PUBLIC_API_URL, value: /api }]
resources: { requests: { cpu: 100m, memory: 128Mi }, limits: { cpu: 500m, memory: 256Mi } }
---
apiVersion: v1
kind: Service
metadata: { name: web }
spec: { selector: { app: web }, ports: [{ port: 80, targetPort: 3000 }] }
+21
View File
@@ -0,0 +1,21 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources: [../../base]
images:
- { name: rarelens/api, newName: europe-west2-docker.pkg.dev/PROJECT/rarelens/api, newTag: latest }
- { name: rarelens/web, newName: europe-west2-docker.pkg.dev/PROJECT/rarelens/web, newTag: latest }
patches:
- target: { kind: ServiceAccount, name: rarelens-api }
patch: |
- op: add
path: /metadata/annotations
value: { iam.gke.io/gcp-service-account: [email protected] }
- target: { kind: Deployment, name: api }
patch: |
- op: add
path: /spec/template/spec/containers/-
value:
name: cloud-sql-proxy
image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.13.0
args: ["--structured-logs", "--port=5432", "PROJECT:europe-west2:rarelens-pg"]
securityContext: { runAsNonRoot: true }
@@ -0,0 +1,9 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources: [../../base, postgres.yaml]
images:
- { name: rarelens/api, newName: rarelens-api, newTag: dev }
- { name: rarelens/web, newName: rarelens-web, newTag: dev }
secretGenerator:
- name: api-secrets
literals: [DATABASE_URL=postgresql+asyncpg://rarelens:rarelens@postgres:5432/rarelens]
+20
View File
@@ -0,0 +1,20 @@
apiVersion: apps/v1
kind: Deployment
metadata: { name: postgres }
spec:
selector: { matchLabels: { app: postgres } }
template:
metadata: { labels: { app: postgres } }
spec:
containers:
- name: postgres
image: postgres:16-alpine
env:
- { name: POSTGRES_USER, value: rarelens }
- { name: POSTGRES_PASSWORD, value: rarelens }
- { name: POSTGRES_DB, value: rarelens }
---
apiVersion: v1
kind: Service
metadata: { name: postgres }
spec: { selector: { app: postgres }, ports: [{ port: 5432 }] }