Thanks to containers and Kubernetes, Oracle GoldenGate can be set up quickly and conveniently for data exchange for different systems. Since around March 2025, the free GoldenGate Free has also been available for non-Oracle databases such as Postgres, mySQL and Microsoft SQL Server. Both as prepared, patched containers and as illustrative material for your own purposes also as a Kubernetes installation, i.e. helm chart.
GoldenGate Free may be used productively but is limited to database sizes of up to 20 GB. Quite typical sizes though for many Postgres, mySQL and Oracle 23ai free environments.
A description of the free license is part of the Oracle GoldenGate documentation. Updates are available in the form of new containers at container-registry.oracle.com.

Numerous Youtube videos, blogs and its own documentation offer free support to a good, albeit non-interactive, extent. The documentation for starting and using the respective containers is also available at container-registry.oracle.com and also describes further topics such as SSL encryption and the connection of any volumes required to store logs and the vital trail files full of change log information from the tapped databases.

The GoldenGate Free Container Images for data exchange and with a browser interface for monitoring, administration and configuration are joined by the GoldenGate Studio Free Container Image with a further browser-based interface for the convenient setup of various scenarios such as uni- and bidirectional sync, data reloading, data mapping etc. using so-called “recipes”. But it is also about preparing the databases for data synchronization, e.g. setting the necessary database parameters. GoldenGate Studio free currently only works with Oracle databases.
To prevent any confusion, a little additional information: The container “Oracle GoldenGate free”, which is also still located on container-registry.oracle.com, is a slightly older version (23.5 instead of 23.7 or newer) of Oracle GoldenGate free for Oracle with GoldenGate Studio free already included.
For example, if you want to exchange data between a Postgres and a mySQL database, you should download and start the containers of GoldenGate free for Postgres and GoldenGate free for mySQL. Correctly configured, the containers exchange the collected database logs with each other via WebSocket connections (based on the HTTPS protocol). One container continuously reads from the source database and one writes to the target system. However, if your intention is to synchronize two remote Postgres databases, you can either start GoldenGate free for Postgres twice, once near the source and once at the target, or you can use a single container that connects like an octopus to the Postgres databases involved. The first scenario is called a mesh installation by Oracle, the second scenario forms a hub. To take the mental game a little further: if all the containers involved are running on the same server or in the same network, you may have physically set up a hub, but logically you still have a mesh of communicating processes…

For the setup of GoldenGate (free and also full version) especially under Kubernetes there are blog descriptions of our product management as well as YAML files in a github.com repository, described by an article in fall 2024 in our blogs. Recently, for testing purposes and for your reference, some helm charts have been created for the automated setup under Kubernetes. These are also available in source code on github.com, just in a different location than the previous YAML files. And the helm charts are linked and can be found on artifacthub.io, right next to the new Oracle Database Operator 1.2 for Kubernetes:

