Kubernetes для приложений без сервера.

Русс Мак-Кендрик

 

Первая публикация на английском языке: январь 2018

Ссылка на продукт:

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

При подготовке этой книги были предприняты все усилия чтобы гарантировать точность представленной информации. Тем не менее, информация, содержащаяся в этой книге, продаётся без гарантии в явном или неявном виде. Ни авторы, ни Packt Publishing, ни их дилеры и дистрибьюторы не будут нести ответственность за любые убытки, вызванные или предположительно вызванные прямо или косвенно этой книгой.

Packt Publishing пыталась предоставить информацию о товарных знаках обо всех компаниях и продуктов, упомянутых в данной книге для надлежащего использования капиталов. Тем не менее, Packt Publishing не может гарантировать точность этой информации.

Опубликовано Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK

ISBN 978-1788620376

www.packtpub.com

2018-04-28

 Состав исполнителей

Издания на английском языке
Автор
Русс Мак-Кендрик
Рецензент
Редактор выпуска
Редактор
Редактор разработки содержания
Технический редактор
Литературный редактор
Координатор проекта
Корректор
Составитель указателя
Графика
Координатор производства
Изготовитель переплета

 Об авторе

Русс Мак-Кендрик

 Рецензент

 www.PacktPub.com

 Содержание

Предисловие
Для кого эта книга
Что охватывает эта книга
Как получить максимальную отдачу от этой книги
Загрузка примеров кода этой книги
Загрузка цветных изображений этой книги
Принятые соглашения
Будьте на связи
Отзывы
Опечатки
Незаконное тиражирование
Вопросы
Глава 1. Ландшафт без серверов
Работа без сервера и Функции в качестве Служб
Домашние питомцы, стадные животины, цыплята, насекомые и снежинки
Домашние питомцы
Стадные животины
Цыплята
Насекомые
Снежинки
Суммируем
Работа без серверов и насекомые
Предложения общедоступных облачных ресурсов
AWS Lambda
Предварительные требования
Создание функции Lambda
Функции Microsoft Azure
Предварительные требования
Создание приложения функции
Инструментарий работы без сервера
Решаемые задачи работой без сервера и Функциями в качестве Служб
Выводы
Глава 2. Введение в Kubernetes
Краткое изложение истории Kubernetes
Control groups
lmctfy
Borg
Седьмой проект
Обзор Kubernetes
Компоненты
Поды и службы
Рабочие нагрузки
ReplicaSet
Развёртывания
StatefulSets
Варианты применения Kubernetes
Ссылки
Выводы
Глава 3. Локальная установка Kubernetes
Про Minikube
Установка Minikube
macOS 10.13 High Sierra
Windows 10 Professional
Ubuntu 17.04
Гипервизоры
Запуск Minikube
Команды Minikube
Останов и удаление
Окружение
Доступ виртуальной машины и журналы
Hello world
Инструментальная панель
Командная строка
Ссылки
Выводы
Глава 4. Введение в функционирование Kubeless
Установка Kubeless
Кластер Kubernetes Kubeless
Клиент командной строки
macOS 10.13 High Sierra
Windows 10 Professional
Ubuntu 17.04
Веб- интерфейс Kubeless
Обзор Kubeless
Итак, что такое Kubeless?
Кто делает Kubeless?
Команды Kubeless
Hello world
Базовый пример
Пример чтения данных
Пример Twitter
API Twitter
Добавление секретного кода в Kubernetes
Функция Twitter
Подключаемый модуль serverless Kubeless
Выводы
Глава 5. Применение Funktion для приложений без серверов
Введение в Funktion
Установка и настройка Funktion
Клиент командной строки
macOS 10.13 High Sierra
Windows 10 Professional
Ubuntu 17.04
Запуск кластера Kubernetes из одного узла
Самораскрутка Funktion
Развёртывание примера функции
Потоки Twitter
Выводы
Глава 6. Установка Kubernetes в облаке
Запуск Kubernetes в DigitalOcean
Создание Droplets
Развёртывание Kubernetes при помощи kubeadm
Удаление кластера
Запуск Kubernetes в AWS
Приступая к установке
Запуск кластера с помощью kube-aws
Sock Shop
Удаление кластера
Запуск Kubernetes в Microsoft Azure
Подготовка инструментов командной строки Azure
Запуск кластера AKS
Sock Shop
Удаление кластера
Запуск Kubernetes в платформе Google Cloud
Sock Shop
Исполнение Kubeless
Удаление кластера
Выводы
Глава 7. Apache OpenWhisk и Kubernetes
Обзор Apache OpenWhisk
Локальная работа с Apache OpenWhisk
Установка Vagrant
Выгрузка и настройка Apache OpenWhisk
Установка клиента Apache OpenWhisk
Hello world
Работа с Apache OpenWhisk в Kubernetes
Развёртывание OpenWhisk
CouchDB
Redis
Шлюз API
ZooKeeper
Kafka
Контроллер
Вызывающий модуль
NGINX
Настройка OpenWhisk
Hello world
Выводы
Глава 8. Запуск приложение при помощи Fission
Обзор Fission
Установка предварительно необходимого
Установка Helm
Установка Fission CLI
Локальная работа с Fission
Запуск Fission с помощью Helm
Работа посредством вывода
Запуск первой функции
Гостевая книга
Команды Fission
Команда функции Fission
Команда create
Опция get
Команды list и getmeta
Команда logs
Команда update
Команда delete
Команды среды fission
Команда create
Команды list и getmeta
Команда delete
Работа с Fission в облаке
Запуск кластера Kubernetes
Установка Fission
Гостевая книга
Ещё немного примеров
Weather
Slack
Whales
Выводы
Глава 9. Взгляд на OpenFaaS
Введение в OpenFaaS
Локальная работа с OpenFaaS
Клиент командной строки OpenFaaS
Docker
Запуск кластера Minikube
Установка OpenFaaS с помощью Helm
Hello world!
UI и хранилище OpenFaaS
Prometheus
Выводы
Глава 10. Обсуждение решений без серверов
Практические приёмы безопасности
Безопасность Kubernetes
Безопасность служб без сервера
OpenFaaS
Kubeless
Funktion
Apache OpenWhisk
Fission
Заключение
Мониторинг Kubernetes
Инструментальная панель
Облако Google
Microsoft Azure
Выводы
Глава 11. Работа с рабочими нагрузками без серверов
Эволюция программного обеспечения и платформ
Kubernetes
Инструменты работы без сервера
Kubeless
Apache OpenWhisk
Fission
OpenFaaS
Funktion
Дальнейшие разработки
Что дают Функции как Служба Kubernetes
Реперные точки
Базы данных
Хранилища
Выводы
Указатель

 Предисловие

