Repository navigation
Releases
v0.3.2
CI only. The package and the command are the same as in v0.3.1.
The nightly job now leaves out the six suites that fail on a standard GitHub runner, and they run by hand on a larger machine:
- The Oracle MySQL Operator, Percona XtraDB, Percona Server, Vitess and OpenEverest suites. Their database is not ready within ten minutes.
- The OpenSearch suite. Its port-forward exits while the cluster settles.
docs/TESTING.md lists them.
v0.3.1
Two fixes to the listing, both found with the \k command of usql.
The server and the worker of authentik, whose image is ghcr.io/goauthentik/server, no longer list as SQL Server, and a lookup of them no longer tries to connect as SQL Server. SQL Server now matches only an image under an mssql path, such as mcr.microsoft.com/mssql/server.
A CloudNativePG Database with the name of its cluster no longer lists as a second row whose URL reached the cluster. A Database that opens the database of its cluster folds into the cluster's row, and one that opens another database gets a URL through its cluster with the database in the path, such as k://photos.prod/pics. A cluster's row lists the database of each of its Databases.
v0.3.0
dbfwd.ListURL(backend, scope, where...) builds the URL of a listing from a scope that a person typed and the fields that edit it, such as the namespace and the context. dbfwd list and the \k command of usql both call it, so the two read a scope in the same way. The backend owns the rules, so the root package names no Kubernetes term. For k8s, the k:// is optional, cnpg://* is k+cnpg://*, and a field that disagrees with the scope is an error that wraps ErrBadURL.
Lister gains the method ListURL, so a backend outside dbfwd that implements Lister must add it.
D18, the listing of the databases of a cluster, is now Decided.
v0.2.0
dbfwd.List lists the databases that dbfwd can reach, for the \k command of usql (D18, docs/LIST.md). It takes the same URL as Resolve with * in the host, such as k://, k://.prod, k://. or k+cnpg://., and returns one entry for each database: a cluster CR of an operator with everything it owns, a child such as a CloudNativePG Pooler or Database, or a workload with no operator whose pod spec shows a known database image or environment. Each entry holds the shortest URL that Resolve maps to the same database, and never a password. A listing reads no Secret and takes two kubectl calls.
The command gets dbfwd list, with the flags of kubectl: -A, -n NAMESPACE, --context NAME, and -w for the owner, the roles, the ready pods, the databases and where the password comes from.
v0.1.2
The type after the + in a k8s URL can now be an alias that dburl knows, so k+pg:// is postgres and k+my:// is mysql. An operator key and a type of dbfwd match first, so mariadb stays mariadb.
docs/LIST.md and D18 hold the proposed design of a listing of the databases in a cluster, for the \k command of usql. It is not built yet.
v0.1.1
On Linux and FreeBSD, kubectl port-forward and kubectl get pod --watch now stop when the process that started them dies, even by SIGKILL, so a killed usql no longer leaves them holding the local port (D17). On other systems, Close still stops them, but a killed parent leaves them running.
The error of a lost forward now says "forward lost" once.
v0.1.0
The first release of dbfwd. Resolve connects a program such as usql to a database on Kubernetes through a k8s URL from dburl. It finds the database, reads its credentials from the cluster, starts kubectl port-forward on the loopback address, and returns an ordinary URL for the local port.
It supports every tier 1 operator in docs/OPERATORS.md, and a database with no operator through its Service, StatefulSet, Deployment, Helm release or pod. It watches the pod it forwards to and reconnects on the same local port after a restart or a failover (D16). The dbfwd command runs the native client of a database, or usql, through a forward.