kubectl and helm do: the proxy from HTTPS_PROXY, HTTP_PROXY and NO_PROXY, and the certificate authorities from the system and from files you give it.
This page is about Lumovi in your cluster, and its agents. For the desktop app, see Proxies and certificates on your computer.
With the chart
Put the certificate authority in a ConfigMap, or a Secret, in Lumovi’s namespace, as PEM:values.yaml
HTTPS_PROXY and HTTP_PROXY, and name the Secret in proxy.secret instead of proxy.https and proxy.http:
values.yaml
HTTPS_PROXY must be there: a Secret that isn’t, or has no such key, keeps the pod from starting (CreateContainerConfigError, and its events say which). HTTP_PROXY can be left out, where plain http needn’t go through the proxy. Given with proxy.https or proxy.http, helm install fails: proxy.secret holds the proxies' URLs: give it, or proxy.https and proxy.http, not both.
The chart sets HTTPS_PROXY, HTTP_PROXY and NO_PROXY from proxy, mounts the ConfigMap or Secret at /etc/lumovi/ca, and sets LUMOVI_CA_FILE to the file under key. It does the same for an agent (mode: agent). See Helm values.
As it starts, Lumovi’s log says what it took:
The proxy
HTTPS_PROXY is for https addresses, and HTTP_PROXY for http ones, each in upper case or lower case (upper case first, when both are set). A proxy without a scheme, like proxy.corp.example.com:3128, is taken as http://, as curl takes it. One that isn’t a URL stops Lumovi, saying which, and never what it was: HTTPS_PROXY isn’t a proxy’s URL: give it as http://host:port (or https://). Lumovi’s own connections go through it:
- Clusters: the one it shows from a kubeconfig, and a fleet’s, unless the cluster names a proxy of its own:
proxy-urlin its kubeconfig, orproxyUrlin an Argo CD Secret’sconfig. That one is used instead, askubectlwould. - Single sign-on: your provider’s discovery, keys and tokens.
- Helm: the repositories whose charts Lumovi lists, and Artifact Hub. The
helmLumovi runs, which fetches the charts themselves, gets the same variables, and the cluster’s proxy asproxy-urlin the kubeconfig it’s given. - The audit log’s webhook.
- An agent’s connection to Lumovi, its WebSocket through the proxy’s tunnel (
CONNECT).
- This computer:
localhost,127.0.0.1and::1([::1]), whateverNO_PROXYsays. Other addresses in127.0.0.0/8aren’t left out unlessNO_PROXYnames them. - The cluster Lumovi runs in, inside one: its API server at
KUBERNETES_SERVICE_HOST,kubernetes.default.svc, and every name under.svcand.cluster.local. An agent reaches its own API server directly too. - What
NO_PROXYleaves out, as below.
minio.storage, or a Service’s address. Name them in full, like minio.storage.svc, or add them to NO_PROXY: a single sign-on provider, a chart repository or a webhook in the cluster, say.
Lumovi adds what it never proxies to NO_PROXY, so helm leaves them out too.
NO_PROXY
NO_PROXY (or no_proxy) is a list, separated by commas or spaces, of what’s reached directly, read the same way for everything Lumovi connects to:
Credentials
A proxy that wants credentials takes them in its URL, as curl does:http://user:password@proxy.corp.example.com:3128. Encode characters like @ and : in them (%40, %3A). With the chart, give them in a Secret, with proxy.secret: see With the chart.
Lumovi leaves them out of everything it says, in its log and its errors. They do reach the kubeconfig each run of helm gets, as proxy-url, as kubectl would have them: in a private temporary folder, deleted after the run.
Certificate authorities
Lumovi trusts three sets of certificate authorities:- Node’s own, the public ones browsers trust, and
NODE_EXTRA_CA_CERTS’ if you set it. - The system’s: in the image, those of its base image.
- The files
LUMOVI_CA_FILEnames, separated by commas, each with one or more PEM certificates (-----BEGIN CERTIFICATE-----). Text around them is fine.
helm trusts them too. Lumovi writes all it trusts to one file, in a private temporary folder, and gives helm its path as SSL_CERT_FILE, unless you set SSL_CERT_FILE yourself. An agent runs nothing, so it doesn’t.
A cluster is different: its kubeconfig’s certificate-authority (or -data) is the only one its connection trusts, as with kubectl. Behind a proxy that inspects HTTPS, connections to clusters are usually left uninspected; if yours aren’t, the kubeconfig must name the proxy’s authority.
When it doesn’t connect
Lumovi says why a certificate wasn’t taken, and what usually makes it so:
Where they show:
- Single sign-on: the sign-in page says “Signing in didn’t work. The Lumovi server’s log says why.”, and the log says
Signing in failed: Couldn't reach, the address, and why. - Helm: where a repository’s charts, or Artifact Hub’s, are listed, after
Couldn't reachand the address. Whathelmfetches itself fails ashelmsays it. - The audit webhook: on the Audit log page, for auditors, after “It can’t be reached:”. See When events are lost.
- A cluster: on its card, and its error screen.
- An agent’s connection to Lumovi: in the agent’s log, after
Can't reach the hub atand the address, naming the proxy and where it was asked to go: “The proxyhttp://proxy.corp.example.com:3128needs credentials to lumovi.example.com:443 (407): give them in its URL, ashttp://user:password@host:port.” A certificate it doesn’t trust is said as Node says it, likeself-signed certificate in certificate chain.
OpenShift
OpenShift’s cluster-wide proxy isn’t passed to pods by itself. Set the chart’sproxy to the same values as the cluster’s Proxy object (oc get proxy cluster -o yaml), leaving out of noProxy the ranges it may list, which Lumovi doesn’t read, and extraCA to a ConfigMap with its trusted CA bundle: label one config.openshift.io/inject-trusted-cabundle: "true", and OpenShift fills it in, under ca-bundle.crt:
values.yaml
Hardening
What to set for a production installation.
Helm values
proxy, extraCA and openshift.