За последние несколько лет стала одной из самых индивидуальных технологий; он был адаптирован в качестве платформы кластера контейнеров и оркестрации со стороны всех основных общедоступных поставщиков облачных решений, причём он быстро стал стандартом для всей индустрии.

Помимо этого Kubernetes является решением с открытым исходным кодом и у вас имеется прекрасная основа для размещения своей собственной Платформы в качестве Службы, или PaaS (Platform as a Service), у множества общедоступных и частных поставщиков; благодаря её архитектуре вы можете даже исполнять её на ноутбуке, причём вы получите состоятельную практику на всех ваших платформах.

Её архитектура делает её исключительной платформой для исполнения функций работающих без сервера. В этой книге мы взглянем на различные платформы, которые могут быть как развёрнуты, так и интегрированы с помощью Kubernetes, что означает что у вас будет не только PaaS, но также и надёжная платформа Функций в качестве Служб (FaaS, Function as a Service), исполняемая в вашей среде Kubernetes.

 Для кого эта книга

Эта книга в основном для инженеров по эксплуатации, архитекторов облачных решений, а также разработчиков , которые хотят размещать свои функции для работы без сервера в каком- то кластере Kubernetes.

 Что охватывает эта книга

Глава 1. Ландшафт без серверов объясняет что имеется в виду под работой без сервера. Кроме того, мы получим некоторый практический опыт исполнения функций, работающих без сервера в общедоступных облачных решениях, таких как AWS Lambda и Azure Functions.

Глава 2. Введение в Kubernetes обсуждает что такое Kubernetes, какие проблемы она решает, а также взглянем на предысторию, начиная с внутреннего инструмента в Google до локомотива разработок с открытым исходным кодом.

Глава 3. Локальная установка Kubernetes поясняет как получить практический опыт Kubernetes. Мы установим некий локальный кластер с единственным узлом Kubernetes при помощи Minikube и будем общаться с ним при помощи клиента командной строки.

