kubectl-pg

command module
v0.0.0-...-d70cdf1 Latest Latest
Warning

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

Go to latest
Published: Apr 25, 2024 License: MIT Imports: 1 Imported by: 0

README

Kubectl Plugin for Zalando's Postgres Operator

This plugin is a prototype developed as a part of Google Summer of Code 2019 under the Postgres Operator organization.

Installation of kubectl pg plugin

This project uses Go Modules for dependency management to build locally. Install go and enable go modules with export GO111MODULE=on. From Go >=1.13 Go modules will be enabled by default.

# Assumes you have a working KUBECONFIG
$ GO111MODULE="on"
$ GOPATH/src/github.com/zalando/postgres-operator/kubectl-pg  go mod vendor
# This generate a vendor directory with all dependencies needed by the plugin.
$ $GOPATH/src/github.com/zalando/postgres-operator/kubectl-pg  go install
# This will place the kubectl-pg binary in your $GOPATH/bin

Before using the kubectl pg plugin make sure to set KUBECONFIG env variable

Ideally KUBECONFIG is found in $HOME/.kube/config else specify the KUBECONFIG path here. export KUBECONFIG=$HOME/.kube/config

List all commands available in kubectl pg

kubectl pg --help (or) kubectl pg

Check if Postgres Operator is installed and running

kubectl pg check

Create a new cluster using manifest file

kubectl pg create -f acid-minimal-cluster.yaml

List postgres resources

kubectl pg list

List clusters across namespaces kubectl pg list all

Update existing cluster using manifest file

kubectl pg update -f acid-minimal-cluster.yaml

Delete existing cluster

Using the manifest file: kubectl pg delete -f acid-minimal-cluster.yaml

Or by specifying the cluster name: kubectl pg delete acid-minimal-cluster

Use --namespace or -n flag if your cluster is in a different namespace to where your current context is pointing to: kubectl pg delete acid-minimal-cluster -n namespace01

Adding manifest roles to an existing cluster

kubectl pg add-user USER01 -p CREATEDB,LOGIN -c acid-minimal-cluster

Privileges can only be [SUPERUSER, REPLICATION, INHERIT, LOGIN, NOLOGIN, CREATEROLE, CREATEDB, BYPASSRLS] Note: By default, a LOGIN user is created (unless NOLOGIN is specified).

Adding databases to an existing cluster

You have to specify an owner of the new database and this role must already exist in the cluster: kubectl pg add-db DB01 -o OWNER01 -c acid-minimal-cluster

Extend the volume of an existing pg cluster

kubectl pg ext-volume 2Gi -c acid-minimal-cluster

Print the version of Postgres Operator and kubectl pg plugin

kubectl pg version

Connect to the shell of a postgres pod

Connect to the master pod: kubectl pg connect -c CLUSTER -m

Connect to a random replica pod: kubectl pg connect -c CLUSTER

Connect to a certain replica pod: kubectl pg connect -c CLUSTER -r 0

Connect to a database via psql

Adding the -p flag allows you to directly connect to a given database with the psql client. With -u you specify the user. If left out the name of the current OS user is taken. -d lets you specify the database. If no database is specified, it will be the same as the user name.

Connect to app_db database on the master with role app_user: kubectl pg connect -c CLUSTER -m -p -u app_user -d app_db

Connect to the postgres database on a random replica with role postgres: kubectl pg connect -c CLUSTER -p -u postgres

Connect to a certain replica assuming name of OS user, database role and name are all the same: kubectl pg connect -c CLUSTER -r 0 -p

Access Postgres Operator logs

kubectl pg logs -o

Access Patroni logs of different database pods

Fetch logs of master: kubectl pg logs -c CLUSTER -m

Fetch logs of a random replica pod: kubectl pg logs -c CLUSTER

Fetch logs of specified replica kubectl pg logs -c CLUSTER -r 2

Development

When making changes to the plugin make sure to change the (major/patch) version of plugin in build.sh script and run ./build.sh.

Google Summer of Code 2019

GSoC Proposal

kubectl pg proposal

Weekly Reports

https://github.com/VineethReddy02/GSoC-Kubectl-Plugin-for-Postgres-Operator-tracker

Final Project Report

https://gist.github.com/VineethReddy02/159283bd368a710379eaf0f6bd60a40a

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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