Max
то тут я хз
Max
у меня такой задачки не было
Rainbow
можно пушить все, кроме html, потому что остальное с хешами. Но могут выстрелить когда-то
Rainbow
В смысле сначала все кроме html, а его в конце
Andrey
@alexesDev вам нужно "атомарное" копирование в S3? Может, тогда использовать два бакета, на манер blue/green деплоев?
Rainbow
Andrey
а если старые файлы затираются?
Andrey
ну тогда копируйте старый бакет в новый, потом в новый новые файлы, потом подменяете бакет
Й
Как-то у вас все сложно
Rainbow
blue/green + общая помойка. Примерно то, о чем писал. Только почему-то готовых решений нет
Rainbow
Как-то у вас все сложно
gatsby генерирует статические html страницы, но после загрузки js - становится SPA и остальные страницы создаются через JS 😁 Это на порядок круче SSR, который раньше использовал, если контент не обновляется пользователями или обновляется в приватных или редких случах
Andrey
Сопоставление с корректными версиями js можно в стадию автотеста засунуть
Andrey
Перед пушем в прод
Rainbow
Проблема только отдать корретные html файлы не раньше времени. Тут вопрос почему нет готового 😐 Вроде частый кейс.
Rainbow
Я хотел использовать netlify и забить. Только выходит 2к страниц и netlify это не нравится.
Andor
Andrey
а чего именно готового хочется? вы в s3 пихаете зависимые на уровне приложения файлы без указания зависимостей. Как оно вам стелепатит, что копировать сначала, что потом?
Rainbow
Я хочу s3 как источник и daemonset, чтобы на каждом хосте была помойка, которая init контейнером выкачивается 😐
Andor
сначла опечатался девопес, а сейчас думаю, что это не опечатка
Andrey
да ещё что вам одновременно надо и новых клиентов и старых обслуживать
Andrey
почему у старых клиентов старая версия html доступна, а старые версии js - нет?
Andrey
может, expiration надо грамотно настроить?
Rainbow
Andrey
вчера открыл страницу, js не подгрузилось?
Andrey
Через куки
Rainbow
Andrey
Со сроком действия
Rainbow
старый чанк в какой-то момент захочет другой старый чанк и у меня ошибки
Andrey
форсировать обновление html тогда. Понятно, что это на уровне приложения делать надо, но нельзя же всё на инфру спихивать
Andrey
помойка из статики из разных версий может вызвать подземные стуки
Rainbow
Я написал, что хочу
s3 как источник + daemonset который initcontainer выкачивает текущий бид в помойку.
Rainbow
Rainbow
Т.е. хеши нормально работают. Старая же практика, ещё с ранних версий rails
Rainbow
/assets/ в expires max
Andrey
ну не знаю. У меня копирование "поверх" всегда отторжение вызывало.
Andrey
как rsync без --delete
Andrey
да, это я понял.
Rainbow
Только опять же проблема, что новая нода - пустая помойка 😐
Rainbow
ceph решил бы проблему, только я не буду делать ceph ради статики xD
Rainbow
Хранить помойку на s3 + ttl - во.
Rainbow
А CRD юзать просто как сигнал выкачать нужную версию + обновить помойку + домены, подпапки для веток в деве и тп.
𝚔𝚟𝚊𝚙𝚜
Andor
почему? он сразу EOF вернёт
Andor
либо нули
Andor
надо в реализацию смотреть
𝚔𝚟𝚊𝚙𝚜
Потому что это /dev/null, за нулями это в соседний /dev/zero
𝚔𝚟𝚊𝚙𝚜
Вспоминается цитатка:
> ага, ты ещё как BSDobermann сделай "mv file.avi /dev/null" и потом удивляйся, почему у тебя "mplayer /dev/null" кино кажет и этот /dev/null весит 640 мегов)
Andor
почему? он сразу EOF вернёт
сразу EOF конечно
root@21e204234603:/# dd if=/dev/null of=/testme bs=1 count=1024
0+0 records in
0+0 records out
0 bytes copied, 7.57e-05 s, 0.0 kB/s
root@21e204234603:/# du -b /testme
0 /testme
Alexey
Коллеги, подскажите по следующей проблеме: нода куба переезжала в другую сеть и, видимо, не вполне корректно была остановлена. В логе kubelet ошибки вида Error response from daemon: stat /var/lib/docker/overlay2/5c2..: no such file or directory, в выводе docker ps запущенных контейнеров нет, kubectl get pods -o wide | grep nodename подов не возвращает.
Перезапуск docker/kubelet проблему не решил. Подскажите, что делать?
Отделение Bereke Bank
Удали ноду из кластера и добавь заново
Отделение Bereke Bank
Раз там ничего нет
Andrei
у меня configmap делает кончиг для nginx потом deployment использует этот кончиг. Pod стартает с новым конфигом только нехватает команды /usr/sbin/nginx -s reload , как его применить? В deployment?
Rainbow
Andrei
Rainbow
Andor
любое решение нормальное, если оно не делает больно
Rainbow
вообще обычно делают configmap с рандомным именем и apply на deployment с новым конфигом, оно само рестартует по rolling update
Rainbow
* и обычно это автоматом делает тул для деплоя вроде helm (надеюсь, что да xD) или kustomize
Andrei
spec:
containers:
- name: command-demo-container
image: nginx
command: ['nginx', '-s', 'reload']
не прокатит?
𝚔𝚟𝚊𝚙𝚜
Andor
lol
Rainbow
Rainbow
И даже это не сильно круто. ingress-nginx ушел от такого по максимуму. Это к слову, что так делать - тоже не круто. Делайте restart любым способом и все.
Rainbow
У вас в контейнере по хорошему должен быть 1 воркер. Если вы массово будете делать reload на паре контейнеров - печаль.
Vadim
Мне кажется вместо нытья на полтора полтора уже вполне написать свою релоадилку нгинкса
Rainbow
Andor
Alexey
Etki
Михаил
Etki
тоже мне новость
Rainbow
вот теперь я вижу что ты опытный девопс
Не думаю. На приличную ЗП как devopsа не возьмут, тем более linux админом. А все ИМХО от 6 лет разработки и поддержки часто меняющегося ПО одной компании (когда fulltime, когда только вечерами) без космических расходов на команду.
Vadim
https://wecode.wepay.com/posts/scds-battle-of-containerization
sidecars vs. daemonsets
Rainbow
И с http2 тоже, если специально не пушить
𝚔𝚟𝚊𝚙𝚜
Rainbow
@evvProFfeSsoRr Пока тут новый сервис писал. Я фиг знает как можно поддерживать идентичное окружение на dev|prod, потому что огромные расхождения начинаются уже с Dockerfile. Dev:
FROM node:10.8-alpine
WORKDIR /app
COPY package.json yarn.lock .babelrc /app/
RUN yarn
Prod
FROM node:10.8-alpine as build
WORKDIR /app
COPY package.json yarn.lock /app/
RUN yarn
COPY . /app/
RUN yarn babel src --out-dir lib
FROM node:10.8-alpine
RUN apk add --no-cache tini
ENTRYPOINT ["/sbin/tini", "--"]
WORKDIR /app
ADD package.json yarn.lock /app/
RUN yarn --production
COPY --from=build /app/lib /app/src
CMD ["node", "/app/src/index.js"]
В файлах окрестратора примерно такие же отличия. Пару строк в dev и 20-50 в проде.