Публикации с тегом «Docker»

Виталий Лещенко

Меняем Docker на ContainerD в качестве CRI для Kubernetes

Дамы и господа, Docker всё, расходимся. Шутка.

А если серьезно, то у нас есть примерно год, чтобы избавиться от Docker в качестве среды исполнения контейнеров в Kubernetes. В версии 1.20 (которая выйдет уже совсем скоро) будет объявлен устаревшим Docker. А в версии 1.23 его поддержка будет удалена вовсе. Чтобы в будущем не было проблем с обновлением кластера, надо потрудиться уже сейчас.

Менять мы его будем на ContainerD, т.к. под капотом у того же Docker как раз ContainerD и лежит. Надо лишь убрать всех посредников.

Читать дальше
Виталий Лещенко

Kubernetes. Часть 7: Как запустить Pod от имени gMSA в Kubernetes

Создаем учетную запись:

New-ADServiceAccount $serviceaccount `
  -DNSHostName $hostname `
  -PrincipalsAllowedToRetrieveManagedPassword $principals

Здесь:

  • $serviceaccount - имя учетной записи (gMSA)
  • $hostname - $serviceaccount.domain.com (имя учетной записи + имя домена)
  • $principals - Список компьютеров, имеющих права на получение пароля от очетной записи

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

Add-WindowsFeature RSAT-AD-PowerShell
Install-ADServiceAccount -Identity $serviceaccount
Test-ADServiceAccount -Identity $serviceaccount
Читать дальше
Виталий Лещенко

Kubernetes. Часть 6: Настройка GMSA для pod'ов и контейнеров для Windows

На github есть готовый скрипт, для развертывания всего необходимого.

Нам надо скачать 5 файлов:

Поместив все файлы на master выполняем скрипт:

./deploy-gmsa-webhook.sh --file deploy-gmsa.yml --overwrite --tolerate-master
Читать дальше
Виталий Лещенко

Kubernetes. Часть 4: Подключение Windows Server 2019 к Kubernetes кластеру в качестве рабочего узла

Для начала нам необходиом скачать 3 файла:

  1. Kubeclustervxlan.json
  2. KubeCluster.ps1
  3. KubeClusterHelper.psm1

Теперь отредактируем файл Kubeclustervxlan.json

    "ControlPlane" : {  // Contains values associated with Kubernetes control-plane ("Master") node
        "IpAddress" : "kubemasterIP",  // IP address of control-plane ("Master") node
        "Username" : "localadmin",  // Username on control-plane ("Master") node with remote SSH access  
        "KubeadmToken" : "token",  // Kubeadm bootstrap token
        "KubeadmCAHash" : "discovery-token-ca-cert-hash"  // Kubeadm CA key hash
    },

И последние 2 заклинания:

.\KubeCluster.ps1 -ConfigFile .\Kubeclustervxlan.json -install 
.\KubeCluster.ps1 -ConfigFile .\Kubeclustervxlan.json -join
Читать дальше
Виталий Лещенко

Kubernetes. Часть 3: Установка Kubernetes на Ubuntu 18.04

Отключаем swap

Перед тем, как начать, надо отключить swap. Редактируем /etc/fstab и удаляем там все что связано со swap'ом. Затем запускаем:

sudo swapoff -a

Сейчас мы готовы начать.

Установка kubelet kubeadm kubectl:

sudo apt-get update && sudo apt-get install -y apt-transport-https curl

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Читать дальше
Виталий Лещенко

Kubernetes. Часть 2: Установка Docker на Windows Server 2019

Так же, как и в случае с Linux, будем считать что у нас есть только что установленный Windows Server 2019 (1809). В случае, если это именно 2019, нам вполне достаточно Server Core.

(Add-WindowsFeature Containers).RestartNeeded

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

Далее:

Install-Module DockerMsftProvider -Force
Install-Package Docker -ProviderName DockerMsftProvider -Force

...


Читать дальше
Виталий Лещенко

Kubernetes. Часть 1: Установка Docker на Ubuntu 18.04 LTS

К сожалению, на момент написания статьи (4 декабря 2019) Windows-разработчику, желающему использовать Kubernetes, не получится обойтись без Linux. Всё потому, что мастер узел Kubernetes можно установить только на Linux.

Для начала нам надо установить сам Docker. Будем считать что у нас есть только что установленная Ubuntu 18.04.

sudo apt-get update

...
Читать дальше
Виталий Лещенко

Удаленное управление Docker с аутентификацией по сертификату и проверкой отзыва клиентского сертификата

Введение

Данный проект помогает реализовать TLS подключение к Docker Remote API с аутентификацией по сертификату с проверкой отзыва клиентского сертификата. Операционной системой на сервере является Windows Server 1803+.

Удаленное управление Docker

Для нужд удаленного управления Docker'ом, Docker умеет предоставлять веб-API. Это API может как вовсе не требовать аутентификации (что крайне не рекомендуется), так и использовать аутентификация по сертификату. Проблема заключается в том, что родная аутентификация по сертификату не предусматривает проверку отзыва сертификата. А это может стать проблемой.

Сборка Docker образа

Для сборки образа нам потребуется публичный сертификат центра сертификации (ca.cer), который будет выдавать сертификаты пользователям. Этот сертификат будет установлен в доверенные корневые центры сертификации контейнера, в котором будет запущен наш прокси. Установка его необходима для процедуры проверки сертификата.

Читать дальше
Виталий Лещенко

Docker для Windows. Установка.

Что такое Docker для Windows и как с этим жить?

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

Этот пост для тех, кто далек от мира Linux, кому интересен Docker для Windows, и, тех кто по какой-то причине до сих пор не вник в эту тему.

Под управлением Windows Server появился Docker лишь в Windows Server 2016. Появился он в крайне сыром виде. Почти ничего не умел и годился разве что "для посмотреть на чудо заморское". Позже выходили Windows Server version 1709, затем 1803. Все это время Docker рос. Рос-рос и вот, наконец, вышли Windows Server 2019 и Windows Server version 1809. Docker вырос. Конечно, он еще не умеет многого из того, что хотелось бы, но, того, что уже есть, достаточно для готового решения.

Читать дальше
Виталий Лещенко

Как спрятать ASP.NET Core приложение за Reverse Proxy так, чтобы не было больно?

Когда вы разрабатываете web-приложение, заранее зная, что оно будет находиться за балансировщиком нагрузки, следует учитывать ряд особенностей. Примером может служить запуск сайта в Docker кластере (например Swarm).

Что меняется?

Если ваше приложение попробует определить:

  • имя хоста,
  • протокол: http или https,
  • IP адрес клиента,
Читать дальше