Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rootless kubernetes driver ignores buildkit config #353

Open
3 tasks done
javiertury opened this issue Aug 20, 2024 · 0 comments
Open
3 tasks done

Rootless kubernetes driver ignores buildkit config #353

javiertury opened this issue Aug 20, 2024 · 0 comments

Comments

@javiertury
Copy link

javiertury commented Aug 20, 2024

Contributing guidelines

I've found a bug, and:

  • The documentation does not mention anything about my problem
  • There are no open or closed issues that are related to my problem

Description

Adding rootless=true to driver-opts makes buildx ignore buildkitd-config-inline. Removing rootless=true makes everything work again.

In this workflow I build and push some images to an insecure private registry using rootless kubernetes. I use buildkitd-config-inline to tell buildkit to use an http connection instead of https.

Expected behaviour

Buildkit should push to the registry using http instead of https.

Actual behaviour

Buildkit tries to use https and throws an error since the registry does not support https.

Repository URL

No response

Workflow run URL

No response

YAML workflow

name: container
run-name: ${{ github.actor }} is building a container 🚀
on:
  registry_package:
    types: [published, updated]

env:
  REGISTRY: <my-registry-domain>:<my-registry-port>
  IMAGE_PATH: <owner>/<image-repo>

jobs:
  build-and-push-container-image:
    runs-on: ubuntu-latest

    if: ${{ github.event.registry_package.name == '<npm-package-name>' && github.event.registry_package.package_type == 'npm' }}

    env:
      PKG_VERSION: ${{ github.event.registry_package.package_version.version }}

    steps:
      -
        name: Check out repository code
        uses: actions/checkout@v4
      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
        with:
          platforms: linux/amd64,linux/arm64
          buildkitd-config-inline: |
            [registry."${{ env.REGISTRY }}"]
              http = true
          driver: kubernetes
          driver-opts: |
            rootless=true
            namespace=buildkit
            replicas=1
            limits.memory=800Mi
            limits.ephemeral-storage=1G
            qemu.install=true
      -
        name: Login to container registry
        uses: docker/login-action@v3
        with:
          registry: ${{ env.REGISTRY }}
          username: ${{ secrets.USERNAME }}
          password: ${{ secrets.PASSWORD }}
      -
        name: Build and push
        uses: docker/build-push-action@v6
        env:
            TAGS: "${{ env.REGISTRY }}/${{ env.IMAGE_PATH }}:${{ env.PKG_VERSION }}"
        with:
          context: .
          platforms: |
            linux/amd64
            linux/arm/v7
          push: true
          pull: true
          no-cache: true
          tags: ${{ env.TAGS }}

Workflow logs

#10 exporting manifest list sha256:XXX done
#10 pushing layers 0.0s done
#10 ERROR: failed to push <my-registry-domain>:<my-registry-port>/<owner>/<image-repo>:X.X.X: failed to do request: Head "https://<my-registry-domain>:<my-registry-port>/v2/<owner>/<image-repo>/blobs/sha256:XXX": http: server gave HTTP response to HTTPS client
------
 > exporting to image:
------
ERROR: failed to solve: failed to push <my-registry-domain>:<my-registry-port>/<owner>/<image-repo>:X.X.X: failed to do request: Head "https://<my-registry-domain>:<my-registry-port>/v2/<owner>/<image-repo>/blobs/sha256:XXX": http: server gave HTTP response to HTTPS client
::group::Reference
builder-6b93c16c-fb2d-4928-aa9e-9f29d5144b6d/builder-6b93c16c-fb2d-4928-aa9e-9f29d5144b6d0/jfwtnpoiz3l68ln69he5sooo2
::endgroup::
::group::Check build summary support
Build summary is not yet supported on GHES
::endgroup::
::error::buildx failed with: ERROR: failed to solve: failed to push <my-registry-domain>:<my-registry-port>/<owner>/<image-repo>:X.X.X: failed to do request: Head "https://<my-registry-domain>:<my-registry-port>/v2/<owner>/<image-repo>/blobs/sha256:XXX": http: server gave HTTP response to HTTPS client

BuildKit logs

No response

Additional info

Related to moby/buildkit#2044. Could this workaround be implemented?

Also related to docker/buildx#2226. If buildkit inherited insecure registries from docker daemon, there would be no need to configure buildkit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant