Рубрики
Uncategorized

Kubernetes — декларативные проекты

Существует несколько способов ресурсов в Kubernetes. Лучше всего сделать это … Теги с Кубератусами, дежопами, контейнером, учебником.

Дорога в Кубернес Мастерство (4 части серии)

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

В этом посте я собираюсь исследовать варианты, чтобы использовать команды kubectl Imprative для загрузки декларативных файлов YAML. Вы можете найти полный код на Github Отказ

Прогон, репетиция

Они ключ к этому методу — Сухой запуск флаг. Это позволяет запускать данную команду только частично. Когда сочетается с -O Флаг Мы можем генерировать определение ресурса, не создавая ресурс.

jrun my-app --image nginx --dry-run=client -o yaml

Вывод Введите полноэкранный режим Выйдите из полноэкранного режима

Набор

Мы можем сделать этот шаг вперед и установить больше полей, которые не могут быть установлены на нормальном запуске или создании команды.

kubectl run my-app --image nginx --dry-run=client -o yaml \
  | kubectl set resources --limits="cpu=100m,memory=265Mi" --local -f - -o yaml

Вывод Введите полноэкранный режим Выйдите из полноэкранного режима

Все, что осталось, пишет вывод в файл и модифицировать его перед запуском декларативный флакон Применить Отказ

Загрузка на 2 уровня приложение

Давайте загрузить загрузку на 2 уровня. Первый уровень будет Nginx, обслуживающий статический контент из конфигурации, и второй уровень будет запущена json-сервер json-сервер.

mkdir objects

Отдохнуть

Сначала генерируйте определение развертывания Backenc, создав развертывание в режиме сухого прогона, устанавливая его ограничения ресурсов и, наконец, запись в файл yaml.

kubectl create deploy backend --image bluebrown/json-server --port 3000 --dry-run=client -o yaml \
    | kubectl set resources --limits="cpu=100m,memory=256Mi" --local  -f - -o yaml \
    | tee objects/backend.deploy.yaml

Вывод Введите полноэкранный режим Выйдите из полноэкранного режима

Внешний интерфейс

Для интерфейса мы следуем той же процедуре, но нам нужно редактировать сгенерированный файл yaml, чтобы объявить громкость монтажного монтажа конфигурации.

Configmap.

Конфигурация создана из файла HTML и устанавливает его в контейнер Nginx.

mkdir assets
vim assets/index.html




  
  
  
  Hello, Kubernetes
  


  

Создайте конфигурацию из этого файла.

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

kubectl create configmap frontend-data --from-file assets/index.html --dry-run=client -o yaml \
  | tee objects/frontend.configmap.yaml

Вывод Введите полноэкранный режим Выйдите из полноэкранного режима

Развертывание

Далее создайте развертывание, используя Nginx в качестве изображения.

kubectl create deploy frontend --image nginx --port 80 --dry-run=client -o yaml \
    | kubectl set resources --limits="cpu=100m,memory=256Mi" --local  -f - -o yaml \
    | tee objects/frontend.deploy.yaml

Теперь мы можем изменить генерируемую Frontend.deploy.yaml и добавить к нему раздел громкости.

vim frontend.deploy.yaml
...
containers:
- image: nginx
  ...
  volumeMounts:
  - name: frontend-data
    mountPath: /usr/share/nginx/html/
volumes:
  - name: frontend-data
    configMap:
      name: frontend-data
...

Полный файл Введите полноэкранный режим Выйдите из полноэкранного режима

Выставлять стручки

Наконец, мы создаем определения обслуживания для развертываний. Мы предоставляем 2 дополнительных флага для Backend Service, чтобы перенаправить порт 3000 из контейнера к порту 80.

kubectl expose -f objects/backend.deploy.yaml --port 80 --target-port 3000 --dry-run=client -o yaml \
  | tee objects/backend.svc.yaml

Вывод Введите полноэкранный режим Выйдите из полноэкранного режима

kubectl expose -f objects/frontend.deploy.yaml --dry-run=client -o yaml \
  | tee objects/frontend.svc.yaml

Вывод Введите полноэкранный режим Выйдите из полноэкранного режима

Применять

Давайте применим все файлы одновременно декларативным. Мы можем даже использовать сухой запуск по этой команде, чтобы проверить, все ли файлы все в порядке.

kubectl apply -f objects/ --dry-run=client -o yaml \
  | tee assets/dry-run.yaml

Вывод Введите полноэкранный режим Выйдите из полноэкранного режима

Если вывод в порядке, примените ресурсы в пространстве пространства развития разработки

kubectl create ns dev
kubectl apply -f objects/ -n dev
kubectl get all -n dev

Вывод Введите полноэкранный режим Выйдите из полноэкранного режима

Источник контролирует проект

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

.
├── assets
│   ├── dry-run.yaml
│   └── index.html
├── objects
│   ├── backend.deploy.yaml
│   ├── backend.svc.yaml
│   ├── frontend.configmap.yaml
│   ├── frontend.deploy.yaml
│   └── frontend.svc.yaml
└── README.md

Инициализируйте Git Repo и отслеживать/совершить файлы.

git init
git add . 
git commit -m "first commit"

Нажмите на свой любимый поставщик Git и назовите IT-инфраструктуру как код.

Вывод

Используя императивные команды, мы можем ускорить процесс разработки декларативных YAML-файлов и избегать многих связанных с людьми, таких как неверные опечатки в отступе.

Один генерируется общая котельная, файлы могут быть настроек до развертывания. Мы также можем исходным управлением файлами YAML.

Таким образом, мы получаем лучшее из обоих миров.

Примечание

Услуги не публикуются на NodePort или через контроллер входа. Это подлежит следующей теме. Вы все еще можете проверить страницы, запустив CURL с POD в том же пространстве имен.

Дорога в Кубернес Мастерство (4 части серии)

Оригинал: «https://dev.to/codingsafari/kubernetes-bootstrap-projects-imperative-1552»