O autor selecionou o Fundo de Software Livre e de Código Aberto para receber uma doação como parte do programa Escreva para Doações.
Introdução
Com as ferramentas de desenvolvimento migrando para a nuvem, a criação e adoção de plataformas de IDE (Ambiente de Desenvolvimento Integrado) em nuvem está crescendo. As IDEs em nuvem são acessíveis a partir de todos os tipos de dispositivos modernos através de navegadores da web, e elas oferecem numerosas vantagens para cenários de colaboração em tempo real. Trabalhar em uma IDE em nuvem proporciona um ambiente unificado de desenvolvimento e testes para você e sua equipe, ao mesmo tempo que minimiza incompatibilidades de plataforma. Por serem nativamente baseadas em tecnologias de nuvem, elas são capazes de fazer uso do cluster para realizar tarefas, o que pode superar significativamente a potência e confiabilidade de um único computador de desenvolvimento.
O Eclipse Theia é uma IDE em nuvem extensível que roda em um servidor remoto e é acessível a partir de um navegador da web. Visualmente, é projetado para se parecer e se comportar de forma semelhante ao Microsoft Visual Studio Code, o que significa que suporta muitas linguagens de programação, possui um layout flexível e um terminal integrado. O que diferencia o Eclipse Theia de outros softwares de IDE em nuvem é sua extensibilidade; ele pode ser modificado usando extensões personalizadas, que permitem criar uma IDE em nuvem adequada às suas necessidades.
Neste tutorial, você irá configurar a versão padrão da plataforma de IDE em nuvem Eclipse Theia no seu cluster Kubernetes da DigitalOcean e expô-la em seu domínio, protegida com certificados Let’s Encrypt e exigindo autenticação do visitante. No final, você terá o Eclipse Theia em execução no seu cluster Kubernetes disponível via HTTPS e exigindo que o visitante faça login.
Pré-requisitos
- 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. - O gerenciador de pacotes Helm 3 instalado em sua máquina local. Conclua o Passo 1 do tutorial Como Instalar Software em Clusters Kubernetes com o Gerenciador de Pacotes Helm 3.
- O controlador de Ingress Nginx instalado em seu cluster usando o Helm para poder usar o ExternalDNS com Recursos de Ingress. Para fazer isso, siga Como Configurar um Ingress Nginx no Kubernetes da DigitalOcean Usando o 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.
Passo 1 — Instalando e Expondo o Eclipse Theia
Para começar, você irá instalar o Eclipse Theia no seu cluster Kubernetes da DigitalOcean. Em seguida, você irá expô-lo em seu domínio desejado usando um Nginx Ingress.
Já que você criou duas implantações de exemplo e um recurso como parte dos pré-requisitos, você pode deletá-los livremente executando os seguintes comandos:
Para este tutorial, você irá armazenar a configuração da implantação em sua máquina local, em um arquivo chamado eclipse-theia.yaml
. Crie-o usando o seguinte comando:
Adicione as seguintes linhas ao arquivo:
Esta configuração define um Namespace, uma Implantação, um Serviço e um Ingress. O Namespace é chamado de theia
e conterá todos os objetos do Kubernetes relacionados ao Eclipse Theia, separados do resto do cluster. A Implantação consiste em uma instância da imagem Docker do Theia com a porta 3000
exposta no contêiner. O Serviço procura pela Implantação e remapeia a porta do contêiner para a porta HTTP usual, 80
, permitindo acesso dentro do cluster ao Eclipse Theia.
O Ingress contém uma regra para servir o Serviço na porta 80
externamente em seu domínio desejado. Em suas anotações, você especifica que o Controlador de Ingress do Nginx deve ser usado para o processamento de solicitações. Lembre-se de substituir theia.seu_domínio
pelo seu domínio desejado que você apontou para o Balanceador de Carga do seu cluster, então salve e feche o arquivo.
Salve e saia do arquivo.
Em seguida, crie a configuração no Kubernetes executando o seguinte comando:
A saída será semelhante a esta:
Outputnamespace/theia created
ingress.networking.k8s.io/theia-next created
service/theia-next created
deployment.apps/theia-next created
Você pode assistir à criação do pod Eclipse Theia executando:
A saída será semelhante a esta:
OutputNAME READY STATUS RESTARTS AGE
theia-next-6f6b98dd4f-qknhb 1/1 Running 0 2m30s
Após algum tempo, o status mudará para RUNNING
, o que significa que você instalou com sucesso o Eclipse Theia no seu cluster.
Navegue até seu domínio no seu navegador. Você verá a interface gráfica padrão do editor Eclipse Theia:
Você implantou o Eclipse Theia no seu cluster Kubernetes da DigitalOcean e o expôs no seu domínio desejado com um Ingress. Em seguida, você garantirá o acesso seguro à sua implantação do Eclipse Theia ativando a autenticação de login.
Passo 2 — Ativando a Autenticação de Login Para o Seu Domínio
Neste passo, você habilitará a autenticação de nome de usuário e senha para sua implantação do Eclipse Theia. Você conseguirá isso primeiro criando uma lista de combinações de login válidas usando o utilitário htpasswd
. Em seguida, você criará um segredo do Kubernetes contendo essa lista e configurará o Ingress para autenticar visitantes de acordo com ela. No final, seu domínio só será acessível quando o visitante inserir uma combinação válida de nome de usuário e senha. Isso evitará que convidados e outros visitantes indesejados acessem o Eclipse Theia.
O utilitário htpasswd
vem do servidor web Apache e é usado para criar arquivos que armazenam listas de combinações de login. O formato dos arquivos htpasswd
é uma combinação username:hashed_password
por linha, que é o formato que o Controlador de Ingresso Nginx espera que a lista siga.
Primeiro, atualize o cache do gerenciador de pacotes:
Em seguida, instale o htpasswd
no seu sistema executando o seguinte comando:
Você irá armazenar a lista em um arquivo chamado auth
. Crie-o executando:
Este arquivo precisa ser nomeado auth
porque o Controlador de Ingresso Nginx espera que o segredo contenha uma chave chamada data.auth
. Se estiver faltando, o controlador retornará o status HTTP 503 Service Unavailable
.
Adicione uma combinação de nome de usuário e senha ao auth
executando o seguinte comando:
Lembre-se de substituir username
pelo nome de usuário desejado. Você será solicitado por uma senha correspondente e a combinação será adicionada ao arquivo auth
. Você pode repetir este comando para quantos usuários desejar adicionar.
Nota: Se o sistema em que você está trabalhando não tiver o htpasswd
instalado, você pode usar uma versão Dockerizada em vez disso.
Você precisará ter o Docker instalado em sua máquina. Para instruções sobre como fazer isso, visite a documentação oficial.
Execute o seguinte comando para executar uma versão dockerizada:
Lembre-se de substituir <nome de usuário>
pelo nome de usuário que deseja usar. Você será solicitado a fornecer uma senha. A combinação de login hash será exibida no console e você precisará adicioná-la manualmente ao final do arquivo auth
. Repita este processo para quantos logins desejar adicionar.
Quando terminar, crie um novo segredo no Kubernetes com o conteúdo do arquivo executando o seguinte comando:
Você pode ver o segredo com:
A saída será semelhante a:
Em seguida, você precisará editar o Ingress para que ele use o segredo. Abra a configuração de implantação para edição:
Adicione as linhas destacadas ao seu arquivo:
Primeiro, na anotação auth-type
, você especifica que o tipo de autenticação é basic
. Isso significa que o Nginx exigirá que o usuário digite um nome de usuário e senha. Em seguida, em auth-secret
, você especifica que o segredo que contém a lista de combinações válidas é theia-basic-auth
, que você acabou de criar. A anotação auth-realm
restante especifica uma mensagem que será mostrada ao usuário como uma explicação do motivo pelo qual a autenticação é necessária. Você pode alterar a mensagem contida neste campo conforme desejar.
Salve e feche o arquivo.
Para propagar as alterações para o seu cluster, execute o seguinte comando:
Você verá a saída:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Navegue até seu domínio em seu navegador, onde agora será solicitado a fazer login.
Você ativou a autenticação básica de login no seu Ingress configurando-o para usar o segredo contendo as combinações de nome de usuário e senha criptografadas. No próximo passo, você irá garantir o acesso ainda mais, adicionando certificados TLS, para que o tráfego entre você e sua implantação do Eclipse Theia fique criptografado.
Passo 3 — Aplicando Certificados HTTPS Let’s Encrypt
Em seguida, você irá garantir a sua instalação do Eclipse Theia aplicando certificados Let’s Encrypt ao seu Ingress, os quais o Cert-Manager irá provisionar automaticamente. Após completar este passo, a sua instalação do Eclipse Theia estará acessível via HTTPS.
Abra o arquivo eclipse-theia.yaml
para edição:
Adicione as linhas destacadas ao seu arquivo, garantindo substituir o domínio de espaço reservado pelo seu próprio:
Primeiro, você especifica o ClusterIssuer letsencrypt-prod
que você criou como parte dos pré-requisitos como o emissor que será usado para provisionar certificados para este Ingress. Em seguida, na seção tls
, você especifica o domínio exato que deve ser protegido, assim como um nome para um segredo que irá conter esses certificados.
Salve e saia do arquivo.
Aplique as mudanças ao seu cluster executando o seguinte comando:
A saída será parecida com:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
Levará alguns minutos para os certificados serem provisionados e totalmente aplicados. Você pode acompanhar o progresso observando a saída do seguinte comando:
Quando terminar, o final da saída será semelhante a este:
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
Atualize seu domínio no navegador. Você verá um cadeado verde mostrado no lado mais à esquerda da barra de endereço, significando que a conexão é segura.
Você configurou o Ingress para usar certificados Let’s Encrypt, tornando assim sua implantação do Eclipse Theia mais segura. Agora você pode revisar a interface de usuário padrão do Eclipse Theia.
Passo 4 — Usando a Interface do Eclipse Theia
Nesta seção, você explorará algumas das características da interface do Eclipse Theia.
No lado esquerdo do IDE, há uma coluna vertical de quatro botões que abrem as funcionalidades mais comumente usadas em um painel lateral.
Esta barra é personalizável, então você pode mover essas visualizações para uma ordem diferente ou removê-las da barra. Por padrão, a primeira visualização abre o painel Explorer que fornece uma navegação semelhante a uma árvore da estrutura do projeto. Você pode gerenciar suas pastas e arquivos aqui — criando, excluindo, movendo e renomeando-os conforme necessário.
Após criar um novo arquivo através do menu Arquivo, você verá um arquivo vazio aberto em uma nova aba. Depois de salvar, você pode visualizar o nome do arquivo no painel lateral do Explorador. Para criar pastas, clique com o botão direito no painel lateral do Explorador e clique em Nova Pasta. Você pode expandir uma pasta clicando em seu nome, assim como arrastar e soltar arquivos e pastas para partes superiores da hierarquia para movê-los para uma nova localização.
A próxima opção fornece acesso à funcionalidade de busca e substituição. Seguindo-a, a próxima opção fornece uma visualização dos sistemas de controle de origem que você pode estar utilizando, como Git.
A próxima visualização é a opção de depuração, que fornece todas as ações comuns para depuração no painel. Você pode salvar configurações de depuração no arquivo launch.json
.
A opção final permite visualizar e instalar extensões:
A parte central da GUI é o seu editor, que você pode separar por abas para editar seu código. Você pode alterar sua visualização de edição para um sistema de grade ou para arquivos lado a lado. Como todas as IDEs modernas, o Eclipse Theia oferece destaque de sintaxe para o seu código.
Você pode acessar um terminal digitando CTRL+SHIFT+`
, ou clicando em Terminal no menu superior, e selecionando Novo Terminal. O terminal será aberto em um painel inferior e seu diretório de trabalho será configurado para o espaço de trabalho do projeto, que contém os arquivos e pastas mostrados no painel lateral do Explorador.
Se você deseja destruir a implantação do Eclipse Theia em seu cluster, execute o seguinte comando:
Você explorou uma visão geral de alto nível da interface do Eclipse Theia e revisou alguns dos recursos mais comumente usados.
Conclusão
Agora você tem o Eclipse Theia, um IDE em nuvem versátil, instalado em seu cluster Kubernetes da DigitalOcean. Você o segurou com um certificado TLS Let’s Encrypt gratuito e configurou a instância para exigir login do visitante. Você pode trabalhar em seu código-fonte e documentos com ele individualmente ou colaborar com sua equipe. Você também pode tentar construir sua própria versão do Eclipse Theia se precisar de funcionalidades adicionais. Para mais informações sobre como fazer isso, visite a documentação do Theia.