Mirantis / launchpad

Other
27 stars 45 forks source link

custom imageRepo DTR parameter prefixing pulls with "docker" #52

Closed pjmcquade closed 3 years ago

pjmcquade commented 3 years ago

Hi Folks,

# ./launchpad version
version: 1.0.1
commit: 47d6e89

snippet of dtr yaml segment in cluster.yml:

  dtr:
    version: 2.8.0
    #imageRepo: "docker.io/docker"
    imageRepo: "dtr.example.com/nix"
    replicaConfig: sequential # we install sequentially to adhere to the install primary, then install the replicas pattern
    installFlags:
      - --dtr-external-url dtr.example.com

Executing:

./launchpad --debug --disable-telemetry apply --config cluster.yml | tee launchpad-apply.log

the UCP installation is fine. However, when it attempts to pull the DTR images, I see this (snippet):

INFO[0090] host1.example.com: pulling imagedtr.example.com/nix/docker/dtr-notary-signer:2.8.0
WARN[0090] host1.example.com: failed to pull image dtr.example.com/nix/docker/dtr-garant:2.8.0:
Error response from daemon: pull access denied fordtr.example.com/nix/docker/dtr-garant, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
WARN[0090] host1.example.com: failed to pull image dtr.example.com/nix/docker/dtr-garant:2.8.0 - retrying

See how it's prefixing the image with a "docker/"? It reads:

WARN[0090] host1.example.com: failed to pull image dtr.example.com/nix/docker/dtr-garant:2.8.0:

it should read:

WARN[0090] host1.example.com: failed to pull image dtr.example.com/nix/dtr-garant:2.8.0:

Thoughts?

Thanks!

pjmcquade commented 3 years ago

More info.

When I was reviewing the debugging log out of launchpad, I noticed this:

