rancher-desktop: Running `nerdctl build` with Rancher Desktop fails to pull base images from custom registry with self-signed cert
For bugs, describe what you’re seeing
Using nerdctl build with Rancher Desktop on macOS involves pulling a base image from a custom registry which uses self-signed corporate cert, and the error is x509: certificate signed by unknown authority. I have the root CA certs in KeyChain as well as under /usr/local/share/ca-certificates on my host machine. I understand that Rancher Desktop has recently added support for installing the host CA certs into k3s under the cover. However, when I check the BuildKit instance running in the kube-image namespace in k3s under the cover of Rancher Desktop, it doesn’t seem to have the corporate root CA certs imported from the host machine.
To Reproduce Steps to reproduce the behaviour:
$ nerdctl build -f Dockerfile .
Result
[+] Building 0.4s (3/3) FINISHED
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 38B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> ERROR [internal] load metadata for foobar.com/myimage:tag 0.2s
------
> [internal] load metadata for foobar.com/myimage:tag
------
error: failed to solve: failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to do request: Head https://foobar.com/v2/myimage/manifests/tag: x509: certificate signed by unknown authority
FATA[0000] unrecognized image format
Setup (please complete the following information):
- OS: macOS 11.6.1
- Rancher Desktop version: 0.6.1
- Kubernetes version: 1.21.5
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Reactions: 3
- Comments: 22 (8 by maintainers)
I found a workaround, by injecting the corp certs into a secret, and then mounting that into the builder DaemonSet.
Then edit the daemonset:
kubectl edit -n kube-image daemonset.apps/builderAdd the secret as a volume:
Add a volumemount:
Add a lifecycle postStart to update the CA certs:
And now, nerdctl/kim can build an image using an image in my private image repo.
You are correct, the workaround only works until Rancher Desktop is restarted.
@jandubois, @dweomer, I hope Rancher has a plan to fix this before January 31, when Docker Desktop can no longer be used. Rancher Desktop is the best replacement I have found, but this issue makes it unusable for developers.
I have not been able to reproduce this issue (with Rancher Desktop 1.0.1).
I’ve setup a private registry with a self-signed cert and basic auth requirements as
registry.home. It contains annginx:testimage that I will use as a base image:As expected, this failed because I have not yet installed the CA that I used to sign the certificate.
So I use the “Certificate Import Wizard” (from “Control Panel”) to add my CA to the trust store:
Afterwards I stop Rancher Desktop (via “File | Exit”) and start it again, because certs are only imported into the distro during startup. Then I try again:
It still fails, because I haven’t authenticated with the registry yet, but the certificate error is gone. So I log in, and try once more:
Everything is as I expected.
If you still have problems connecting, can you follow the same steps and report back where you get different results?
Is it feasible for Rancher Desktop or kim to start the builder daemonset by recognizing the root CA certificate on the host machine automatically?
I understand that manual workaround is possible. That said, for any company with sizable number of developers, asking each developer to apply the workaround manually and reinstate the workaround after each restart is not a feasible and scalable solution.
I upgraded my RD to 0.7.1, and saw that the DaemonSet got updated and removed the changes. I had to edit the DaemonSet and add them back, but after doing that it is still working for me.
Are you able to
curlto your registry from thebuilderpod? You’ll need to add it withapk add curl. Mine is able to reach my registry without errors. Make sure you have all of the root and intermediate CAs included in the secret.If you are going to release note this as a workaround, you’ll need to add that the DaemonSet will need to be updated whenever you upgrade Rancher Desktop. This makes it less user-friendly.