Я был долгое время поклонника Zeit Анкет Помимо технической части (которая действительно хороша), их платформа дает людям действительно простые, понятные и (наиболее важно) заслуживающие доверия инструменты для получения реального приложения в производство. Я хотел, чтобы что -то подобное существовало для Kubernetes на некоторое время (я даже написал об этом, но я отвлекся).
Платформа на некоторое время была для приложений для узлов, но контейнеры — это то, что вы все, и Zeit позволяет вам развернуть их на своей платформе сейчас (они объявили об этом Середина августа ) Он делает все то же, что и для узла, но с Docker:
- Напишите Dockerfile
- Запустить
в настоящее время
- Выгода
Там происходит тонна на шаге 2, но основы:
- Протолкнуть Dockerfile и контекст до Zeit
- Zeit делает
Docker Build
на их инфраструктуре - Zeit выдвигает изображение в свой реестр (я предполагаю, что они управляют внутренним реестром, но не понятия на самом деле) на самом деле)
- Zeit втягивает изображение в свою сервировочную инфраструктуру, настраивает его, делает маршрутизацию,
Проверки, если вы заплатили, и даст вам все удивительное оборудование, если у вас есть, и иным образом запускает вас на Raspberrypiи запускает ваше изображение на своих серверах
Я имею в виду, я писал в блоге о ACR BUILDS раньше, но это следующий уровень. Одна команда дает вам все.
Вот это рад проект Я знаю о. Что -то о Go и зависимости Idk Но у него есть Dockerfile
И вы можете сделать с ним классные вещи. Так почему бы не посмотреть, сможет ли Zeit справиться с этим зверями ??
Мне пришлось немного настроить Dockerfile, потому что CLI ( сейчас
) не позволяет вам указать пользовательский Dockerfile
локации (Я не думаю ???) Но это было в значительной степени (проверьте pr .) Теперь я могу сделать это:
➜ athens git:(zeit-now) now --docker > Deploying ~/github/athens under arschles > Your deployment's code and logs will be publicly accessible because you are subscribed to the OSS plan. > NOTE: You can use `now --public` or upgrade your plan (https://zeit.co/account/plan) to skip this prompt > https://athens-ukiespgiyz.now.sh [in clipboard] (sfo1) [5s] > Building… > Sending build context to Docker daemon 37.83MB > Step 1/16 : FROM golang:1.11-alpine AS builder > ---> 95ec94706ff6 > Step 2/16 : RUN mkdir /proj > ---> Using cache > ---> 7690d95ac3b4 > Step 3/16 : WORKDIR /proj > ---> Using cache > ---> 89a1e2d291ec > Step 4/16 : COPY . . > ---> 6fdf77ac18ec > Step 5/16 : ENV GO111MODULE=on > ---> Running in 61601842b526 > Removing intermediate container 61601842b526 > ---> 75be7b20b225 > Step 6/16 : ENV GOPROXY=https://microsoftgoproxy.azurewebsites.net > ---> Running in 8e92f2e31291 > Removing intermediate container 8e92f2e31291 > ---> 8f7e12c7fef4 > Step 7/16 : RUN GO111MODULE=on CGO_ENABLED=0 go build -o /bin/athens-proxy ./cmd/proxy > ---> Running in b25589823d39 > go: finding github.com/fatih/color v1.7.0 > go: finding github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b > go: finding github.com/minio/minio-go v6.0.5+incompatible > go: finding github.com/gobuffalo/mw-csrf v0.0.0-20180802151833-446ff26e108b > go: finding github.com/tinylib/msgp v1.0.2 [SNIP] > go: downloading github.com/markbates/goth v1.46.0 > go: downloading github.com/rs/cors v1.5.0 > go: downloading github.com/gobuffalo/buffalo v0.13.1 > go: downloading github.com/unrolled/secure v0.0.0-20181005190816-ff9db2ff917f > go: downloading github.com/mitchellh/go-homedir v1.0.0 [SNIP] > Removing intermediate container b25589823d39 > ---> d61630e38cd9 > Step 8/16 : FROM alpine > ---> 196d12cf6ab1 > Step 9/16 : ENV GO111MODULE=on > ---> Using cache > ---> cd147951c9a7 > Step 10/16 : COPY --from=builder /bin/athens-proxy /bin/athens-proxy > ---> Using cache > ---> a462fc7bd78b > Step 11/16 : COPY --from=builder /proj/config.dev.toml /config/config.toml > ---> 3c99d68507fe > Step 12/16 : COPY --from=builder /usr/local/go/bin/go /bin/go > ---> bcac2f09281a > Step 13/16 : RUN apk update && apk add --no-cache bzr git mercurial openssh-client subversion procps fossil && mkdir -p /usr/local/go > ---> Running in 49fd4fa48969 > fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz > fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz > v3.8.1-38-g898a0bb28a [http://dl-cdn.alpinelinux.org/alpine/v3.8/main] > v3.8.1-35-ga062ffc9e8 [http://dl-cdn.alpinelinux.org/alpine/v3.8/community] > OK: 9539 distinct packages available > fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz > fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz > (1/33) Installing libbz2 (1.0.6-r6) > (2/33) Installing expat (2.2.5-r0) > (3/33) Installing libffi (3.2.1-r4) > (4/33) Installing gdbm (1.13-r1) > (5/33) Installing ncurses-terminfo-base (6.1_p20180818-r1) [SNIP] > Executing subversion-1.10.0-r0.pre-install > Executing busybox-1.28.4-r1.trigger > Executing ca-certificates-20171114-r3.trigger > OK: 123 MiB in 46 packages > Removing intermediate container 49fd4fa48969 > ---> e8a15877e355 > Step 14/16 : ENV GO_ENV=production > ---> Running in ac91ac08096a > Removing intermediate container ac91ac08096a > ---> 096f14de684e > Step 15/16 : EXPOSE 3000 > ---> Running in eb60ce775db6 > Removing intermediate container eb60ce775db6 > ---> 0075a1cdb3c5 > Step 16/16 : CMD ["athens-proxy", "-config_file=/config/config.toml"] > ---> Running in 33e543286967 > Removing intermediate container 33e543286967 > ---> 211b19e9d4a4 > Successfully built 211b19e9d4a4 > Successfully tagged build:RWio8EYjdNbuK5HXd31rKHAp_1540411816 > ▲ Assembling image > ▲ Storing image (64.0M) > Build completed > Verifying instantiation in sfo1 > [0] buffalo: Unless you set SESSION_SECRET env variable, your session storage is not protected! > [0] time="2018-10-24T20:12:29Z" level=info msg="Exporter not specified. Traces won't be exported" > [0] buffalo: Starting application at :3000 > ✔ Scaled 1 instance in sfo1 [14s] > Success! Deployment ready
Это использует Многоценная сборка Чтобы построить Афины в Dockerfile, на инфраструктуре Zeit. И я начал это, потому что я использовал размещен Athens Module Proxy (Обновление: в настоящее время есть более надежный один из этих серверов по адресу https://athens.azurefd.net ), чтобы строить сам Афины внутри сборки, на инфраструктуре Zeit.
Вот как это выглядит после развертывания:
➜ athens git:(zeit-now) now list > 5 total deployments found under arschles [314ms] > To list more deployments for an app run `now ls [app]` app url inst # type state age athens athens-ukiespgiyz.now.sh - DOCKER READY 4m
Есть пользовательский интерфейс для всего этого на сайте Zeit.co. Они даже транслируют журналы сборки на сайт тоже #Amaze
Так что в основном я запустил несколько команд и получил тонну вывода на CLI. Машины выполняют мои приказы; успех!
Теперь, когда он работает, я хотел посмотреть, как это исполнилось. Я начал с маленького с bld
( пост в блоге для фона на этом инструменте, если вам интересно):
➜ bld git:(master) export GOPROXY=https://athens-ukiespgiyz.now.sh ➜ bld git:(master) sudo rm -r $GOPATH/pkg/mod ➜ bld git:(master) time go build go: finding github.com/magefile/mage v1.4.0 go: finding github.com/tdewolff/parse v2.3.3+incompatible go: finding github.com/spf13/cobra v0.0.3 go: finding github.com/mitchellh/go-homedir v1.0.0 go: finding github.com/mattn/go-isatty v0.0.3 go: finding github.com/spf13/viper v1.2.1 go: finding github.com/dlclark/regexp2 v1.1.6 go: finding github.com/tdewolff/minify v2.3.5+incompatible go: finding github.com/spf13/pflag v1.0.3 go: finding github.com/magiconair/properties v1.8.0 go: finding gopkg.in/yaml.v2 v2.2.1 go: finding github.com/fsnotify/fsnotify v1.4.7 go: finding golang.org/x/text v0.3.0 go: finding golang.org/x/sys v0.0.0-20180906133057-8cf3aee42992 go: finding github.com/pelletier/go-toml v1.2.0 go: finding github.com/spf13/jwalterweatherman v1.0.0 go: finding github.com/mitchellh/mapstructure v1.0.0 go: finding github.com/spf13/pflag v1.0.2 go: finding gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 go: finding github.com/spf13/afero v1.1.2 go: finding github.com/spf13/cast v1.2.0 go: finding github.com/hashicorp/hcl v1.0.0 go: finding github.com/davecgh/go-spew v1.1.1 go: downloading github.com/spf13/viper v1.2.1 go: downloading github.com/spf13/cobra v0.0.3 go: downloading github.com/mitchellh/go-homedir v1.0.0 go: downloading github.com/magefile/mage v1.4.0 go: downloading github.com/mitchellh/mapstructure v1.0.0 go: downloading github.com/hashicorp/hcl v1.0.0 go: downloading github.com/pelletier/go-toml v1.2.0 go: downloading gopkg.in/yaml.v2 v2.2.1 go: downloading github.com/spf13/jwalterweatherman v1.0.0 go: downloading github.com/magiconair/properties v1.8.0 go: downloading github.com/fsnotify/fsnotify v1.4.7 go: downloading github.com/spf13/pflag v1.0.3 go: downloading github.com/spf13/cast v1.2.0 go: downloading github.com/spf13/afero v1.1.2 go: downloading golang.org/x/sys v0.0.0-20180906133057-8cf3aee42992 go: downloading golang.org/x/text v0.3.0 go build 4.97s user 2.06s system 7% cpu 1:32.16 total
Итак, это вроде заняло некоторое время. Строительство самого Афин также приняло навсегда (около 6:30), но есть несколько причин для этого, и способы получить большие ускорения OLE от опыта размещения Афин:
- Запустите это с более чем одним экземпляром
- Подключить это к внешней памяти
- Вам все равно нужно сделать это, чтобы № 1 работал
- Это использует локальный диск И я понятия не имею Что или как быстро это на Zeit
- Предварительно воспринимал кеш Афин с вещами
- Все, что я показал, было от холодного локального (
$ gopath/pkg/mod
для сусликов) и размещен (на сервере Zeit Athens) кэш
- Все, что я показал, было от холодного локального (
В целом, это довольно RAD -платформа. Я даю это довольно рад. Не Mega Rad — это зарезервировано для Clippy Уровень вещей, но мысли выше, чем полу-рид.
Держись на рок всех!
Оригинал: «https://dev.to/arschles/athens-running-on-zeit-3kkf»