[deckhouse-cli] Fix RPP access docs and the TLS flag that could not help - #443
Merged
Conversation
- Plugins need `cli-download`, not `packages-download`: they live under `deckhouse-cli/plugins/<name>` and travel the same `/v1/images/` route as self-update. - The proxy caches a denial for 30 seconds, so a `403` clears by itself. A fresh token does nothing. - Endpoint discovery reads the `registry-packages-proxy` Ingress, so an identity also needs `get` on it. - Point both docs at the module page for the grant commands, and fix the download route to `/images/<version>`. Signed-off-by: Roman Berezkin <roman.berezkin@flant.com>
Glitchy-Sheep
force-pushed
the
fix/rpp-endpoint-candidates
branch
from
August 12, 2026 08:32
b85e3a6 to
4f41578
Compare
- New "Getting started" section in `self-update.md`: ask for access, get a kubeconfig, check it, use it. - It links to the module page for the grant commands, so a user knows what to ask the administrator for. - `plugins.md` points at the same walkthrough: one kubeconfig and one grant cover both. Signed-off-by: Roman Berezkin <roman.berezkin@flant.com>
- `d8 cli` and `d8 plugins` open two TLS connections: one to the API server for endpoint discovery, one to registry-packages-proxy for downloads. - An API server certificate the client cannot verify killed every command, and no flag could get past it. - The new flag relaxes both, through a clientcmd override, so the kubeconfig CA is dropped the way kubectl does it. - `--rpp-insecure-skip-tls-verify` is gone: it only ever covered the proxy. - Discovery diagnostics name the flag, so the error points at the fix. Signed-off-by: Roman Berezkin <roman.berezkin@flant.com>
- The steps told the reader to paste a kubeconfig into /tmp and carry the path around in a variable, which came from a test script, not from real use. - Most readers already have a kubeconfig for `kubectl`; the only requirement is that it carries a token, so the steps now say that instead. - The section ends with how `d8` finds the kubeconfig, so `--kubeconfig` and `--context` stay discoverable without leading with them. Signed-off-by: Roman Berezkin <roman.berezkin@flant.com>
- The console carries the newer generator, so it is now the place the docs send people to for an OIDC kubeconfig. - The standalone generator stays named once, for clusters that run without the console module. Signed-off-by: Roman Berezkin <roman.berezkin@flant.com>
ldmonster
approved these changes
Aug 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two things blocked downloads through registry-packages-proxy: the docs named a ClusterRole that grants nothing, and the only TLS escape hatch covered the wrong connection. Both are fixed, and every claim is checked against the code.
Problem
The docs sent admins to the wrong role:
plugins.mdsaid plugins needd8:registry-packages-proxy:packages-download, and that it differs from self-update'scli-download. Both wrong.deckhouse-cli/plugins/<name>and travel the same/v1/images/route, guarded by thecli-binarysubresource.cli-downloadcovers them.403.registry-packages-proxyIngress. Without that permission the command dies before it reaches the proxy.internal/selfupdate/README.mdlisted the download route as/v1/images/deckhouse-cli/tags/<tag>, which the proxy does not serve.The insecure flag covered the wrong connection:
d8 cliandd8 pluginsopen two TLS connections: one to the Kubernetes API server for endpoint discovery, one to the proxy for downloads.--rpp-insecure-skip-tls-verifyrelaxed only the second one.x509: certificate is valid for ingress.local, and the old flag changed nothing.Fix
Docs:
cli-downloadcoversd8 cliandd8 plugins./v1/images/deckhouse-cli/images/<version>?platform=<os>-<arch>.Flag:
--insecure-skip-tls-verifyrelaxes both connections.clientcmdoverride, the same way kubectl does it, so the kubeconfig CA is dropped instead of colliding with the insecure setting.--rpp-insecure-skip-tls-verifyis removed. It could not solve the failure people actually hit, and two flags for one idea invited picking the wrong one.Tests
New unit tests in
internal/utilk8s/clientset_test.go:TestSetupK8sClientSetVerifiesByDefault- a kubeconfig with a CA still verifies.TestSetupK8sClientSetInsecureDropsCA- the option turns verification off, clears the CA, keeps the bearer token.TestSetupK8sClientSetInsecureFalseKeepsCA- passingfalsechanges nothing.Run against a dev cluster whose API server ingress served the fallback certificate:
x509: certificate is valid for ingress.local--rpp-insecure-skip-tls-verify(old flag)--insecure-skip-tls-verifyA newer deckhouse-cli is availabled8 plugins versions <name> --insecure-skip-tls-verify401as expected - verification not weakened