Skip to content

Latest commit

 

History

History

README.md

necronizer's cloud cloudnative pg module

OpenTofu Module to deploy Cloudnative PG PostgreSQL Database on the Kubernetes Cluster

Required Modules to deploy Cloudnative PG PostgreSQL Database:

  1. Helm
  2. Cluster Issuer
  3. Garage
  4. Observability
  5. OpenBao

Providers

Name Version
kubernetes 2.38.0

Providers

Name Version
kubernetes n/a

Resources

Name Type
kubernetes_config_map.nginx_conf resource
kubernetes_config_map.pgadmin_servers_configuration resource
kubernetes_deployment.pgadmin resource
kubernetes_ingress_v1.api_ingress resource
kubernetes_manifest.barman_object_store resource
kubernetes_manifest.client_certificate_authority resource
kubernetes_manifest.client_certificates resource
kubernetes_manifest.client_database_credentials_sync resource
kubernetes_manifest.client_issuer resource
kubernetes_manifest.client_keycloak_certificate resource
kubernetes_manifest.client_streaming_replica_certificate resource
kubernetes_manifest.cluster resource
kubernetes_manifest.cluster_image_catalog resource
kubernetes_manifest.databases resource
kubernetes_manifest.garage_certificate_authority_sync resource
kubernetes_manifest.garage_configuration_sync resource
kubernetes_manifest.ingress_certificate resource
kubernetes_manifest.keycloak_database resource
kubernetes_manifest.keycloak_database_credentials_sync resource
kubernetes_manifest.middleware_buffering resource
kubernetes_manifest.middleware_rewrite resource
kubernetes_manifest.password_generator resource
kubernetes_manifest.pgadmin_credentials_sync resource
kubernetes_manifest.pgadmin_internal_certificate resource
kubernetes_manifest.public_issuer resource
kubernetes_manifest.push_client_certificates resource
kubernetes_manifest.push_client_database_credentials resource
kubernetes_manifest.push_client_keycloak_certificate resource
kubernetes_manifest.push_keycloak_database_credentials resource
kubernetes_manifest.push_pgadmin_credentials resource
kubernetes_manifest.push_server_certificate_authority resource
kubernetes_manifest.server_certificate resource
kubernetes_manifest.server_certificate_authority resource
kubernetes_manifest.server_issuer resource
kubernetes_manifest.transport resource
kubernetes_namespace.namespace resource
kubernetes_network_policy.cnpg_network_policy resource
kubernetes_pod_disruption_budget_v1.cnpg_pdb resource
kubernetes_secret.cloudflare_token resource
kubernetes_service.pgadmin4 resource

Inputs

Name Description Type Default Required
acme_server URL for the ACME Server to be used, defaults to production URL for LetsEncrypt string `"https://acme-v02
app_name App name for deploying PostgreSQL Database string "postgres" no
backup_bucket_name Name of the bucket for storing PITR Backups in Garage string n/a yes
client_certificate_authority_name Name of the Certificate Authority to be used with PostgreSQL Client string "postgresql-client-certificate-authority" no
client_issuer_name Name of the Issuer to be used with PostgreSQL Client string "postgresql-client-issuer" no
client_streaming_replica_certificate_name Name of the Certificate to be used with PostgreSQL Streaming Replica Client string "postgresql-streaming-replica-client-certificate" no
clients Object List of clients who need databases and users to be configured for
list(object({
namespace = string
user = string
database = string
derRequired = bool
privateKeyEncoding = string
}))
[] no
cloudflare_email Email for generating Ingress Certificates to be associated with PGAdmin string n/a yes
cluster_issuer_name Name for the Cluster Issuer to be used to generate internal self signed certificates string n/a yes
cloudflare_token Token for generating Ingress Certificates to be associated with PGAdmin string n/a yes
cluster_issuer_name Name for the Cluster Issuer to be used to generate internal self signed certificates string n/a yes
cluster_name Name of the PostgreSQL Database Cluster to be created string "postgresql-cluster" no
cluster_postgresql_version Version of PostgreSQL Database to use and deploy number 17 no
cluster_secret_store_name Name of the cluster secret store to be used for pulling and pushing secrets to OpenBao string n/a yes
cluster_size Number of pods to deploy for the PostgreSQL Cluster number 2 no
country_name Country name for deploying PostgreSQL Database string "India" no
domain Domain for which Ingress Certificate is to be generated for string n/a yes
garage_certificate_authority Name of the Certificate Authority associated with the Garage Storage Solution string n/a yes
garage_configuration Garage Configuration for storing PITR Backups string n/a yes
garage_namespace Namespace for the Garage Deployment for storing PITR Backups string n/a yes
host_name Host name for which Ingress Certificate is to be generated for string "sql" no
image Docker image to be used for deployment of PGAdmin string "pgadmin4" no
ingress_certificate_name Name of the Ingress Certificate to be associated with PGAdmin string "pgadmin-ingress-certificate" no
kubernetes_api_ip IP Address for the Kubernetes API string n/a yes
kubernetes_api_port Port for the Kubernetes API number n/a yes
kubernetes_api_protocol Protocol for the Kubernetes API string n/a yes
namespace Namespace to be used for deploying PostgreSQL Database string "postgres" no
observability_namespace Namespace where all components for observability are deployed string n/a yes
organization_name Organization name for deploying PostgreSQL Database string "cloud" no
proxy_image Docker image to be used for deployment of PGAdmin NGINX Proxy for TLS string "nginx" no
proxy_repository Repository to be used for deployment of PGAdmin NGINX Proxy for TLS string "docker.io/library" no
proxy_tag Docker tag to be used for deployment of PGAdmin NGINX Proxy for TLS string "1.29.0" no
repository Repository to be used for deployment of PGAdmin string "docker.io/dpage" no
server_certificate_authority_name Name of the Certificate Authority to be used with PostgreSQL Server string "postgresql-server-certificate-authority" no
server_certificate_name Name of the Certificate to be used with PostgreSQL Server string "postgresql-server-certificate" no
server_issuer_name Name of the Issuer to be used with PostgreSQL Server string "postgresql-server-issuer" no
tag Docker tag to be used for deployment of PGAdmin string "9.7.0" no

Outputs

Name Description
cluster_name Name of the CNPG PostgreSQL Cluster
namespace Namespace where the PostgreSQL Database is deployed in
server-certificate-authority Certificate Authority being used with PostgreSQL Database