nada-datastream

command module
v0.0.0-...-6e82624 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 6, 2024 License: MIT Imports: 4 Imported by: 0

README

Nada Datastream

Oppsett av datastream fra en cloudsql postgres database til bigquery.

Binær utgivelse

Nedlast binærfil Vi tilbyr binær for mac og linux, mens for Windows-brukere, vennligst bruk Linux-delsystemet og den Linux-baserte binærfilen.

Forutsetninger for bruk

Det er noen steg som må utføres på forhånd for å klargjøre postgres databasen for datastream. Først må man:

  • Opprette en ny databasebruker som datastream koblingen skal bruke
  • Databaseflagget cloudsql.logical_decoding må settes på for at man skal kunne bruke replication slots i databasen.

Disse to punktene løses enklest ved å editere nais manifestet til appen som eksemplifisert under:

...
spec:
  gcp:
    sqlInstances:
    - name: myinstance
      flags:
      - name: cloudsql.logical_decoding # flagget som må settes
        value: "on" # flagget som må settes
      databases:
      - name: mydatabase
        users:
        - name: datastream # ekstra databasebruker
      diskAutoresize: true # Datastream bruker en del lagringsplass
... 

Videre må man legge til en databasemigrasjon som sørger for at den nyopprettede brukeren får tilgang til å lese de tabellene den er avhengig av for datastreamen. I eksempelet under er det gitt select tilgang for alle tabeller i public schema, men dette kan man spisse ytterligere dersom det er ønskelig.

Migrasjonen må også gi den nyopprettede brukeren REPLICATION rolle i databasen og lage en publication og replication slot.

ALTER DEFAULT PRIVILEGES IN SCHEMA PUBLIC GRANT SELECT ON TABLES TO "datastream";
GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC TO "datastream";

ALTER USER "appnavn" WITH REPLICATION;
ALTER USER "datastream" WITH REPLICATION;
CREATE PUBLICATION "ds_publication" FOR ALL TABLES;
SELECT PG_CREATE_LOGICAL_REPLICATION_SLOT('ds_replication', 'pgoutput');

Merk: både appens bruker ("appnavn") og den nye brukeren trenger å oppdateres med REPLICATION rollen i databasen over

Sett opp datastream kobling

Anbefaler at brukeren som skal kjøre oppsettet gir seg midlertidig Project Editor rolle i prosjektet. Dette gjøres i IAM under Grant Access: Role -> Basic-> Editor.

Oppsettet krever at man: - er koblet til naisdevice - har tilgang til clusteret og namespacet som appen kjører i - har kjørt gcloud auth login --update-adc

Det enkleste er at context (cluster og namespace) allerede er satt i terminalen. Det er også mulig å spesifisere dette som script-argumenter: --context og --namespace

For å sette opp datastream kjør så følgende:

./bin/nada-datastream create appnavn databasebruker

Dersom man ikke spesifiserer noe vil alle tabeller i public schema i databasen inkluderes i streamen. For å ekskludere enkelte tabeller bruk flagget --exclude-tables som tar en kommaseparert streng med tabellene man ønsker å utelate, f.eks.

./bin/nada-datastream create appnavn databasebruker --exclude-tables=tabell1,tabell2,tabell3

Tilsvarende kan du også inkludere tabeller: Bruk da flagget --include-tables.

Vi støtter kun inkludering eller eksludering av tabeller i datastream oppsettet, dersom begge flagg angis vil det være de inkluderte tabellene som gjelder og det som er angitt med --exclude-tables blir da ignorert.

Vi støtter heller ikke spesifisering av kolonner for tabellene som datastreamen gjelder for. Dette kan riktignok enkelt settes opp manuelt gjennom cloud console UIet etter at man har opprettet datastreamen. For å gjøre det gå til datastream i cloud console -> Trykk inn på streamen -> Edit -> Edit source configuration -> SELECT COLUMNS for de inkluderte tabellene.

For flagg se

./bin/nada-datastream create --help

NB! krever gcloud versjon høyere enn 412.0.0, oppdater med gcloud components update

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
pkg
k8s

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL