Этот блог является частью серии о Kubernetes и его экосистеме, где мы погрузимся глубоко в инфраструктуру по одному
До сих пор мы рассказали о различных принципах, которые должны помнить, работая с инфраструктурой в целом, а также обсуждали влияние Kubernetes и его экосистемы на наш путь к созданию инфраструктуры местной облака.
Но, учитывая, что в игре есть много инструментов и технологий, чтобы все это произошло, я почти уверен, что у вас останется много вопросов без ответа. В то время как мы будем глубже погружаться по всей экосистеме в этой серии, я чувствую, что важно очистить некоторые из облачных мыслей, которые у вас могут возникнуть. Итак, почему бы не начать продолжить эту серию с FAQ ( аналогично тому, что я сделал для GraphQL )? Вот что мы здесь сделаем. Я собрал ряд вопросов, а также ответил на них ниже.
Если вы новичок в Kubernetes или контейнерах, я бы порекомендовал вам начать с любого из этих ресурсов, прежде чем прыгнуть в этот пост в блоге:
- Kubernetes официальные документы
- Kubernetes Tutorials от учебного положения
- Kubernetes потрясающий Рамит Сурана
- GKE , Eks , Акс , Цифровой океан Учебные пособия
- Учебная коллекция агрегируется Aquasec
Как только вы почувствуете себя комфортно с основами, я настоятельно рекомендую вам придерживаться официальной документации Kubernetes, так как это выступает в качестве единственного источника истины для всего Kubernetes. Но если вы хотите узнать больше или исследовать на Различные инструменты Поддерживая Kubernetes, я бы порекомендовал пройти через их документы соответственно.
И если вы действительно хотите услышать все это от экспертов отрасли и узнать больше, пройдя их тематические исследования, я настоятельно рекомендую взглянуть на CNCF YouTube Channel который размещает тонны полезных ресурсов по отношению к Kubernetes и его экосистеме (не пропустите Cloud Native/Kube Cons)
Почему облако нативно?
В нашем Последний блог Мы посмотрели на то, что такое облачное насыщенное и как выглядит стек. Основные причины, по которым вы хотели бы пойти на Cloud Lating:
- Для достижения максимальной масштабируемости, но приходите постепенно и делайте это либо по требованию, либо даже в зависимости от ограничений
- Наличие систем, которые могут лучше реагировать на неисправности, а не пытаться избежать разломов, что невозможно, когда вы масштабируете распределенную систему
- Избегайте любого вида блокировки, внедрив поставщику агностической модели, используя стандарты, такие платформы, как Kubernetes и другие облачные нативные конструкции, доступные для использования
- Ускорить внутреннюю петлю DEV и полный цикл от разработки приложений до производства путем установления стандартной автоматизации и масштабируемых трубопроводов CI/CD на месте, обеспечивая гибкую разработку и лучшую процесс освобождения и доставку приложений
- Снимайте большое внимание на здравомыслие и устойчивость вашего приложения, будь то безопасность, мониторинг, регистрация, распределенная трассировка, резервные копии/отказа и многое другое, используя различные инструменты и механизмы, уже доступные как часть нативного стека Cloud.
- Обработка различных архитектур. Будь то
Таким образом, это обычно означало бы, что настоятельно рекомендуется стать облачным нативным для почти Все независимо от вашего варианта использования. Ваш уровень принятия различных инструментов и технологий может варьироваться в зависимости от вашего варианта использования, но принципы остаются почти всегда одинаковыми.
Я использую Docker Compose. Как мне перейти на Kubernetes?
Если вы начинаете с самого начала, и у вас есть много файлов составления для преобразования, я бы порекомендовал попробовать такой инструмент, как Kompose который примет ваши файлы Compose и генерирует файлы K8 YAML для упрощения вашей задачи.
Но это рекомендуется только тогда, когда вы начинаете как новичок в Kubernetes. Как только вы начнете тесно сотрудничать с ним, рекомендуется иметь свою среду разработки также в качестве кластера K8 (будь то что -то вроде Minikube, Kind, Microk8s, K3s или чего -то еще в этом отношении) или даже удаленный кластер K8 (GKE, AKS, EKS и так далее). Это потому, что вы получите постоянный опыт, начиная с разработки до производства, и вам придется чувствовать себя комфортно с ним рано или поздно, если вы используете Kubernetes.
Как мне запустить кластер Kubernetes локально?
Есть много вариантов, как мы упомянули, которые помогают нам управлять кластерами K8 на местном уровне. Некоторые из примечательных вариантов будут:
- Minikube : One Node K8 Cluster, работающий в виртуальной машине, поддерживаемый командой Google Container Tools. Может быть довольно громоздким, если у вас есть низкие ресурсы, и вы хотите запустить несколько кластеров на одной машине, а также занять довольно много времени, чтобы запустить или остановить кластер. Имеет высокую совместимость с версиями Upstream K8
- Добрый : Запустите кластеры Kubernetes в Docker, проекте Kubernetes SIGS, используемый в качестве инструмента для тестирования самого Kubernetes. Начинается и останавливается довольно быстро. Поскольку существуют разные контейнеры, такие как Docker и Podman, поведение может быть различным в обоих, каждая плоскость узла/управления размещена в своем собственном контейнере и использует сетевую связь Docker для всей связи. Имеет высокую совместимость с версиями Upstream K8
- K3S : Легкая версия Kubernetes, поддерживаемая Rancher Labs, поставляются только стабильные функции, и без многих плагинов, ведущих к очень низкому двоичному размеру, поддерживает автоматическое развертывание. Имеет высокую совместимость с версиями K8 вверх по течению, но вы можете следить за тем, используете ли вы альфа -функции/плагины, поскольку вам нужно установить их вручную для использования.
- Microk8s : Легкая версия Kubernetes от Canonical, упакованная как Snap (поэтому вам снова не нужна виртуальная машина), лучше совместимая с Ubuntu, чем другие распределения, и не поддерживается в распределениях без поддержки SNAP.
Есть и другие варианты, такие как FireKube , или вы даже можете использовать Kubeadm непосредственно, если хотите 🤔. Попробуйте все и используйте то, что лучше для вас.
Но помните, что кластеры K8 разработки и производства могут оказаться совершенно разными. Итак, попробуйте тестирование в стадии, прежде чем что -то отправить.
Зачем мне этот руль?
Когда вы начинаете с Kubernetes, вам, возможно, не нужно использовать руль, на самом деле я бы порекомендовал вам не использовать, когда вы начинаете. Вы можете просто пойти со старыми добрыми файлами YAML и заставить вещи работать.
Но Helm обеспечивает отличное значение, когда вы начинаете более глубже погружаться, внедряя несколько сред с несколькими конфигурациями, процессом упаковки/выпуска, отката или рота Просто изменив конфигурацию по мере необходимости, и используйте их.
Учитывая, что вам больше не нужно Ruter, начиная с Helm 3, все, что вам нужно, это клиент для работы с Helm.
Таким образом, Helm может помочь вам с такими вещами, как шаблон, упаковка/релиз/версия, а также менеджер пакетов для Kubernetes.
Как зарегистрировать секреты и учетные данные для контроля версий?
Это всегда было серьезной проблемой для разработчиков и одной из главных причин, стоящих за множеством атак на такие системы, как это приводя к большому беспокойству в отношении того, как решаются учетные данные, при этом есть необходимость где -то его безопасно хранить.
Это можно обрабатывать несколькими способами:
- Используйте менеджер учетных данных, как Хранилище что может помочь вам управлять секретами и конфиденциальными данными в одном месте
- Зашифруйте конфиденциальные данные/учетные данные службой управления ключами (км), используя такой инструмент, как SOPS и проверка зашифрованных учетных данных для управления версией. Для очень конфиденциальных учетных данных вы также можете использовать HSM (модуль аппаратной безопасности), который обычно обеспечивает самый высокий уровень физической безопасности
Хотя вы делаете все это, важно ввести инструменты на случай, если несчастные случаи произойдут. Например, такая услуга, как GitHub, имеет Способность сканировать секреты в репозиториях И вы можете также использовать его. И даже после этого, если происходит худшее, молитесь за лучшее и отмените скомпрометированные полномочия.
Я использую устаревший стек. Как сделать свое облако приложения нативным?
Создание нативного облака приложений — это непрерывный процесс с возможностями, которые всегда доступны для изменений или улучшений. Лучший способ начать-принимать по одному компоненту за раз и мигрировать, а не пытаться сделать тотальную миграцию, с которой невозможно начать.
Например, если у вас есть часть применения, которая требует высокой масштабируемости, попробуйте поднять и сдвиг соответствующей части в одиночку и посмотрите, действительно ли миграция вам просто подведет часть трафика к новому развертыванию и посмотрите, как это ведет себя. Вот где A/B -тестирование или канарейские архитектуры с сервисной сеткой могут действительно помочь.
Чтобы сохранить ваше приложение в наличии во время завершения миграции, также рекомендуется иметь параллельное существование устаревшей архитектуры в дополнение к нативной реализации облаков.
Во многих случаях создание нативного облака приложений может потребовать изменения приложения или в очень редких случаях, а также переписывание. Итак, убедитесь, что вы оценили все свои варианты и входите в четкое технико -экономическое обоснование.
Как построить очень доступный кластер Kubernetes?
В некоторых критических случаях миссии это может потребоваться, чтобы ваши кластеры Kubernetes были очень доступными. Но не становятся слишком параноидальными, потому что тем более доступна ваша архитектура, тем сложнее она становится. Итак, будьте вдумчивы и оцените, действительно ли вы этого хотите, прежде чем начать.
Создание кластера очень доступно, возможно, потребуется делать такие вещи, как наличие нескольких копий мастеров, разделяющих их по нескольким различным зонам/регионам с механизмом синхронизации, установленным между их соответствующими запасами и т. Д. Это также может потребоваться предоставление различных узлов в разных регионах, чтобы любой сбой в одном кластере в одном регионе не влиял на трафик в остальном. Возможно, вы захотите проверить, как создать кластер HA с Kubeadm Здесь Анкет
Кроме того, если вы хотите, чтобы ваше приложение было очень доступным, вы можете поддерживать несколько копий ваших стручков, также следя за тем, чтобы все они не оказывались на одном узле, используя этикетки и сродство/анти-аффинность стручков.
В дополнение к этому, вы также можете масштабировать свое приложение на уровне балансировщика нагрузки, используя балансировщик нагрузки на основе программного обеспечения, используя DNS, чтобы убедиться, что вы не отправляете весь трафик постоянно в одно и то же место, имея статический Активы в CDN, которые могут помочь даже при сбое сервера/кластера.
Таким образом, масштабируемость и доступность могут быть и должны выполняться на нескольких разных слоях в зависимости от того, где ваше узкое место или проблемы.
Как мне сотрудничать с моей командой в том же кластере Kubernetes?
Есть много способов, которыми вы можете изолировать рабочие нагрузки и все еще сотрудничать, когда вы работаете со своей командой, используя Kubernetes. Хотя вы можете эффективно использовать один кластер для каждого разработчика, и некоторые организации делают то, что не совсем плохо, поскольку он обеспечивает отличную изоляцию в рабочих нагрузках между членами команды, это может оказаться незаметным и трудным для управления в течение длительного времени (особенно если есть это единственная команда OPS, выполняющая это), обрабатывающая патчи безопасности/обновления/управление AUTH и так далее. Чтобы избежать таких сценариев, некоторые другие способы сделать это были бы:
- Используйте kubernetes namespaces — Распределение каждого пространства имен для члена команды или команды в целом и запустить ваши рабочие нагрузки внутри. Хотя это может очень хорошо работать для небольших команд или отдельных лиц, им становится трудно управлять, поскольку количество пространств имен увеличивается с увеличением количества команд/членов, использующих кластер Неиспользуемые пространства имен, масштабировать кластер и так далее. Чтобы упростить это, есть такие инструменты, как Okteto Сохраняя вас в здравом уме, работая над всем, что вам нужно.
Или, если вам удалось получить доступ к отдельному пространству имен для себя, вы также можете использовать такие вещи, как развертывание свопа и развертывание прокси из Телеприз Эффективно позволяет вам разрабатывать свой сервис локально в вашей системе.
- Используйте одно имена пространства имен с заголовками и оформлением — Хотя одно пространство имен может использоваться несколькими разработчиками, все может стать сложным, особенно если несколько разработчиков изменяют одну и ту же сервис одновременно. Таким образом, один разработчик, изменяющий что -то, в свою очередь приведет к неожиданным результатам для другого разработчика, поскольку изоляции нет.
Вот где заголовки приходят на помощь. Если вы используете инструмент, такой как Предварительный просмотр сервиса или Мост для Kubernetes , это именно то, что они делают. Они используют коляску, как посланник, чтобы сделать маршрутизацию в другом случае услуги в зависимости от заголовков, используемых в запросах. Это мощно, потому что все, что вам нужно, это одно пространство имен для всего, не блокируя какого -либо разработчика от каких -либо изменений, которые они хотели бы.
Или, если ничего из этого не работает для вас, и вам нужен полный контроль, вы можете раскрутить кластеры Kubernetes локально и работать с ним с помощью таких инструментов, как Наклон или Skaffold Анкет Выбор снова ваш в зависимости от того, что вы хотите сделать.
Как я могу заниматься инженерной надежностью сайта (SRE) в моем кластере K8?
В отличие от того, что думает большинство людей, инженерная инженерия сайта (SRE) охватывает широкий спектр видов деятельности, которые также включают в себя такие вещи, как мониторинг здоровья системы, события регистрации, обработка масштабируемости, реагирование на инциденты/сбои своевременно и организовано, строительство комплекса распределено Системы и так далее, что есть целый веб -сайт, на котором Google рассказывает о SRE здесь .
И даже если все это требуется конкретно, если ваш вариант использования имеет критическое значение SLA, многие из них отключены от вас, если вы используете управляемые кластеры Kubernetes (например, GKE, AKS, EKS и т. Д.) Накрыть с конца. Например, в случае GKE Google управляет мастерами, и если вы подписаны на канал обновления, они отправляют вам периодические обновления с последними функциями как из GKE, так и в версиях Upstream, помогают вам управлять журналом, мониторингом и другими операциями с Google Cloud Operations Suite (ранее Steckdriver) и так же, помогая вам быстро начать.
В дополнение к этому, есть много удивительных инструментов, которые помогают с разными проблемами SRE по -своему. Например, вы можете использовать Прометей Как ваша база данных для очистки и хранить метрики временных рядов, Графана Чтобы управлять вашим мониторингом, Fluentd или Локи Чтобы сделать агрегацию журнала и условную фильтрацию, Opentelemetry для инструмента и выявления метрик в вашем приложении, Jaeger Чтобы сделать распределенную трассировку, Велеро Управлять резервными копиями и отказами, и этот список длинный, поскольку мы видим разные инструменты, удовлетворяющие различные проблемы в SRE.
Мы поговорим больше об этом в нашем следующем посте в блоге.
Есть ли приборная панель, которую я могу использовать для визуализации и управления своими кластерами?
Великая новость в том, что их довольно много.
- Некоторые распределения Kubernetes поставляются со своими собственными По умолчанию пользовательская доска UI Предоставление вам всей базовой информации и управления, которые вам нужны с вашим кластером. Но обратите внимание, что это не может быть включено по умолчанию по соображениям безопасности.
- Вы также можете использовать приборную панель, предоставленную вашим облачным провайдером. В случае GKE есть отличная панель панели, где вы можете свернуть в каждый ресурс и управлять им, используя предоставленные вам параметры, которые действительно удобны, когда вы хотите сделать что -то очень быстро.
- Или у вас также может быть удивительный инструмент, такой как Октант Позаботьтесь об этом для вас. Предположим, что это как пользовательский интерфейс для вашего клиента Kubectl.
Есть еще больше инструментов, таких как Wealscope И еще больше инструментов, таких как эти . Просто сделайте то, что дает вам больше видимости и контроля над своим кластером с отличным удобством для удобства использования, и вы должны быть полезны.
Но для операций пользователей Power мы всегда рекомендуем отправиться в Kubectl, так как это единственный инструмент, который используется почти всеми клиентами, чтобы взаимодействовать с сервером API Kubernetes.
Мне нужна сервисная сетка?
Сервисная сетка получила большую популярность в наши дни, особенно после таких лидеров, как Линкерд , Istio и Консул Все они продемонстрировали другой способ заниматься сетевым взаимодействием, авторизацией, журналом, инструментами, A/B -тестированием, MTL и большим количеством колясок без необходимости изменения кода приложения.
В то время как сервисная сетка действительно мощная, не каждый вариант использования может понадобиться, особенно если у вас есть очень мало услуг для управления.
Добавление сервисной сетки потребуется как плоскость управления, так и плоскость данных, чтобы настроить с прокси, вводимыми в качестве колясок, чтобы сделать тяжелую работу для вас. Хотя это может показаться сложным для начала, преимущества могут быть реализованы, как только увеличивается количество услуг, которые вы управляете, и это происходит, когда вы получите все его награды.
Также однажды SMI Spec широко поддерживается всеми поставщиками сетей (уже есть хорошая поддержка), она обеспечит соблюдение большой стандартизации с помощью экосистемы сервисной сетки, избегая необходимости связать с реализацией. Обратите внимание, что коляска может всегда быть хорошо поддерживается с различными инструментами, которые вы используете с вашим приложением. Например, добавление коляска вместе с вашей базой данных или очередью событий может работать или не работать в зависимости от используемого протокола.
Но в целом, у него очень многообещающе, особенно когда он постепенно принят. Итак, в итоге вам не нужна сетка, когда вы начинаете Но это здорово, что у вас будет значительное количество услуг.
Как я могу управлять аутентификацией и авторизацией для кластера и различных услуг внутри?
Существуют различные способы выполнения аутентификации и разрешения и могут варьироваться в зависимости от вашего контекста.
- Если вы хотите добавить аутентификацию или авторизацию в своем приложении/сервисе, вы можете использовать любой из механизмов, как вы считаете нужным, включая JWT с OAuth2, сеансами, файлами cookie или даже основными механизмами авторизации. Это потребовало бы написания логики в службе, а также использования LIBS, чтобы помочь вам в этом, когда это необходимо, и переделать ее для каждой услуги, где вам нужно, может быть трудно сделать, хотя определенно возможно. Чтобы сделать это просто, вы можете использовать такие инструменты, как Opa Как SDK, который может обобщить много вещей для вас.
В то время как OPA обладает поддержкой Голанга. Другие языки поддерживаются через Webassembly (Если вы хотите использовать OPA в качестве SDK)
Следующим способом добавления аутентификации/авторизации является использование колясок, если вы используете сервисную сетку или даже OPA в качестве коляска. Это может отключить аутентификацию/авторизацию от вашего приложения, оставляя только бизнес -логику внутри. Это позволяет вам просто вводить коляски, когда это необходимо, не беспокоясь о том, как оно может сломать ваше приложение. Боковые автоматы также могут такие вещи, как MTL, ограничение скорости и больше, если это необходимо для вашего применения.
Если вы хотите выполнить авторизацию уровня кластера, чтобы назначить роли, политики и элементы управления доступа, вы можете использовать любой ОПА ГАРДЕР или полагаться на RBAC Чтобы сделать работу для вас
Как поддержать гибридное облако с помощью нативного стека облаков?
Если вы находитесь на борту Kubernetes и остальной части нативного стека облаков, то поддержка гибридного облака может быть довольно простым, если вы не используете услуги/API в качестве специфического для облачного провайдера. Почти каждый большой облачный провайдер поддерживает управляемые Kubernetes в качестве сервиса, которую вы можете использовать, и если вы очень настойчивы, вы также можете раскрутить виртуальную машину, запустить в него свой кластер Kubernetes и управлять им самостоятельно.
Проекты, такие как Kubefed и Перекрестная плана Особенно полезны здесь, так как они помогают вам управлять и организовать кластеры и запросы, которые вы отправляете в разных облачных поставщиках, даже если они будут в разных регионах.
Хотя это лучшие инструменты для управления такими гибридными облачными сценариями, использование сервисной сетки также может помочь, если у вас есть многокрасная архитектура, такая как это или это Настройка помогает вам общаться в облачных провайдерах.
Какое время выполнения контейнера мне использовать?
Kubernetes поддерживает несколько контейнеров из -за принятия POD в качестве основной единицы планирования. В то время как Докер был одним из времен забега, Недавно он устарел в пользу лучших стандартов, таких как CRI, удаляя прокладку. Другой признанный время забега будет контейнер , или даже время выполнения низкого уровня, как runc . Вы можете прочитать больше о том, как они сравниваются в это post или даже это Анкет Как они упоминают, сегодня позвонит в Docker Engine, вызывая контейнер, который Inturn делает вызов Runc. Основное отличие заключается в том, что каждая во время выполнения имеет свой уровень абстракций, и, в конечном счете, самый низкий уровень иерархии будет LXC который основан на C или runc который основан на Голанге.
Несмотря на то, что вы можете использовать любую среду выполнения, которая поддерживает ваш вариант использования, а также поддерживается вашим облачным провайдером, это отличное начало, позволяющее этому было бы создать изображение, соответствующее OCI, чтобы вы могли использовать его с различным временем выполнения.
Каковы различия между CRI, CSI, CNI, SMI? Почему они имеют значение?
Все они представляют собой различные стандарты, предназначенные для того, чтобы избежать возможных сложностей и блокировки поставщиков, что позволяет иметь большой уровень взаимодействия.
- Cri (Интерфейс времени выполнения контейнера) — это стандарт, который помогает установить совместимость в рамках нескольких контейнеров, таких как контейнер и другие
- CSI (Интерфейс хранения контейнеров)-это стандарт, который помогает установить совместимость между несколькими поставщиками хранения, избегая необходимости иметь плагины в дереве в ядре. Таким образом, любой поставщик хранилища, который поддерживает CSI, может работать с Kubernetes без каких -либо проблем. Вы можете найти полный список поставщиков, поддерживающих CSI здесь
- CNI (Интерфейс контейнерных сетей)-это стандарт, который помогает установить совместимость между несколькими сетевыми решениями снова, избегая необходимости иметь плагины в дереве в ядре и разделение контейнерных сетей и выполнения. Есть много плагины и Забег которые поддерживают CNI сегодня.
- Smi (Сервисная сетчатая интерфейс) — это стандарт, который помогает установить совместимость между различными решениями сервисной сетки, такими как Linkerd, Istio, Consul и Подробнее Анкет Многие вещи, такие как контроль доступа к трафика, показатели, спецификации, разделение и т. Д. Также должны быть стандартизированы, чтобы пользователи не должны были заблокироваться к конкретному поставщику.
Как использовать Kubernetes на краю или на устройствах IoT?
Kubernetes стал настолько особенным, что теперь используется в различных видах среды, включая истребительные самолеты и малиновые PIS. Это предусматривает другой способ мышления, включая добавление поддержки для автономных операций и управления, что позволяет легкое распределение, которое может работать с ограниченным вычислением, работать в разных архитектурах процессоров и так далее.
Такие варианты использования становятся возможными благодаря таким проектам, как Kubeedge В K3S и Виртуальный кубелет Анкет Вы можете прочитать больше о том, как они питают край с помощью различных архитектур и компромиссов Здесь Анкет
Как начать с инфраструктуры в качестве кода?
Инфраструктура как код (IAC) не следует путать с управлением конфигурацией, хотя многие инструменты действительно имеют перекрывающиеся функции, предоставляющие функции из обоих миров.
Есть много инструментов, которые помогают вам преобразовать вашу инфраструктуру как код, наиболее заметный, из которых такие, как Терраформ , Pulumi , Ansible В Кукол и больше каждый из которых работает по -разному. Например, Terraform является декларативным и использует HCL (язык хашикор), в то время как Pulumi использует силу соответствующих языков программирования для выполнения своей работы.
Лучший способ начать с инфраструктуры в качестве кода — это постепенно идти на него, как обычно для любой миграции (если вы не начинаете с нуля). У вас также есть много ресурсов сообщества, которые могут помочь вам в процессе. Например, если вы используете Terraform, Реестр Terraform Много размещает много Terraform Modules от сообщества наряду с широкой поддержкой многих поставщиков, которые вы можете использовать. Интересно, что это также позволяет вам управлять всеми ресурсами, такими как развертывание, услуги и т. Д. В вашем кластере K8, если вы хотите сделать это терраформ. Итак, варианты бесконечны.
Но имеет смысл принять инфраструктуру в качестве кода, если вы тот, кто действительно использует Gitops, поскольку всегда важно, чтобы какие -либо предложенные изменения в вашей инфраструктуре должным образом рассмотрены соответствующими заинтересованными сторонами, а затем также следите за тем, чтобы вы избегали возможных конфликтов, используя Заблокированный файл состояния зарегистрировался в удаленном месте, как GCS или их соответствующий облачный сервис.
Если вы тот, кто захочет принять сухие принципы и захочет иметь поддержанный код, такой проект, как Terragrunt может помочь вам в этом.
Как мы только что видели, есть множество вариантов. Просто убедитесь, что вы правильно просмотрите свои изменения, прежде чем применять их, без которых это может вызвать катастрофические последствия.
Как мне делать CI/CD и Gitops с Kubernetes?
В последнее время в этой области было много удивительных проектов, настолько, что теперь существует Отдельный фундамент посвящен этому. В то время как такие проекты, как Дженкинс, были лидерами, у Cloud Carty World есть интересный набор проблем, которые необходимо решить, начиная даже с того, что они масштабируют ваш конвейер CI/CD и придерживались всех облачных принципов, которые мы обсуждали. Это то, что привело к росту проектов, таких как Tekton который родился из Кнайт , Jenkins-x (который также использует Tekton), Spinnaker и Gitlab ci С исполнителями Kubernetes, если вы находитесь на Gitlab, Действия GitHub Если вы находитесь на GitHub и т. Д., Дайте вам множество вариантов, таких как Fluxcd В Argocd и т. д., чтобы играть с.
При выполнении CI/CD на Kubernetes вы можете оставить бегуна для размещения вашим поставщиком услуг (например. Github/Gitlab размещены бегунами) или проведете своего собственного бегуна на кластерах K8, которые вы хотите. В любом случае, вы получите возможность масштабировать бегунов столько, сколько вам нужно, и запустить несколько трубопроводов, не блокируя других.
Ваш бегун может взять на себя работу по выявлению вашего кода или двоичных файлов из контроля версий, создания изображения из него, выдвигая его в реестр, а также, наконец, развернуть его в целевых кластерах после того, как все необходимые тесты и проверки выполняются.
В противном случае, способ, которым вы будете делать CI/CD в облачном нативном мире, аналогично любому другому конвейеру CI/CD.
Как мне сделать без сервера в Kubernetes?
Ну, у тебя всегда есть серверы. Без сервера, по моему мнению, — это не что иное, как абстракции, которые помогают вам забыть о серверах и всех сложностях и масштабируемости, которые позволяют вам сосредоточиться только на бизнес -логике, а Kubernetes позволяет вам также сделать это.
Вы можете выбрать такие проекты, как Кнайт , Openfaas или Kubeless Все это позволяет вам запускать без серверных рабочих нагрузок на Kubernetes. Но если вы используете облачных провайдеров, таких как GKE, они предоставляют свое собственное решение, например Облачный запуск что приближается к размещению вашей собственной платформы без сервера. В конечном счете, контейнеры вращаются вверх/вниз в вашем кластере в зависимости от необходимого им вычисления.
Как выбрать моего облачного провайдера?
Это огромная дискуссия, чтобы иметь и могут зависеть как от вашего варианта использования, так и от многих других факторов.
Но есть несколько вещей, которые нужно иметь в виду при выборе облачного провайдера.
Убедись, что:
- Они предоставляют все основные услуги, необходимые вам, чтобы помочь вам с вашим вариантом использования
- Они предоставляют услуги по доступной стоимости, даже когда вы увеличиваете/вниз
- У них есть отличная команда документов, поддержки и девелопереда
- Услуги, которые они предоставляют, не привязывают вас к своей платформе
- Они предоставляют услуги в большинстве регионов, в которых вы хотели бы обслуживать своих клиентов
- Они делают большой акцент на безопасность, производительность и удобство использования во всех своих предложениях
- У них есть SLA, чтобы предложить вам в зависимости от ваших потребностей, а также у них есть хороший послужной список для быстрого реагирования на возможные инциденты
- Они удовлетворяют всем требованиям соответствия, а также имеют необходимые сертификаты, чтобы доказать то же самое
- У них быстрая инновационная культура, которая может поддержать вас в ваших будущих предприятиях или при масштабировании
Это было бы лишь немногие из критериев для начала. Но, прежде всего, убедитесь, что вы попробовать сами, прежде чем пойти на это.
Где я могу узнать больше о местных проектах Cloud?
Лучшее место, чтобы проверить все это здесь: https://www.cncf.io/projects/
Несмотря на то, что это не охватывает все нативные проекты Cloud (поскольку он размещает только проекты в Фонде CNCF), это было бы отличным началом для вас в зависимости от домена, на котором вы хотите изучить больше.
Но если вы хотите изучить другие проекты, вы также можете посмотреть на местный ландшафт облака здесь: https://landscape.cncf.io/
Несмотря на то, что в этом списке есть много проектов, обратите внимание, что все они находятся на разных этапах зрелости, от песочницы до градуирования. Поэтому, пожалуйста, помните об этом, когда вы выбираете что -то, так как это может претерпевать значительные изменения с течением времени.
Есть ли какие -то тематические исследования, которые действительно могут помочь мне в реализации?
Да, и есть много. Для начала вы можете пройти через конкретные тематические исследования Kubernetes здесь и тематические исследования других проектов CNCF Здесь Анкет
Если вы хотите узнать больше о том, как конкретная организация использует Kubernetes, весьма вероятно, что она уже в YouTube. Просто дайте ему поиск, и вы можете найти их тонны. Или, если вы хотите узнать больше, все, что вам нужно сделать, это отправиться в CloudNativeCon | Kubecon и вы обнаружите, что много ораторов рассказывают об их опыте использования Kubernetes и всех доступных инструментов.
Как мне внести свой вклад в Kubernetes и Cloud Community?
Каждый кусочек вклада действительно имеет значение. И есть много способов, которыми вы можете помочь.
- Внести свой вклад в документы K8
- Внести свой вклад в K8 с исправлением ошибок, улучшениями, провал тестов, обратной связи и т. Д.
- Помогите сообществу, присоединившись к различным каналам в рамках Kubernetes Slack сообщество
- Внести свой вклад во все Проекты CNCF или проекты из Облачный местный ландшафт
- Напишите блоги, подобные этим, проводятся встречи, расскажите на конференциях о своем опыте и евангелизируйте свой лучший способ возможного
- Присоединяйтесь Фонд CNCF и поддерживает проекты прямо/косвенно
- Найти проблему, не решаемая кем -либо в сообществе? Предложить и разрабатывать собственное решение и внести свой вклад в сообщество
Есть много небольших способов вернуть. Маленький или большой не имеет значения. Каждый вклад имеет значение.
Надеюсь, это было информативно. Есть ли у вас какие -либо вопросы, которые я не рассмотрел в этом списке, или вы ищете какую -то помощь или инженерные консультации/консультации? Дай мне знать, обратився ко мне @techahoy Анкет Я буду использовать этот блог как живой документ и буду обновлять его с более полезными вопросами и как, когда я найду время.
Если это помогло, поделитесь этим со своими друзьями, держитесь вокруг и следуйте за нами, как это, каждую неделю. Увидимся скоро.
Оригинал: «https://dev.to/timecampus/infrastructure-engineering-diving-deep-2jdd»