^[[37mDEBU^[[0m[0009] loaded UCP images list: [mirantis/ucp-agent:3.3.3 mirantis/ucp-auth-store:3.3.3 mirantis/ucp-auth:3.3.3 mirantis/ucp-azure-ip-allocator:3.3.3 mirantis/ucp-calico-cni:3.3.3 mirantis/ucp-calico-kube-controllers:3.3.3 mirantis/ucp-calico-node:3.3.3 mirantis/ucp-cfssl:3.3.3 mirantis/ucp-compose:3.3.3 mirantis/ucp-containerd-shim-process:3.3.3 mirantis/ucp-controller:3.3.3 mirantis/ucp-coredns:3.3.3 mirantis/ucp-csi-attacher:3.3.3 mirantis/ucp-csi-liveness-probe:3.3.3 mirantis/ucp-csi-node-driver-registrar:3.3.3 mirantis/ucp-csi-provisioner:3.3.3 mirantis/ucp-csi-resizer:3.3.3 mirantis/ucp-csi-snapshotter:3.3.3 mirantis/ucp-dsinfo:3.3.3 mirantis/ucp-etcd:3.3.3 mirantis/ucp-hyperkube:3.3.3 mirantis/ucp-interlock-config:3.3.3 mirantis/ucp-interlock-extension:3.3.3 mirantis/ucp-interlock-proxy:3.3.3 mirantis/ucp-interlock:3.3.3 mirantis/ucp-istio-mixer:3.3.3 mirantis/ucp-istio-node-agent-k8s:3.3.3 mirantis/ucp-istio-pilot:3.3.3 mirantis/ucp-istio-proxyv2:3.3.3 mirantis/ucp-kube-compose-api:3.3.3 mirantis/ucp-kube-compose:3.3.3 mirantis/ucp-kube-gmsa-webhook:3.3.3 mirantis/ucp-metrics:3.3.3 mirantis/ucp-nvidia-device-plugin:3.3.3 mirantis/ucp-openstack-ccm:3.3.3 mirantis/ucp-openstack-cinder-csi-plugin:3.3.3 mirantis/ucp-pause:3.3.3 mirantis/ucp-secureoverlay-agent:3.3.3 mirantis/ucp-secureoverlay-mgr:3.3.3 mirantis/ucp-swarm:3.3.3 mirantis/ucp:3.3.3 mirantis/ucp:3.3.3]

See how the images are simply prefixed with just mirantis?

Here's the same images list for the DTR images:

^[[37mDEBU^[[0m[0060] loaded DTR images list: [docker.io/mirantis/dtr:2.8.3 docker.io/mirantis/dtr-api:2.8.3 docker.io/mirantis/dtr-rethink:2.8.3 docker.io/mirantis/dtr-registry:2.8.3 docker.io/mirantis/dtr-notary-server:2.8.3 docker.io/mirantis/dtr-content-cache:2.8.3 docker.io/mirantis/dtr-nginx:2.8.3 docker.io/mirantis/dtr-postgres:2.8.3 docker.io/mirantis/dtr-garant:2.8.3 docker.io/mirantis/dtr-notary-signer:2.8.3 docker.io/mirantis/dtr-jobrunner:2.8.3]

Why are the images prefixed with docker.io/mirantis/<image>:<tag> and not just mirantis/<image>:<tag>

Thanks! -Patrick

53d117460ec63d70 commented 3 years ago

I'm having the same issue with:

$ launchpad version
version: 1.1.0-beta5
commit: ee28324

Configuring a different imageRep works for UCP but not DTR. In the apply.log we can see that the DTR images are prefixed by docker.io:

time="19 Oct 20 14:05 BST" level=debug msg="loaded UCP images list: [mirantis/ucp-agent:3.3.3 mirantis/ucp-auth-store:3.3.3 mirantis/ucp-auth:3.3.3 mirantis/ucp-azure-ip-allocator:3.3.3 mirantis/ucp-calico-cni:3.3.3 mirantis/ucp-calico-kube-controllers:3.3.3 mirantis/ucp-calico-node:3.3.3 mirantis/ucp-cfssl:3.3.3 mirantis/ucp-compose:3.3.3 mirantis/ucp-containerd-shim-process:3.3.3 mirantis/ucp-controller:3.3.3 mirantis/ucp-coredns:3.3.3 mirantis/ucp-csi-attacher:3.3.3 mirantis/ucp-csi-liveness-probe:3.3.3 mirantis/ucp-csi-node-driver-registrar:3.3.3 mirantis/ucp-csi-provisioner:3.3.3 mirantis/ucp-csi-resizer:3.3.3 mirantis/ucp-csi-snapshotter:3.3.3 mirantis/ucp-dsinfo:3.3.3 mirantis/ucp-etcd:3.3.3 mirantis/ucp-hyperkube:3.3.3 mirantis/ucp-interlock-config:3.3.3 mirantis/ucp-interlock-extension:3.3.3 mirantis/ucp-interlock-proxy:3.3.3 mirantis/ucp-interlock:3.3.3 mirantis/ucp-istio-mixer:3.3.3 mirantis/ucp-istio-node-agent-k8s:3.3.3 mirantis/ucp-istio-pilot:3.3.3 mirantis/ucp-istio-proxyv2:3.3.3 mirantis/ucp-kube-compose-api:3.3.3 mirantis/ucp-kube-compose:3.3.3 mirantis/ucp-kube-gmsa-webhook:3.3.3 mirantis/ucp-metrics:3.3.3 mirantis/ucp-nvidia-device-plugin:3.3.3 mirantis/ucp-openstack-ccm:3.3.3 mirantis/ucp-openstack-cinder-csi-plugin:3.3.3 mirantis/ucp-pause:3.3.3 mirantis/ucp-secureoverlay-agent:3.3.3 mirantis/ucp-secureoverlay-mgr:3.3.3 mirantis/ucp-swarm:3.3.3 mirantis/ucp:3.3.3 mirantis/ucp:3.3.3]"
time="19 Oct 20 14:05 BST" level=debug msg="loaded DTR images list: [docker.io/mirantis/dtr-garant:2.8.1 docker.io/mirantis/dtr-notary-signer:2.8.1 docker.io/mirantis/dtr-api:2.8.1 docker.io/mirantis/dtr-nginx:2.8.1 docker.io/mirantis/dtr-rethink:2.8.1 docker.io/mirantis/dtr-notary-server:2.8.1 docker.io/mirantis/dtr-content-cache:2.8.1 docker.io/mirantis/dtr-jobrunner:2.8.1 docker.io/mirantis/dtr:2.8.1 docker.io/mirantis/dtr-postgres:2.8.1 docker.io/mirantis/dtr-registry:2.8.1]"
kke commented 3 years ago

Seems to be a bug.

When listing the needed UCP images via docker run --rm mirantis/ucp:3.3.3 images --list you get something like:

mirantis/ucp-agent:3.3.3
mirantis/ucp-auth-store:3.3.3
mirantis/ucp-auth:3.3.3
....

And when listing for DTR via docker run --rm mirantis/dtr:2.8.2 images you get something like:

docker.io/mirantis/dtr-nginx:2.8.2
docker.io/mirantis/dtr-notary-server:2.8.2
docker.io/mirantis/dtr-content-cache:2.8.2
...

The replacing is done using fmt.Sprintf("%s%s", repo, image[strings.IndexByte(image, '/'):]) which will replace until the first / while it should be replace all the way to the last.

The default repository is docker.io/docker for the older versions of DTR.

kke commented 3 years ago

Fixed in https://github.com/Mirantis/launchpad/releases/tag/1.0.2

pjmcquade commented 3 years ago

Thank you so much for the fix! So far so good; but there's a different issue now. I'll open a new one.