Рубрики
Uncategorized

Шаблон контейнера коляска

Контейнер коляска направлен на добавление или увеличение функциональности существующего контейнера без изменения … Помечено с помощью Kubernetes, DevOps, шаблонов, новичков.

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

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

Боковой контейнер может иметь более простую идею ( log-Collector ), который собирает и хранит журналы контейнера приложения. Таким образом, как разработчик приложений, вам не нужно беспокоиться о сборе и хранении журналов. Вам нужно только записать журналы в местоположение (объем, общий между контейнерами), где контейнер для коляска может собирать их и отправлять для дальнейшей обработки или архивирования их.

Если мы продолжим с примера, который мы использовали для контейнера init; Мы могли бы создать контейнер по боковым целям, который периодически обновляет запуска git pull и обновляет репозиторий. Чтобы это работало, мы будем держать контейнер init для выполнения начального клона, и контейнер с боковой автоматом, который периодически (например, каждые 60 секунд) проверяет и вытаскивает изменения репозитория.

Чтобы попробовать это, убедитесь, что вы разбили Оригинальный репозиторий GitHub и используйте свою вилку в YAML ниже.

apiVersion: v1
kind: Pod
metadata:
  name: website
spec:
  initContainers:
    - name: clone-repo
      image: alpine/git
      command:
        - git
        - clone
        - --progress
        - https://github.com/peterj/simple-http-page.git
        - /usr/share/nginx/html
      volumeMounts:
        - name: web
          mountPath: "/usr/share/nginx/html"
  containers:
    - name: nginx
      image: nginx
      ports:
        - name: http
          containerPort: 80
      volumeMounts:
        - name: web
          mountPath: "/usr/share/nginx/html"
    - name: refresh
      image: alpine/git
      command:
        - sh
        - -c
        - watch -n 60 git pull
      workingDir: /usr/share/nginx/html
      volumeMounts:
        - name: web
          mountPath: "/usr/share/nginx/html"
  volumes:
    - name: web
      emptyDir: {}

Мы добавили контейнер под названием обновить к YAML выше. Он использует альпийский/git изображение, то же изображение, что и контейнер init, и запускает Смотреть -n 60 git pull командование

Смотреть Команда периодически выполняет команду. В нашем случае он выполняет git pull Команд и обновляет локальный репозиторий каждые 60 секунд.

Другое поле, которое мы не упоминали раньше, — WorkingDir Анкет Это поле установит рабочий каталог для контейнера. Мы устанавливаем это на /usr/share/nginx/html Как и то, где мы изначально клонировали репо для использования контейнера init.

Сохраните вышеупомянутый ямл до SideCar-Container.yaml и создать стручок с помощью Kubectl Apply -f SideCar -Container.yaml Анкет

Если вы бежите Kubectl Get Pods После того, как контейнер инициатор будет выполнен, вы заметите Готово Столб теперь показывает 2/2 . Эти цифры сразу же говорят вам, что в этом стручке есть в общей сложности два контейнера, и оба они готовы:

$ kubectl get po
NAME READY STATUS RESTARTS AGE
website 2/2 Running 0 3m39s

Если вы настроили порт вперед в стручок, используя Kubectl Port-Forward Pod/Веб-сайт 8000: 80 командовать и откройте браузер для http://localhost: 8000 , вы увидите ту же веб -страницу, что и раньше.

Мы можем открыть отдельное окно терминала и посмотреть журналы из обновить Контейнер внутри Веб -сайт Струк:

$ kubectl logs website -c refresh -f

Every 60.0s: git pull
Already up to date.

Смотреть Команда работает, и ответ от последнего git pull Команда была Уже в курсе Анкет Давайте внесем изменения в index.html В репозитории вы раздвоились.

Я добавил

Элемент и вот как обновляется index.html Файл выглядит так:


  
    Hello from Simple-http-page
  
  
    

Welcome to simple-http-page

Hello!

Далее вам нужно поставить это и посвятить его Мастер ответвляться. Самый простой способ сделать это — с веб -страницы GitHub. Откройте index.html на GitHub (я открываю https://github.com/peterj/simple-http-page/blob/master/index.html , но вы должны заменить мое имя пользователя Питерж С вашим именем пользователя или организацией, которую вы разделили репо) и щелкните значок карандаша, чтобы редактировать файл (см. Рисунок ниже).

Внесите изменение в index.html Файл и нажмите Комплект изменения кнопка, чтобы посвятить их в филиал. Далее смотрите вывод из обновить контейнер, и вы должны увидеть результат таким:

Every 60.0s: git pull

From https://github.com/peterj/simple-http-page
   f804d4c..ad75286 master -> origin/master
Updating f804d4c..ad75286
Fast-forward
 index.html | 1 +
 1 file changed, 1 insertion(+)

Приведенный выше выход указывает изменения в репозитории. GIT тянет обновленный файл в общий том. Наконец, обновить свой браузер, где у вас есть http://localhost: 8000 открыт, и вы заметите изменения на странице:

Вы можете внести больше изменений, и каждый раз страница будет обновляться в течение 60 секунд. Вы можете удалить POD, работая Kubectl Delete PO сайт .

Оригинал: «https://dev.to/peterj/sidecar-container-pattern-314»