Пытаюсь выяснить, как получить этот исполняемый файл в контейнере для docker - PullRequest
0 голосов
/ 30 мая 2020

У меня не получается создать изображение docker, которое предоставляет исполняемый файл Tunnel Cloudflare для linux. До сих пор я дошел до этого этапа с моим изображением docker для него (изображение взято из https://github.com/jakejarvis/docker-cloudflare-argo/blob/master/Dockerfile)

FROM ubuntu:18.04

LABEL maintainer="Jake Jarvis <jake@jarv.is>"

RUN apt-get update \
  && apt-get install -y --no-install-recommends wget ca-certificates \
  && rm -rf /var/lib/apt/lists/*

RUN wget -O cloudflared.tgz https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.tgz \
  && tar -xzvf cloudflared.tgz \
  && rm cloudflared.tgz \
  && chmod +x cloudflared

ENTRYPOINT ["./cloudflared"]

И после официальной документации для их настройки kubernetes Я добавил его в свое развертывание в качестве сопроводительного файла через: (здесь cloudflare-argo:5 - образ, созданный из файла докеров, приведенного выше)

    - name: cloudflare-argo
      image: my-registry/cloudflare-argo:5
      imagePullPolicy: Always
      command: ["cloudflared", "tunnel"]
      args:
        - --url=http://localhost:8080
        - --hostname=my-website
        - --origincert=/etc/cloudflared/cert.pem
        - --no-autoupdate
      volumeMounts:
        - mountPath: /etc/cloudflared
          name: cloudflare-argo-secret
          readOnly: true
      resources:
        requests:
          cpu: "50m"
        limits:
          cpu: "200m"
  volumes:
    - name: cloudflare-argo-secret
      secret:
        secretName: my-website.com

Однако после развертывания я получаю сообщение об ошибке CrashLoopBackOff на моем модуле со следующими kubectl describe output

Создан контейнер cloudflare-ar go

Ошибка: не удалось запустить контейнер «cloudflare-ar go»: ответ от демона об ошибке: Ошибка создания среды выполнения OCI : container_ linux. go: 349: запуск процесса контейнера вызвал «exe c: \" cloudflared \ ": исполняемый файл не найден в $ PATH»: unknown

Ответы [ 2 ]

2 голосов
/ 30 мая 2020

В файле докеров это ./cloudflared, так что это будет:

      command:
        - ./cloudflared
        - tunnel
        - --url=http://localhost:8080
        - --hostname=my-website
        - --origincert=/etc/cloudflared/cert.pem
        - --no-autoupdate

(также нет причин использовать оба command и args, просто выберите один, если вы уроните первый элемент, затем используйте args).

1 голос
/ 30 мая 2020

В вашем Dockerfile переместите облачный двоичный файл в папку /usr/local/bin вместо того, чтобы запускать его из текущего WORKDIR.

  && chmod +x cloudflared \
  && mv cloudflared /usr/local/bin

ENTRYPOINT ["cloudflared"]
...