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.
 

GoldenGate free auf 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.

GoldenGate studio free

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…

Mesh or Hub ?

 

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:

GoldenGate free auf artifacthub.io

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:

GOldenGate Studio free login

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. 

GOldenGate Studio Free start page

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”