Giter Site home page Giter Site logo

meong1234 / cloudnative-pg-timescaledb-postgis-containers Goto Github PK

View Code? Open in Web Editor NEW

This project forked from imusmanmalik/cloudnative-pg-timescaledb-postgis-containers

1.0 0.0 0.0 314 KB

Operand images for CloudNativePG containing PostgreSQL with TimescaleDB and PostGIS

License: Apache License 2.0

Shell 33.73% Dockerfile 66.27%

cloudnative-pg-timescaledb-postgis-containers's Introduction

cloudnative-pg-timescaledb-postgis-containers

Operand images for CloudNativePG containing PostgreSQL with TimescaleDB and PostGIS

Immutable Application Containers for all available PostgreSQL versions (12 to 15) + TimescaleDB + PostGIS to be used as operands with the CloudNativePG operator for Kubernetes.

These images are built on top of the PostGIS image (Debian version), by adding the following software:

  • TimescaleDB
  • Barman Cloud
  • PGAudit

Barman Cloud is distributed by EnterpriseDB under the GNU GPL 3 License.

PGAudit is distributed under the PostgreSQL License.

Images are available via the GitHub Container Registry.

How to use them

The following example shows how you can easily create a new PostgreSQL 14 cluster with TimescaleDB 2.10 and PostGIS 3.3 in it. All you have to do is set the imageName accordingly. Please look at the registry for a list of available images and select the one you need.

Create a YAML manifest. For example, you can put the YAML below into a file named timescaledb-postgis.yaml (any name is fine). (Please refer to CloudNativePG for details on the API):

apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: cluster-example
spec:
  instances: 1
  imageName: ghcr.io/imusmanmalik/timescaledb-postgis:14-3.3
  bootstrap:
    initdb:
      postInitTemplateSQL:
        - CREATE EXTENSION timescaledb;
        - CREATE EXTENSION postgis;
        - CREATE EXTENSION postgis_topology;
        - CREATE EXTENSION fuzzystrmatch;
        - CREATE EXTENSION postgis_tiger_geocoder;
  postgresql:
    shared_preload_libraries:
      - timescaledb
  storage:
    size: 1Gi

Then run kubectl apply -f timescaledb-postgis.yaml.

When the cluster is up, run the following command to verify the version of PostGIS that is available in the system, by connecting to the app database:

kubectl exec -ti cluster-example-1 -- psql app
Defaulted container "postgres" out of: postgres, bootstrap-controller (init)
psql (14.7 (Debian 14.7-1.pgdg110+1))
Type "help" for help.

app=# SELECT * FROM pg_available_extensions WHERE name ~ '^postgis' ORDER BY 1;
           name           | default_version | installed_version |                          comment

--------------------------+-----------------+-------------------+----------------------------------------------------
--------
 postgis                  | 3.3.2           | 3.3.2             | PostGIS geometry and geography spatial types and fu
nctions
 postgis-3                | 3.3.2           |                   | PostGIS geometry and geography spatial types and fu
nctions
 postgis_raster           | 3.3.2           |                   | PostGIS raster types and functions
 postgis_raster-3         | 3.3.2           |                   | PostGIS raster types and functions
 postgis_sfcgal           | 3.3.2           |                   | PostGIS SFCGAL functions
 postgis_sfcgal-3         | 3.3.2           |                   | PostGIS SFCGAL functions
 postgis_tiger_geocoder   | 3.3.2           | 3.3.2             | PostGIS tiger geocoder and reverse geocoder
 postgis_tiger_geocoder-3 | 3.3.2           |                   | PostGIS tiger geocoder and reverse geocoder
 postgis_topology         | 3.3.2           | 3.3.2             | PostGIS topology spatial types and functions
 postgis_topology-3       | 3.3.2           |                   | PostGIS topology spatial types and functions
(10 rows)

app=# SELECT * FROM pg_available_extensions WHERE name ~ '^timescaledb' ORDER BY 1;
        name         | default_version | installed_version |                                        comment

---------------------+-----------------+-------------------+---------------------------------------------------------
------------------------------
 timescaledb         | 2.10.0          | 2.10.0            | Enables scalable inserts and complex queries for time-se
ries data
 timescaledb_toolkit | 1.14.0          |                   | Library of analytical hyperfunctions, time-series pipeli
ning, and other SQL utilities
(2 rows)

The following command shows the extensions installed in the app database, thanks to the postInitTemplateSQL section in the bootstrap which runs the selected CREATE EXTENSION commands in the template1 database, which is inherited by the application database - called app and created by default by CloudNativePG.

app=# \dx
                                           List of installed extensions
          Name          | Version |   Schema   |                            Description
------------------------+---------+------------+-------------------------------------------------------------------
 fuzzystrmatch          | 1.1     | public     | determine similarities and distance between strings
 plpgsql                | 1.0     | pg_catalog | PL/pgSQL procedural language
 postgis                | 3.3.2   | public     | PostGIS geometry and geography spatial types and functions
 postgis_tiger_geocoder | 3.3.2   | tiger      | PostGIS tiger geocoder and reverse geocoder
 postgis_topology       | 3.3.2   | topology   | PostGIS topology spatial types and functions
 timescaledb            | 2.10.0  | public     | Enables scalable inserts and complex queries for time-series data
(6 rows)

You can now enjoy TimescaleDB and PostGIS!

License and copyright

This software is available under Apache License 2.0.

cloudnative-pg-timescaledb-postgis-containers's People

Contributors

imusmanmalik avatar renovate[bot] avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.