Как стать автором
Обновить
2
0.5

Tech lead SRE

Отправить сообщение

Я уже пару месяцев думаю, а как на квантовом уровне работают зеркала с фотонами?

Попробуйте нормальную систему, например podman там нет главного процесса и демона в принципе.

Очень не понравилось решение из статьи.

1. Не тратим время и запускаем сертбот в стендэлон режиме, который сам будет веб сервером для проверки типа http-01

2. Не тратим время и не собираем мусор в наших системах, запускаем сертбота в энтрипоинте офф контейнера

5. Не дрочим в консоли 10 команд, а выполняем одну docker compose up -d

7. Не распыляемся на возможно отсутствующий сервис в системе и запускаем сертбот в контейнере с циклическим слипом.
Не прерываем обслуживание наших клиентов на замену ссл сертификата, а перечитываем конфиг нджинкса.

Ну и файл docker-compose.yaml, который всё это реализует:

---
version: "3"
services:
  init-dhparams:
    image: docker.io/certbot/certbot
    restart: "no"
    entrypoint: /bin/sh
    command: -c 'test -f /etc/letsencrypt/ssl-dhparams.pem || openssl dhparam -out /etc/letsencrypt/ssl-dhparams.pem 4096'
    volumes:
      - cert_volume:/etc/letsencrypt:Z
  certbot-oneshot:
    image: docker.io/certbot/certbot
    restart: "no"
    entrypoint: /bin/sh
    command: -c 'test -d /etc/letsencrypt/live/${STAND:-dev99}.${BASE_DOMAIN:-example.ru} || certbot certonly --standalone --register-unsafely-without-email -d "${STAND:-dev99}.${BASE_DOMAIN:-example.ru},sub1.${STAND:-dev99}.${BASE_DOMAIN:-example.ru}" --rsa-key-size ${rsa_key_size:-2048} --agree-tos --force-renewal'
    ports:
      - 80:80
    volumes:
      - cert_volume:/etc/letsencrypt:Z
  nginx:
    image: docker.io/library/nginx
    entrypoint: /bin/sh
    command: -c 'while :; do sleep 6h && wait $${!}; nginx -s reload; done & nginx -g "daemon off;"'
    configs:
      - source: nginx-defaultserver
        target: /etc/nginx/conf.d/default.conf
    # deploy:
    #   replicas: 2
    ports:
      - 80:80
      - 443:443
    depends_on:
      init-dhparams:
        condition: service_completed_successfully
        required: true
      certbot-oneshot:
        condition: service_completed_successfully
        required: true
    volumes:
      - cert_volume:/etc/letsencrypt:Z
      - acme_challenge:/usr/share/nginx/html/.well-known:Z
  certbot:
    image: docker.io/certbot/certbot
    entrypoint: /bin/sh
    command: -c 'trap exit TERM; while :; do certbot renew; sleep 24h && wait $${!}; done;'
    depends_on:
      nginx:
        condition: service_started
        required: true
    volumes:
      - cert_volume:/etc/letsencrypt:Z
      - acme_challenge:/usr/share/nginx/html/.well-known:Z

volumes:
  cert_volume: {}
  acme_challenge: {}

configs:
  nginx-defaultserver:
    content: |
      upstream back {
        server back-api:8000;
        resolver 127.0.0.11 valid=30s;
        resolver_timeout 5s;
      }

        server {
                server_name _ default_server;
                listen       443 ssl http2;

        # мы уже примонтировали сертификаты в Docker Compose
                ssl_certificate     /etc/letsencrypt/live/${STAND:-dev99}.${BASE_DOMAIN:-example.ru}/cert.pem;
                ssl_certificate_key /etc/letsencrypt/live/${STAND:-dev99}.${BASE_DOMAIN:-example.ru}/key.pem;

                location / {
                        proxy_pass http://back;
                }
        }

      server {
        listen 80;

        server_name _ default_server;
        charset utf-8;

        # max upload size
        client_max_body_size 10M;

        root /usr/share/nginx/html;
        index index.html index.htm;

        location / {
          root /usr/share/nginx/html;
          try_files $uri $uri/ /index.html =502;
        }

        error_page 500 502 503 504 /502.html;
        location = /502.html {
          root /usr/share/nginx/html;
          internal;
        }

        # Django project's static files
        location /static {
          proxy_pass https://back;
          expires max;
          etag on;
        }

        # send REST API request to Django
        location /api {
          proxy_pass https://back;
          proxy_pass_header X-CSRFToken;
          proxy_pass_header X-RecaptchaResponse;
          proxy_set_header X-Forwarded-Proto $scheme;
        }

      }
  1. Заключение, статья мусор, больше половины выкинуть.

Пару раз экспериментировал с переименованием рута, в нормальных системах всё продолжает работать и никаких фантомных рутов не создаётся как в центос\редос.
Правда некоторые уведомления захардкожены, если их поправить, то вообще супер. В линуксе руту даже сменить айдишник можно будет, а не только имя, вот теперь задумал поиграться.

А потом снова стал и перестал, qt любят туда-сюда делать)

Нет не можете, многие провайдеры перехватывают трафик днс и принудительно направляют на свои сервера.

Не стоит приписывать злому умыслу то, что проще объяснить глупостью.

В других зонах у меня есть, а в этой больше проблем чем профита.

Не совсем, они же ребутали сервера\сервисы для восстановления и надо было на своём кеширующем сервере для зоны RU статик адресА прописать и параллельную отправку запросов без dnssec валидации. А для всего остального интернета использовать список из днс кешеров провайдера и пачки резервных. Тогда dnssec отключался бы только для зоны RU, что с учётом доступа товарища майора к ключам не несёт для пользователя большей угрозы. Я отказался от идеи подписи dnssec в зоне RU, по причине авторитарности государства.

А как они могут быть не свои? Вы в принципе имеете знания как работает механизмы dnssec?

А ты гигант)

В Апатитах Мурманской области и холодная и горячая пахнут тухлыми яйцами.

Могу предложить камень. К сожалению бить по площади в квартирах дорого, для фильтров нужно немало места. Вот в моём доме были одни трубы, старые, ржавые, постоянно прорывы были, потом капремонт стояков и пластик поставили. Прорывы остались, а состав воды изменился.

Товарищ майор, продолжайте стараться чтобы никто больше не смел.

Информация

В рейтинге
1 572-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

DevOps, SRE
Lead
От 5 000 $
Git
Docker
Database
Kubernetes
Linux
High-loaded systems
CI/CD
Creating project architecture
Python
Bash