Автор выбрал Фонд свободного и открытого исходного кода для получения пожертвования в рамках программы Написать в обмен на пожертвования.
Введение
С развитием облачных технологий инструменты разработки переходят в облако, и растет создание и принятие платформ облачных сред разработки (Cloud IDE). Облачные среды разработки доступны с любого современного устройства через веб-браузеры и предлагают множество преимуществ для сценариев совместной работы в реальном времени. Работа в облачной среде разработки обеспечивает единое рабочее и тестовое окружение для вас и вашей команды, минимизируя несовместимости платформ. Поскольку они нативно основаны на облачных технологиях, они могут использовать кластер для выполнения задач, что может значительно превзойти мощность и надежность одного компьютера для разработки.
Eclipse Theia – это расширяемая облачная среда разработки, работающая на удаленном сервере и доступная через веб-браузер. Визуально она спроектирована так, чтобы выглядеть и вести себя аналогично Microsoft Visual Studio Code, что означает, что она поддерживает множество языков программирования, имеет гибкую структуру и интегрированный терминал. То, что отличает Eclipse Theia от другого программного обеспечения для облачных сред разработки, – это его расширяемость; его можно модифицировать с помощью пользовательских расширений, которые позволяют создавать облачные среды разработки, подходящие под ваши потребности.
В этом руководстве вы настроите версию Eclipse Theia облачной среды IDE на вашем кластере Kubernetes DigitalOcean и опубликуете ее на вашем домене, обеспечив безопасность с помощью сертификатов Let’s Encrypt и требования аутентификации посетителя. В конце у вас будет запущен Eclipse Theia на вашем кластере Kubernetes, доступный через HTTPS и требующий входа посетителя.
Предварительные требования
- A DigitalOcean Kubernetes cluster with your connection configured as the
kubectl
default. Instructions on how to configurekubectl
are shown under the Connect to your Cluster step when you create your cluster. To create a Kubernetes cluster on DigitalOcean, read the Kubernetes Quickstart. - Установленный менеджер пакетов Helm 3 на вашем локальном компьютере. Завершите Шаг 1 руководства Как установить программное обеспечение на кластерах Kubernetes с помощью менеджера пакетов Helm 3.
- Установленный контроллер входящего Nginx на вашем кластере с помощью Helm, чтобы использовать ExternalDNS с ресурсами Ingress. Для этого следуйте инструкции Как настроить входящий Nginx на кластере Kubernetes DigitalOcean с использованием Helm.
- A fully registered domain name. This tutorial will use
theia.your_domain
throughout. You can purchase a domain name on Namecheap, get one for free on Freenom, or use the domain registrar of your choice.
Шаг 1 — Установка и Публикация Eclipse Theia
Для начала установите Eclipse Theia на свой кластер DigitalOcean Kubernetes. Затем вы сможете предоставить доступ к нему через выбранный вами домен, используя Nginx Ingress.
Поскольку вы создали два примера развертываний и ресурс как часть предварительных условий, вы можете свободно удалить их, выполнив следующие команды:
Для этого учебного пособия вы сохраните конфигурацию развертывания на своем локальном компьютере в файле с именем eclipse-theia.yaml
. Создайте его, используя следующую команду:
Добавьте следующие строки в файл:
Эта конфигурация определяет пространство имен, развертывание, службу и вход. Пространство имен называется theia
и будет содержать все объекты Kubernetes, связанные с Eclipse Theia, отделенные от остального кластера. Развертывание состоит из одного экземпляра образа Docker Theia с открытым портом 3000
в контейнере. Служба ищет развертывание и переназначает порт контейнера на обычный HTTP-порт, 80
, что позволяет получать доступ к Eclipse Theia внутри кластера.
Во входе содержится правило для обслуживания службы на внешнем порту 80
по вашему выбранному домену. В ее аннотациях вы указываете, что для обработки запросов должен использоваться контроллер входа Nginx. Не забудьте заменить theia.your_domain
на ваш выбранный домен, который вы настроили для балансировщика нагрузки кластера, затем сохраните и закройте файл.
Сохраните и закройте файл.
Затем создайте конфигурацию в Kubernetes, выполнив следующую команду:
Вывод будет похож на следующий:
Outputnamespace/theia created
ingress.networking.k8s.io/theia-next created
service/theia-next created
deployment.apps/theia-next created
Вы можете просмотреть создание контейнера Eclipse Theia, запустив:
Вывод будет выглядеть следующим образом:
OutputNAME READY STATUS RESTARTS AGE
theia-next-6f6b98dd4f-qknhb 1/1 Running 0 2m30s
Через некоторое время статус изменится на RUNNING
, что означает успешную установку Eclipse Theia в ваш кластер.
Перейдите на свой домен в браузере. Вы увидите интерфейс редактора Eclipse Theia по умолчанию:
Вы развернули Eclipse Theia на своем кластере Kubernetes DigitalOcean и открыли его на выбранном вами домене с помощью Ingress. Затем вы обеспечите безопасный доступ к развертыванию Eclipse Theia, включив аутентификацию при входе.
Шаг 2 — Включение аутентификации при входе для вашего домена
На этом этапе вы включите аутентификацию по имени пользователя и паролю для развертывания Eclipse Theia. Для этого сначала составите список допустимых комбинаций логинов с паролями, используя утилиту htpasswd
. Затем вы создадите секрет Kubernetes, содержащий этот список, и настроите Ingress для аутентификации посетителей в соответствии с ним. В результате ваш домен будет доступен только при вводе посетителем допустимой комбинации имени пользователя и пароля. Это предотвратит доступ гостей и других нежелательных посетителей к Eclipse Theia.
Утилита htpasswd
происходит из веб-сервера Apache и используется для создания файлов, в которых хранятся списки комбинаций логинов. Формат файлов htpasswd
представляет собой одну комбинацию имя_пользователя:хешированный_пароль
на строку, который ожидает контроллер входа Nginx, чтобы список соответствовал.
Сначала обновите кеш менеджера пакетов:
Затем установите htpasswd
на свою систему, выполнив следующую команду:
Вы будете хранить список в файле с именем auth
. Создайте его, выполнив:
Этот файл должен иметь имя auth
, потому что контроллер входа Nginx ожидает, что секрет будет содержать ключ с именем data.auth
. Если его нет, контроллер вернет HTTP 503 статус Сервис недоступен
.
Добавьте комбинацию имени пользователя и пароля в auth
, выполнив следующую команду:
Не забудьте заменить имя_пользователя
на ваше желаемое имя пользователя. Вам будет предложено ввести сопровождающий пароль, и комбинация будет добавлена в файл auth
. Вы можете повторить эту команду для добавления стольких пользователей, сколько вам нужно.
Примечание: Если на системе, с которой вы работаете, не установлен htpasswd
, вы можете вместо этого использовать версию в Docker.
Вам нужно будет установить Docker на своем компьютере. Для инструкций, как это сделать, посетите официальную документацию.
Выполните следующую команду для запуска Docker-версии:
Не забудьте заменить <username>
на имя пользователя, которое вы хотите использовать. Вас попросят ввести пароль. Хэшированная комбинация для входа будет выведена на консоль, и вам нужно будет вручную добавить ее в конец файла auth
. Повторите этот процесс для стольких входов, сколько вы хотите добавить.
Когда закончите, создайте новый секрет в Kubernetes с содержимым файла, запустив следующую команду:
Вы можете увидеть секрет с помощью:
Вывод будет выглядеть так:
Затем вам нужно отредактировать вход, чтобы он использовал секрет. Откройте конфигурацию развертывания для редактирования:
Добавьте выделенные строки в ваш файл:
Сначала в аннотации auth-type
вы указываете, что тип аутентификации – basic
. Это означает, что Nginx потребует от пользователя ввести имя пользователя и пароль. Затем в auth-secret
вы указываете, что секрет, который содержит список допустимых комбинаций, – theia-basic-auth
, который вы только что создали. Оставшаяся аннотация auth-realm
указывает сообщение, которое будет показано пользователю в качестве объяснения того, почему требуется аутентификация. Вы можете изменить сообщение, содержащееся в этом поле, по своему усмотрению.
Сохраните и закройте файл.
Чтобы распространить изменения на ваш кластер, выполните следующую команду:
Вы увидите вывод:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Перейдите на свой домен в браузере, где вас теперь попросят войти в систему.
Вы включили базовую аутентификацию при входе на свой вход, настроив его на использование секрета, содержащего хешированные комбинации имени пользователя и пароля. В следующем шаге вы дополнительно обеспечите безопасность доступа, добавив TLS-сертификаты, чтобы трафик между вами и вашим развертыванием Eclipse Theia оставался зашифрованным.
Шаг 3 — Применение сертификатов HTTPS Let’s Encrypt
Затем вы обеспечите защиту вашей установки Eclipse Theia, применив сертификаты Let’s Encrypt к вашему входу, который Cert-Manager автоматически создаст. После завершения этого шага ваша установка Eclipse Theia будет доступна через HTTPS.
Откройте eclipse-theia.yaml
для редактирования:
Добавьте выделенные строки в ваш файл, убедившись, что замените заполнитель домена на свой собственный:
Сначала вы указываете ClusterIssuer letsencrypt-prod
, который вы создали в рамках предварительных требований, как издателя, который будет использоваться для предоставления сертификатов для этого входа. Затем в разделе tls
вы указываете точный домен, который должен быть защищен, а также имя для секрета, который будет содержать эти сертификаты.
Сохраните и закройте файл.
Примените изменения к вашему кластеру, запустив следующую команду:
Вывод будет выглядеть следующим образом:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Потребуется несколько минут для предоставления и полного применения сертификатов. Вы можете отслеживать прогресс, наблюдая за выводом следующей команды:
Когда она завершится, конец вывода будет выглядеть примерно так:
Output...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal GeneratedKey 42m cert-manager Generated a new private key
Normal Requested 42m cert-manager Created new CertificateRequest resource "theia-prod-3785736528"
Normal Issued 42m cert-manager Certificate issued successfully
Обновите свой домен в браузере. Вы увидите зеленый замочек, отображаемый на крайней левой стороне строки адреса, что означает, что соединение безопасно.
Вы настроили Ingress на использование сертификатов Let’s Encrypt, тем самым обеспечив более высокий уровень безопасности для вашего развертывания Eclipse Theia. Теперь вы можете ознакомиться с интерфейсом пользователя Eclipse Theia по умолчанию.
Шаг 4 — Использование интерфейса Eclipse Theia
В этом разделе вы изучите некоторые функции интерфейса Eclipse Theia.
Слева в IDE есть вертикальная строка из четырех кнопок, открывающих наиболее часто используемые функции в боковой панели.
Эта панель настраиваема, поэтому вы можете перемещать эти виды в другой порядок или удалять их из панели. По умолчанию первый вид открывает панель “Проводник”, которая обеспечивает древовидную навигацию по структуре проекта. Здесь вы можете управлять своими папками и файлами — создавать, удалять, перемещать и переименовывать их при необходимости.
После создания нового файла через меню Файл вы увидите пустой файл, открытый в новой вкладке. После сохранения вы сможете увидеть имя файла в боковой панели Проводника. Чтобы создать папки, щелкните правой кнопкой мыши на боковой панели Проводника и выберите Новая папка. Вы можете развернуть папку, щелкнув по ее имени, а также перетаскивать файлы и папки в верхние части иерархии, чтобы переместить их в новое место.
Следующий параметр предоставляет доступ к функциональности поиска и замены. После этого следующий предоставляет вид систем управления исходным кодом, которые вы можете использовать, такие как Git.
Следующий вид – это опция отладчика, который предоставляет все общие действия для отладки в панели. Вы можете сохранять конфигурации отладки в файле launch.json
.
Последний параметр позволяет просматривать и устанавливать расширения:
Центральная часть графического интерфейса пользователя – это ваш редактор, который вы можете разделить на вкладки для редактирования кода. Вы можете изменить вид редактора на сетку или на файлы рядом. Как и все современные среды разработки, Eclipse Theia поддерживает подсветку синтаксиса для вашего кода.
Вы можете получить доступ к терминалу, нажав CTRL+SHIFT+`
, или щелкнув по Терминалу в верхнем меню и выбрав Новый терминал. Терминал откроется в нижней панели, и его рабочий каталог будет установлен в рабочее пространство проекта, которое содержит файлы и папки, отображаемые в боковой панели Проводника.
Если вы хотите удалить развертывание Eclipse Theia на вашем кластере, выполните следующую команду:
Вы изучили общий обзор интерфейса Eclipse Theia и ознакомились с некоторыми из наиболее часто используемых функций.
Заключение
Теперь у вас есть Eclipse Theia, универсальная облачная IDE, установленная на вашем кластере DigitalOcean Kubernetes. Вы обеспечили ее бесплатным сертификатом TLS Let’s Encrypt и настроили экземпляр для требования входа посетителя. Вы можете работать с исходным кодом и документами индивидуально или сотрудничать с вашей командой. Вы также можете попробовать создать свою собственную версию Eclipse Theia, если вам нужна дополнительная функциональность. Для получения дополнительной информации о том, как это сделать, посетите документацию Theia.