Releases: ninech/nctl
Release list
v1.18.2
Changelog
This release contains various fixes for nctl.
What's Changed
- fix: return non-zero exit code if project is not found by @rnestler in #417
- detect no-op updates and return error instead of silent success by @SaadAssaf in #418
- update brew instructions by @thirdeyenick in #419
- fix: pass existing git auth secret to validator before constructing it by @thirdeyenick in #420
- build(deps): bump crate-ci/typos from 1.47.0 to 1.48.0 by @dependabot[bot] in #421
- build(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #422
- build(deps): bump github.com/int128/kubelogin from 1.36.1 to 1.36.2 by @dependabot[bot] in #424
- build(deps): bump k8s.io/client-go from 0.36.1 to 0.36.2 by @dependabot[bot] in #426
- fix: reject -f flag combined with a resource kind on create by @SaadAssaf in #430
Full Changelog: v1.18.1...v1.18.2
v1.18.1
Changelog
This release contains various fixes for nctl.
What's Changed
- enable docker client auto-negotiation by @thirdeyenick in #415
- fix:
nctllogin suggestion text by @thirdeyenick in #401 - fix: skip authentication for non-interactive commands by @thde in #402
- fix(exec): avoid panic when redirecting application exec output by @thde in #404
- fix(update): support unpausing applications with --no-pause by @thirdeyenick in #405
- change the help text for default buildpack stack by @thirdeyenick in #406
- fix(application): set default replicas on create, allow unsetting on update by @thirdeyenick in #407
- build(deps): bump crate-ci/typos from 1.46.0 to 1.47.0 by @dependabot[bot] in #409
- build(deps): bump k8s.io/client-go from 0.36.0 to 0.36.1 by @dependabot[bot] in #410
- build(deps): bump k8s.io/kubectl from 0.36.0 to 0.36.1 by @dependabot[bot] in #411
Full Changelog: v1.18.0...v1.18.1
v1.18.0
Changelog
nctl exec for On-Demand Services
Adds nctl exec sub-commands for connecting directly to on-demand services: PostgreSQL instances and databases, MySQL instances and databases, and KeyValueStore. Using their native CLI clients.
❯ nctl exec postgresdatabase test
psql (18.3, server 17.9 (Ubuntu 17.9-1.pgdg24.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off, ALPN: postgresql)
Type "help" for help.
05571f2_e4416af=>
The following commands have been added:
nctl exec postgres <name>connects to a Postgres instance viapsqlnctl exec postgresdatabase <name>connects to a PostgresDatabase viapsqlnctl exec mysql <name>connects to a MySQL instance viamysqlnctl exec mysqldatabase <name>connects to a MySQLDatabase viamysqlnctl exec keyvaluestore <name>connects to a KeyValueStore viaredis-cli
Access Management
For instance-level resources (Postgres, MySQL, KeyValueStore), the command detects the caller's public IP via ip.nine.ch, checks whether it is already in the allowed CIDR list, and if not prompts the user for confirmation before adding it.
The resource is then patched and connectivity is awaited before launching the CLI.
Import from stdin
The command also supports importing using stdin like so:
mysqldump -h source.example.com -u user -ppass mydb | nctl exec mysqldatabase mydb
pg_dump -h source.example.com -U user mydb | nctl exec postgresdatabase mydbFollowing Logs
Previously, following logs for older apps could fail or be very slow. With the default 30-day window, apps with a lot of logs could force Loki to establish a live tail over a large historical range. This puts pressure on queriers and query frontends.
Now, we first fetch the requested backlog with the range query API, then start the WebSocket tail from the end of that range.
What's Changed
- feat(exec): add exec support for on-demand services by @thde in #369
- feat: avoid historical Loki live-tail queries by @pawelkuc in #397
- fix: use maps instead of golang.org/x/exp/maps by @SaadAssaf in #399
- build(deps): bump github.com/int128/kubelogin from 1.36.0 to 1.36.1 by @dependabot[bot] in #394
- build(deps): bump github.com/mattn/go-isatty from 0.0.20 to 0.0.22 by @dependabot[bot] in #393
- build(deps): bump crate-ci/typos from 1.45.0 to 1.46.0 by @dependabot[bot] in #391
- build(deps): bump k8s.io/kubectl from 0.35.2 to 0.36.0 by @dependabot[bot] in #395
Full Changelog: v1.17.1...v1.18.0
v1.17.1
v1.17.0
What's Changed
- fix: rebuild on language change by @thirdeyenick in #373
- refactor: PostgresDatabase Collation Hint by @sislr in #374
- build(deps): bump docker/login-action from 3 to 4 by @dependabot[bot] in #375
- build(deps): bump crate-ci/typos from 1.44.0 to 1.45.0 by @dependabot[bot] in #376
- build(deps): bump golang.org/x/oauth2 from 0.35.0 to 0.36.0 by @dependabot[bot] in #378
- build(deps): bump k8s.io/api from 0.35.2 to 0.35.3 by @dependabot[bot] in #380
- build(deps): bump k8s.io/client-go from 0.35.2 to 0.35.3 by @dependabot[bot] in #379
- build(deps): bump github.com/int128/kubelogin from 1.35.2 to 1.36.0 by @dependabot[bot] in #381
- refactor: rename config to project-config and add config as alias by @SaadAssaf in #383
- refactor: make help output more readable by @SaadAssaf in #386
- feat(grafana): add command by @thirdeyenick in #387
- add service linking for deploio apps by @gajicdev in #388
Full Changelog: v1.16.0...v1.17.0
v1.16.0
v1.15.0
Changelog
- Asks for confirmation before database deletion.
- Adds structured output option to the
whoamicommand. - Allows the configuration of custom headers for buckets.
- Preparations for a new buildpack stack.
What's Changed
- Print YAML and JSON output for whoami by @schmijos in #358
- feat: add custom prompt for db deletion by @olknegate in #367
- feat: add allowed-headers bucket CORS key by @sislr in #368
- Add buildpack stack feature by @thirdeyenick in #371
- build(deps): bump goreleaser/goreleaser-action from 6 to 7 by @dependabot[bot] in #361
- build(deps): bump crate-ci/typos from 1.43.5 to 1.44.0 by @dependabot[bot] in #359
- build(deps): bump k8s.io/kubectl from 0.35.0 to 0.35.2 by @dependabot[bot] in #363
- build(deps): bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #360
- build: fix govulncheck warnings by @thde in #366
New Contributors
Full Changelog: v1.14.2...v1.14.3
v1.14.2
Changelog
If you're using nctl auth set-project in CI with an APIServiceAccount you'll need to update the command to run nctl auth set-project --force.
Details
Until v1.14.0 nctl auth set-project would set a project without verifying if the user has access to that project in the first place. This led to confusion for users and therefore we introduced an error and suggestions how to verify which projects a user belongs to.
In some cases, nctl is unable to verify if it has access to a project and would always throw an error:
- When using an
APIServiceAccountin a sub-project. - When using an
APIServiceAccountwithout organizational access.
The nctl auth set-project --force flag allows you to override these checks and set a project anyway.
What's Changed
Full Changelog: v1.14.1...v1.14.2
v1.14.1
Changelog
- Fixes a bug when updating the CORS for an S3 bucket. Flags that were not passed on update would default to
false. This has been fixed so that only passed options are changed.
What's Changed
Full Changelog: v1.14.0...v1.14.1
v1.14.0
Changelog
- Adds suggestions and available options to different errors:
❯ nctl get postgresdatabase ✗ No "PostgresDatabases" found 💥 Project: ninetest Suggested actions: - List all PostgresDatabases in your organization: nctl get postgresdatabases --all-projects - Adds new application sizes:
standard-2andstandard-4 - Improves project switching: If set-project cannot find the project in the current organization, it tries the user's other organizations from the token and switches to the one where the project exists.
- Exposes project details in
yamlandjsonoutput. - Adds the possibility to configure backup schedules for databases:
nctl update postgresdatabase my-db --backup-schedule=daily
- Improves autocomplete for projects.
What's Changed
- feat(autocomplete): use selected project for autocompleting resources by @thde in #336
- feat(errors): add suggestions and options to errors by @thde in #349
- feat: add standard-4 application size by @gajicdev in #345
- feat: switch organization when project is in another org by @SaadAssaf in #327
- feat: expose project specs in yaml/json output by @coorasse in #339
- feat: add backup schedule flag for economy databases by @skyfox14 in #335
- refactor: replace ObjectsBucket usage with Bucket by @pawelkuc in #309
- fix: fallback to COMP_LINE for project parsing by @thde in #338
- docs: improve readme by @thde in #347
- refactor: rename header from NAME to APP NAME by @schmijos in #346
- refactor: configure output centrally, allow testing output by @thde in #348
- refactor: split up utils package by @thde in #353
- build(deps): update dependencies by @thde in #332
- build(goreleaser): update config keys by @thde in #337
- build(deps): bump golang.org/x/crypto from 0.46.0 to 0.47.0 by @dependabot[bot] in #343
- build(deps): bump github.com/golang-jwt/jwt/v5 from 5.3.0 to 5.3.1 by @dependabot[bot] in #340
- build(deps): bump github.com/grafana/loki/v3 from 3.6.3 to 3.6.4 by @dependabot[bot] in #341
- build(deps): update dependencies by @thde in #350
- build(deps): bump crate-ci/typos from 1.41.0 to 1.43.5 by @dependabot[bot] in #354
- build(deps): update to go1.26 by @thde in #355
- test: align test patterns by @thde in #351
New Contributors
- @coorasse made their first contribution in #339
- @schmijos made their first contribution in #346
- @skyfox14 made their first contribution in #335
Full Changelog: v1.13.1...v1.14.0