diff --git a/.github/workflows/db.organisasjon-forvalter.yml b/.github/workflows/db.organisasjon-forvalter.yml deleted file mode 100644 index 8e853d977f..0000000000 --- a/.github/workflows/db.organisasjon-forvalter.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: db-organisasjon-forvalter - -on: - push: - paths: - - "apps/dolly-db/db.organisasjon.forvalter.yml" - - ".github/workflows/db.organisasjon-forvalter.yml" - -jobs: - workflow: - uses: ./.github/workflows/common.workflow.backend.yml - with: - working-directory: "apps/dolly-db" - nais-manifest: "db.organisasjon-forvalter.yml" - deploy-tag: "#db-organisasjon-forvalter" - sonar-enabled: false - permissions: - contents: read - id-token: write - secrets: inherit diff --git a/apps/dolly-db/db.organisasjon-forvalter.yml b/apps/dolly-db/db.organisasjon-forvalter.yml deleted file mode 100644 index dffa25b497..0000000000 --- a/apps/dolly-db/db.organisasjon-forvalter.yml +++ /dev/null @@ -1,29 +0,0 @@ -apiVersion: "nais.io/v1alpha1" -kind: "Application" -metadata: - name: "db-organisasjon-forvalter" - namespace: "dolly" - labels: - "team": "dolly" -spec: - gcp: - sqlInstances: - - type: POSTGRES_15 - tier: db-custom-1-3840 - databases: - - name: db-organisasjon-forvalter - image: "{{image}}" - liveness: - path: "/internal/health/liveness" - observability: - autoInstrumentation: - enabled: true - runtime: java - prometheus: - enabled: true - path: "/internal/prometheus" - readiness: - path: "/internal/health/readiness" - replicas: - min: 1 - max: 1 \ No newline at end of file diff --git a/apps/organisasjon-forvalter/build.gradle b/apps/organisasjon-forvalter/build.gradle index 6aad329ac3..cc5bb9ad42 100644 --- a/apps/organisasjon-forvalter/build.gradle +++ b/apps/organisasjon-forvalter/build.gradle @@ -14,6 +14,8 @@ properties { } dependencies { + implementation "com.google.cloud:spring-cloud-gcp-starter-secretmanager:$versions.gcpSecretManager" + implementation "no.nav.testnav.libs:avro-schema" implementation "no.nav.testnav.libs:data-transfer-objects" implementation "no.nav.testnav.libs:database" diff --git a/apps/organisasjon-forvalter/src/main/resources/application-local.yml b/apps/organisasjon-forvalter/src/main/resources/application-local.yml index b4b73c613d..a78e194ced 100644 --- a/apps/organisasjon-forvalter/src/main/resources/application-local.yml +++ b/apps/organisasjon-forvalter/src/main/resources/application-local.yml @@ -1,8 +1,15 @@ - spring: + cloud: + gcp: + secretmanager: + enabled: true + project-id: dolly-dev-ff83 + config: + import: "sm://" datasource: - url: jdbc:postgresql://localhost:5432/db-organisasjon-forvalter - username: ${NAV_USERNAME} + url: jdbc:postgresql://localhost:5432/local-organisasjon-forvalter + username: db-organisasjon-forvalter + password: ${sm://db-organisasjon-forvalter} consumers: generer-navn-service: diff --git a/docs/gcp_db.md b/docs/gcp_db.md index 015b1f5611..2c6d7f5816 100644 --- a/docs/gcp_db.md +++ b/docs/gcp_db.md @@ -5,25 +5,27 @@ Enkelte applikasjoner bruker en database i GCP som "lokal" database, dvs. i Spri * `organisasjon-forvalter` * `pdl-forvalter` -På grunn av begrensninger i NAIS må disse databasene tilhøre en applikasjon. Det finnes en [../apps/dolly-db](../apps/dolly-db) som deployes flere ganger for å opprette og "eie" disse databasene. +Disse er refert til under som `APP_NAME`. -Disse har derfor en noe annen konfigurasjon for kjøring lokalt, og bruker [NAIS CLI](https://doc.nais.io/operate/cli/reference/postgres/). +Applikasjonene har en noe annen konfigurasjon for kjøring lokalt, og bruker [gcloud CLI](https://doc.nais.io/operate/cli/reference/postgres/) og [cloud_sql_proxy](https://cloud.google.com/sql/docs/mysql/sql-proxy). * Du må være logget på med gcloud CLI. -* ~~Databasene må forberedes for tilgang.~~ **En gang, dette er allerede gjort.** ``` -> nais postgres prepare --all-privs +> gcloud auth login --update-adc ``` -* Du må gi din personlige bruker tilgang til databasen. **En gang.** +* Du må starte `cloud_sql_proxy` med rett `APP_NAME` (se over). **Legg merke til bruken av `local-` her.** ``` -> nais postgres grant +> cloud_sql_proxy -instances=dolly-dev-ff83:europe-north1:local-APP_NAME=tcp:5432 ``` -* Tilgang til DB gis gjennom NAIS CLI. +* Hvis du ønsker tilgang direkte til databasen gjennom en annen klient så må du hente ut passordet vha. ``` -> nais postgres proxy +> gcloud secrets versions access latest --secret=db-APP_NAME ``` -* Brukernavnet må være din NAV-ident. Du må enten: - * Sette en miljøvariabel `NAV_USERNAME` til din NAV-ident. **En gang.** - * Endre brukernavnet i den aktuelle application-local.yml fra `${NAV_USERNAME}` til ditt navn. **Hver gang. Og ikke commit'e den endringen.** -Etter at proxy'en er startet kan du da kjøre den aktuelle applikasjonen lokalt. \ No newline at end of file +Etter at proxy'en er startet kan du da kjøre den aktuelle applikasjonen lokalt. Applikasjonen henter selv passord vha. [Spring Cloud GCP](https://spring.io/projects/spring-cloud-gcp) ved oppstart. + +Hvis du ønsker tilgang direkte til databasen gjennom en annen klient som IntelliJ så må du hente ut passordet vha. +``` +> gcloud secrets versions access latest --secret=db-APP_NAME +``` +JDBC connect URL vil være `jdbc:postgresql://localhost:5432/db-APP_NAME`. \ No newline at end of file diff --git a/plugins/java/src/main/groovy/dolly-versions.gradle b/plugins/java/src/main/groovy/dolly-versions.gradle index a2656a3d4d..bd7e53dcd9 100644 --- a/plugins/java/src/main/groovy/dolly-versions.gradle +++ b/plugins/java/src/main/groovy/dolly-versions.gradle @@ -8,6 +8,8 @@ class DollyVersionCatalog { String springSession = "3.3.1" String springCloud = "2023.0.3" + String gcpSecretManager = "5.7.0" + String apacheAvro = "1.11.3" String apacheKafka = "3.7.0" String apachePoi = "5.3.0"