Глава 4. Введение в функционирование Kubeless объясняет как запустить вашу первую функцию без сервера с помощью Kubeless когда Kubernetes поднят и исполняется локально.

Глава 5. Применение Funktion для приложений без серверов поясняет как применять Funktion для слегка иного приёма функций без сервера.

Глава 6. Установка Kubernetes в облаке охватывает запуск кластера в DigitalOcean, AWS, Google Cloud и Microsoft Azure после получения некоторого опыта локального применения Kubernetes.

Глава 7. Apache OpenWhisk и Kubernetes объясняет как запускать, настраивать и применять Apache OpenWhisk, безсерверную платформу, изначально разработанную IBM, при помощи нашего только что запущенного в облаке кластера Kubernetes.

Глава 8. Запуск приложение при помощи Fission охватывает развёртывание Fission, популярную безсерверную инфраструктуру для Kubernetes совместно с несколькими примерами функций.

Глава 9. Взгляд на OpenFaaS в то время как она является в первую очередь инфраструктурой Функций в качестве Служб для Docker, также имеется возможность развёртывать её поверх Kubernetes.

Глава 10. Обсуждение решений без серверов обсуждает наилучшие практические приёмы безопасности, а также того как вы можете осуществлять мониторинг вашего кластера Kubernetes.

Глава 11. Работа с рабочими нагрузками без серверов объясняет насколько быстро эволюционирует и как вы можете её придерживаться. Вы также обсудите какие инструменты вам следует применять и зачем вам могут понадобиться работающие без сервера функции Kubernetes.

 Как получить максимальную отдачу от этой книги

Операционные системы

  • macOS High Sierra

  • Ubuntu 17.04

  • Windows 10 Professional

Программное обеспечение

На протяжении этой книги мы установим различное программное обеспечение; каждый из этих инструментов будет иметь инструкции по установке и подробности его требований в соответствующих главах. Заметим,что не смотря на то, что будут предоставлены инструкции для систем Windows, большая часть инструментов, которые мы будем использовать, первоначально были разработаны для исполнения в первую очередь в системах на основе Linux/ Unix, таких как Ubuntu 17.04 и macOS High Sierra и эта книга предпочитает такие системы. Хотя на момент написания этой книги и были предприняты все усилия для проверки того, что все эти инструменты работают под системами на основе Windows, поскольку некоторые из этих инструментов имеют экспериментальное построение, мы не можем гарантировать, что они продолжат работать в обновлённых системах и по этой причине я рекомендую применять некую систему на основе Linux- или Unix-.

Оборудование

  • Требования систем Windows 10 Professional и Ubuntu 17.04

    • Системы с применением процессоров (ЦПУ), запущенных в производство в 2011 или позже с частотой ядра 1.3ГГц или выше, исключая процессоры Intel Atom или процессоры AMD на базе микроархитектур Llano и Bobcat.

    • Минимально 4 ГБ ОЗУ с рекомендацией 8 ГБ или более

  • Требования системы Apple Mac

    • iMac: конца 2009 или более нового.

    • MacBook/MacBook (Retina): конца 2009 или более нового.

    • MacBook Pro: середины 2010 или более нового.

    • MacBook Air: конца 2010 или более нового.

    • Mac mini: середины 2010 или более нового.

    • Mac Pro: середины 2010 или более нового.

Доступ, по крайней мере, к одной из следующих общедоступных облачных служб

 Загрузка примеров кода этой книги

Вы можете выгрузить все файлы примеров кода для данной книги из своей учётной записи www.packtpub.com. Если вы приобрели эту книгу в ином месте, будьте добры, пройдите в www.packtpub.com/support и зарегистрируйтесь чтобы иметь эти файлы высланные непосредственно вам по электронной почте.

Вы можете выгрузить все файлы кодов пройдя следующие шаги:

  1. Зайдите зарегистрированным пользователем на www.packtpub.com.

  2. Выберите закладку SUPPORT.

  3. Кликните по Code Downloads & Errata.

  4. Введите название нужной вам книги в блоке Search и следуйте появляющимся на экране инструкциям.

После того, как необходимые файлы выгружены, убедитесь что вы раззиповали или раскрыли их в нужную папку при помощи самой последней версии:

  • WinRAR/7-Zip для Windows.

  • Zipeg/iZip/UnRarX для Mac.

  • 7-Zip/PeaZip для Linux.

