Как проверить AWS ресурсов локально с ограничениями - PullRequest
2 голосов
/ 24 января 2020

У меня возникают проблемы с локальным тестированием моего приложения из-за ограничений памяти на моем компьютере.

В моем приложении используется около 10 различных микросервисов, где каждый сервис имеет общие / не общие ресурсы AWS. До сих пор я использовал localstack для развертывания всех необходимых AWS фиктивных сервисов и docker для раскрутки других зависимых микросервисов. Тем не менее, я думаю, что общая система стала слишком большой для моей машины. Единственный вариант, который я могу придумать, - использовать kubernetes, а затем развернуть все до AWS для тестирования. Я сомневаюсь в этом, так как не хочу тратить деньги на волонтерский проект.

Есть ли другие варианты для достижения этой цели? Или я должен просто укусить пулю и заплатить по требованию? Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 24 января 2020

Сначала вы должны установить запросы ресурсов и ограничения ресурсов для ваших контейнеров, таким образом, вы будете иметь контроль над ресурсами, которые вы назначаете / используете. Это хорошо объясняется на Управление вычислительными ресурсами для контейнеров .

Лимиты и запросы на memory измеряются в байтах. Вы можете express памяти в виде простого целого числа или целого числа с фиксированной запятой, используя один из следующих суффиксов: E, P, T, G, M, K. Вы также можете использовать степень двух эквивалентов: Ei, Pi , Ти, Ги, Ми, Ки. Например, следующие значения представляют примерно одно и то же значение:

128974848, 129e6, 129M, 123Mi

Ваш Pod может выглядеть следующим образом:

apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  containers:
  - name: db
    image: mysql
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: "password"
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
  - name: wp
    image: wordpress
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"

В следующем модуле есть два контейнера. , Каждый контейнер имеет запрос 0,25 ЦП и 64 МБ (226 байт) памяти. Каждый контейнер имеет ограничение в 0,5 ЦП и 128 МБ памяти. Вы можете сказать, что у Pod есть запрос 0,5 CPU и 128 МБ памяти, а также ограничение в 1 CPU и 256 MБ памяти.

Во-вторых, как только вы запишете свои yaml развертывания, вы можете развернуть их в любом месте.

Вы можете выполнить тестовый запуск на GCP , используя их Бесплатный уровень , который дает вам $ 300 кредита на год.

Если вы можете установить низкие запросы, вы можете даже запустить его на локальном компьютере, используя Minikube .

1 голос
/ 25 января 2020

Я думаю, что общая система стала слишком большой для моей машины. Единственный вариант, который я могу придумать, - это использовать kubernetes и затем развернуть все на AWS для тестирования

У вас проблемы с локальным запуском 10 служб, поэтому вы хотите добавить еще одну службу, чтобы она работала? Мат говорит, что это не поможет: -)

Как локально протестировать AWS ресурсов с ограничениями

Нет необходимости запускать все сервисы, которые есть у вас локально.
У каждой услуги должен быть договор. Сотрудничество между службами предполагает заключение контрактов друг с другом.
Достаточно запустить сервис, предполагающий заключение контрактов с другими сервисами без их фактического запуска.
Если все сервисы смешаны друг с другом без сильных контрактов, тогда возникают гораздо более серьезные проблемы и сверхмощные машина только их скрывает.

Или я должен просто прикусить пулю и заплатить по требованию?

Если вам нужно протестировать все службы вместе, то это имеет смысл тестировать их на производстве, как среда. Если это AWS, тогда используйте AWS. Если это в помещениях, то используйте то же самое.

И последнее - давайте разделим проблемы. Kubernetes (и Agile, Docker, DevOps и другие модные слова) здесь вообще не связаны. По крайней мере, учитывая текущее состояние проблемы.

0 голосов
/ 24 января 2020

Кубернетес на AWS? может быть, слишком тяжелым для вашего запроса, но в любом случае, недавно EKS снизил цену до 50%, если вы считаете, что это хорошо, go за это.

Но я бы рекомендовал работать с другими технологиями, такими как test kitchen с бэкендом ec2.

Используя этот драйвер (https://github.com/test-kitchen/kitchen-ec2) с тестовой кухней, вы можете запустить свой тест на новом запуске ec2, после того как тест будет завершен, ec2 будет убит. В основном я буду запускать точечные экземпляры только с тестовой кухней, это будет стоить дешевле

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...