The stored helm charts are also suitable for installing the GoldenGate full versions. However, you would have to build your own container images and specify their download URL as a parameter for the helm chart.
Instead of following the instructions on artifacthub.io, you can also register and install the helm charts directly in your environment via command line. All you need is access to your Kubernetes cluster via the kubectl command and the helm tool.
Register the repository as follows:
$ helm repo add oggfree https://ilfur.github.io/VirtualAnalyticRooms $ helm repo list NAME URL bitnami https://charts.bitnami.com/bitnami ingress-nginx https://kubernetes.github.io/ingress-nginx oggfree https://ilfur.github.io/VirtualAnalyticRooms
Then take a look at which installation routines are available in the repository. There are a few more than just Oracle GoldenGate free. They all serve as examples and you can download them from github and customize them further.
$ helm search repo oggfree NAME CHART VERSION APP VERSION DESCRIPTION oggfree/analytics-server 1.0.0 6.4.0 Oracle Analytics Server oggfree/cman 1.0.5 23.5.0.0 Oracle Connection Manager oggfree/goldengate-bigdata 2.0.0 23.4.0.0.0 Oracle GoldenGate Microservices for Distributed... oggfree/goldengate-free 2.0.0 23.5.0.24.07 Oracle GoldenGate Microservices FREE for Oracle... oggfree/goldengate-mssql 2.0.0 23.4.0.0.0 Oracle GoldenGate Microservices for MSSQL Database oggfree/goldengate-mysql 2.0.0 23.4.0.0.0 Oracle GoldenGate Microservices for MySQL Database oggfree/goldengate-mysql-free 2.0.1 23.8.0.25.04 Oracle GoldenGate FREE for mysql oggfree/goldengate-oracle 2.0.0 23.4.0.0.0 Oracle GoldenGate Microservices for Oracle Data... oggfree/goldengate-oracle-free 2.0.1 23.8.0.25.04 Oracle GoldenGate Microservices FREE for Oracle... oggfree/goldengate-postgres 2.0.0 23.4.0.0.0 Oracle GoldenGate Microservices for Postgres Da... oggfree/goldengate-postgres-free 2.0.1 23.8.0.25.04 Oracle GoldenGate Microservices FREE for Postgres oggfree/goldengate-sqlserver-free 2.0.1 23.8.0.25.04 Oracle GoldenGate FREE for sqlserver oggfree/goldengate-studio-free 2.0.0 23.7.1.25.02 Oracle GoldenGate Studio FREE oggfree/graph-server 2.0.6 24.4.0.0.0 Oracle Graph & RDF Server with UI plus Jupyter ... oggfree/jupyterhub 1.3.8 1.5.0 JupyterHub brings the power of notebooks to gro... oggfree/oml4py-notebook 1.0.0 1.0 Oracle Machine Learning 4 Python Jupyter Notebook oggfree/ords 2.0.0 latest Oracle APEX, Database Actions and numerous REST... oggfree/sqlcl-liquibase 1.0.0 21.3.0.0.0 Oracle sqlcl with liquibase integration oggfree/stream-analytics 1.0.0 19.1.0.0.6.3 Oracle GoldenGate Stream Analytics
To install GoldenGate Studio free, for example, first download the parameter file associated with the installation (also called values) and adapt it to your circumstances:
$ helm show values oggfree/goldengate-studio-free >studio.yaml
$ vi studio.yaml
### specify the name of an existing secret that contains the ogg admin username and password
ogg:
adminSecret: ogg-admin-secret
usernameKey: oggusername
passwordKey: oggpassword
## the name of an OGG deployment, mostly "local", or ogg-east, ogg-west, ...
deploymentName: local
## request sizes of some PVCs, beware that there can be many big trail files ...
storage:
configSize: 1Gi
logSize: 10Gi
trailSize: 50Gi
storageClass: rook-ceph-block
image:
pullPolicy: IfNotPresent
imageName: container-registry.oracle.com/goldengate/goldengate-studio-free:23.7.1.25.02
services:
### You can choose to create an istio virtualservice or an ingress in front
### with a virtual host name of ggate.<suffix>
external:
### set type to either ingress , virtualservice or none if You need something customized
type: ingress
### typical ingressClasses are nginx and istio
ingressClass: nginx
### ignored if type is not virtualservice
vserviceGateway: istio-system/http-istio-gateway
vhostName: ggate.141.147.33.9.nip.io
internal:
type: ClusterIP
port: 8080
You may recognize from the suggested parameters that a kubernetes secret should be created in advance, which contains the user name and password of the future GoldenGate Admin user. These two details are then flashed into the container when it is started for the first time. The secret should, but does not have to, have the name ogg-admin-secret. And it should also contain the keys oggusername and oggpassword, with corresponding values behind them. So let’s create a new namespace for the installation and store the secret and the rest of the installation in it:
$ kubectl create namespace oggfree namespace/oggfree created $ kubectl create secret generic ogg-admin-secret -n oggfree --from-literal=oggusername=oggadmin --from-literal=oggpassword=Welcome1234# secret/ogg-admin-secret created $ helm install ggstudio oggfree/goldengate-studio-free --values studio.yaml -n oggfree NAME: ggstudio LAST DEPLOYED: Wed May 14 11:54:06 2025 NAMESPACE: oggfree STATUS: deployed REVISION: 1 TEST SUITE: None
The best thing to do now is to check whether the container, storage and network configuration are correct and the logs in the container do not contain any errors, such as a password that is too simple. In my test environment, I used the oci-bv typical for the Oracle Cloud (OCI) as the StorageClass parameter instead of the default rook-ceph-block, I also initially opted for an ingress of type none and set the internal service type to LoadBalancer to avoid having to use manual port forwards. I left the port at 8080, perhaps not such a good choice for HTTPS access, but it should work.
$ kubectl get pvc -n oggfree NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE ggstudio-goldengate-studio-free-u01-pvc Bound csi-2e23b64d-ac03-465f-b448-7d15ddbdd026 50Gi RWO oci-bv <unset> 33s ggstudio-goldengate-studio-free-u02-pvc Bound csi-ad027c1d-c144-4703-a65b-873546c9220d 50Gi RWO oci-bv <unset> 33s ggstudio-goldengate-studio-free-u03-pvc Bound csi-4bf859c8-d664-47a6-babf-abc332bab6f2 50Gi RWO oci-bv <unset> 33s $ kubectl get service -n oggfree NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ggstudio-goldengate-studio-free-svc LoadBalancer 10.96.53.119 111.222.333.444 8080:32487/TCP 50m $ kubectl get pod -n oggfree NAME READY STATUS RESTARTS AGE ggstudio-goldengate-studio-free-7f799cb74f-cpwbs 1/1 Running 0 39m $ kubectl logs ggstudio-goldengate-studio-free-7f799cb74f-cpwbs -n oggfree OGG_SECURE_DEPLOYMENT=false APP_HOME=/u01/oggf APP_DATA_HOME=/u02/oggf /u02/oggf/deploymentId OGGF_DEPLOYMENT_ID=c9b30913-230b-4546-bea8-5a01078310b7 /u02/oggf/certificate /u02/oggf Generating a RSA private key .................................++++ ...++++ writing new private key to '/u01/oggf/certificate/ca-key.pem' ----- Generating RSA private key, 4096 bit long modulus (2 primes) ...........................................++++ .....................................................................++++ e is 65537 (0x010001) Signature ok subject=CN = ggstudio-goldengate-studio-free-7f799cb74f-cpwbs Getting CA Private Key /etc/nginx/cert/ogg.pem.full: OK /etc/nginx/cert/ogg.pem: OK /u02/oggf OGG_SERVERCERT=/u02/oggf/certificate/server.pem OGG_SERVERCERT_KEYFILE=/u01/oggf/certificate/server-key.pem ....... .......
As a lot of log output is generated, I have only included the first few lines. You can probably already see here that SSL certificates were generated in the container at startup, and that it later listens on the HTTPS protocol and the container-internal port 443. Certificates could also be managed by Kubernetes means, the necessary files could be included as volumes from Kubernetes Secrets. But that should be enough for a first attempt. Call the service once via its external IP address. Via HTTPS and on the external port 8080 opened by the load balancer. In my example, the URL https://111.222.333.444:8080 would have to be entered in the browser. The externalIP of the Kubernetes service of type LoadBalancer and its port. The browser warning about non-official certificates can also be ignored for the time being:

If the user name and password have been entered correctly (in our example: oggadmin and Welcome1234# as stored in the Kubernetes Secret), the start page should now appear and you are finished with the basic installation.

If you want to make adjustments and test the installation with other specifications, you do not necessarily have to edit the Kubernetes resources such as Deployment, Pod, Services directly. You can typically undo the installation with
$ helm uninstall ggstudio -n oggfree
Then adjust the parameters in the studio.yaml file or probably delete the Kubernetes secret and create a new one, and finally reinstall it.
Just like GoldenGate Studio free, the other GoldenGate containers can also be set up and then configured via browser or REST API. Database connections can normally be set up to databases inside and outside the Kubernetes cluster. The GoldenGate containers can also be linked to each other via so-called distribution paths. Either the internal cluster IP names or the external names and IP addresses can be used for this. However, the respective self-generated certificates must be downloaded and stored, or standardized official certificates of an upstream ingress must be used.
Once again – have fun testing and trying it out!
Some links and further information compiled for you:
Official announcement of GoldenGate Free for Postgres, mySQL and SQL Server
GoldenGate free documentation
GoldenGate Youtube channel
The Oracle data integration and GoldenGate Blog
GoldenGate free Containers on container-registry.oracle.com
Installing GoldenGate full version (and also free) on Kubernetes – without helm chart but with Grafana monitoring
Github Repository with helm chart sources for GoldenGate, ORDS, Connection Manager, Graph Server and more components
The searchable Kubernetes package archive “artifacthub.io”