Пакет кода также размещён на GitHub по адресу https://github.com/PacktPublishing/Kubernetes-for-Serverless-Applications. Также у нас имеются и другие пакеты кода из нашего богатого каталога книг и видео, доступные по адресу https://github.com/PacktPublishing/. Следите за изменениями!

 Загрузка цветных изображений этой книги

Мы дополнительно снабжаем вас файлом PDF, который содержит цветные изображения экранных снимков/ схем, использованных в данной книге. Цветные изображения помогут вам лучше понять изменения в выводе. Вы можете загрузить этот файл по адресу: https://www.packtpub.com/sites/default/files/downloads/KubernetesforServerlessApplications_ColorImages.pdf.

 Соглашения

В данной книге вы найдёте ряд текстовых стилей, которые делают разницу между различными видами информации. Здесь мы приводим некоторые примеры этих стилей и объяснение их назначения.

CodeInText указывает кодовые слова в тексте, имена таблиц базы данных, имена папок, имена файлов, расширения файлов, имена путей, модели URL-адресов, ввод пользователя, и регулировки Twitter. Вот некий пример: "Это содержит отдельный файл с названием index.html".

Блок кода устанавливается следующим образом:


apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: cli-hello-world
  labels:
    app: nginx
 	   

Если вы желаете привлечь внимание к определённой части блока кода,соответствующие строки или элементы выделяются жирным:


apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: cli-hello-world
  labels:
    app: nginx
 	   

Любой ввод командной строки или её вывод записываются следующим образом:


$ brew cask install minikube
 	   

Жирно: указывает новый термин, важное слово которые вы видите на экране, например, в меню или блоках диалогов появляются именно так. Вот пример: "Внизу данной страницы у вас будет кнопка, которая позволит вам создать Access Token and Access Token Secret для вашей учётной записи.".

[Замечание]Замечание

Предостережения или важные замечания появляются в блоках подобных этому.

[Совет]Совет

Советы и ловкие приёмы возникают таким образом.

 Будьте на связи

Обращения наших читателей всегда приветствуются.

Обычная обратная связь: Пошлите электронное письмо на адрес feedback@packtpub.com с упоминанием заголовка книги в теме вашего сообщения. Если у вас имеются вопросы относительно любых сторон данной книги, обратитесь, пожалуйста, по адресу questions@packtpub.com.

Ошибки: Хотя мы и предприняли все меры чтобы гарантировать точность содержимого, ошибки могут иметь место. Если вы обнаружили ошибку в данной книге, мы будем вам признательны если вы сообщите нам о ней. Посетите, пожалуйста, www.packtpub.com/submit-errata, выбрав вашу книгу, кликнув на ссылку Errata Submission Form, и заполнив подробности найденной вами ошибки.

Пиратство: Если вы столкнётесь с какой-либо незаконной копией наших работ в любой форме в Интернете, пожалуйста, предоставьте нам сразу адрес местонахождения или имя веб-сайта, чтобы мы могли принять меры. Пожалуйста, обратитесь по адресу copyright@packtpub.com со ссылкой на материалы содержащие признаки нарушения авторских прав. {Прим. пер.: Согласно закону об авторском праве РФ, авторские права на перевод принадлежат авторам этого перевода. Данным переводом, по нашему мнению, мы служим популяризации основных стратегических направлений развития тем Packt. В случае наличия конструктивных предложений, готовы к тесному сотрудничеству.}.

Если вы желаете стать нашим автором: Если у вас существует тема, в которой у вас имеется опыт и вы заинтересованы либо в написании, либо во вкладе в книгу, обратитесь к руководству по адресу authors.packtpub.com.

 Отзывы

Оставляйте, пожалуйста, отзывы. Если вы прочли и воспользовались данной книгой, почему бы вам не оставить отзыв на том сайте, на котором вы её приобрели? Потенциальные читатели затем смогут увидеть и применить ваше беспристрастное суждение чтобы принять решение о приобретении, мы в Packt сможем понять что вы думаете о нашем продукте, а наши авторы увидят обратную связь относительно своей книги. Мы заранее благодарим вас!

Для получения дополнительной информации о Packt посетите, пожалуйста packtpub.com.