O autor selecionou o Fundo de Software Livre e de Código Aberto para receber uma doação como parte do programa Write for DOnations.
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) na nuvem estão crescendo. As IDEs na nuvem são acessíveis a partir de todos os tipos de dispositivos modernos através de navegadores da web e oferecem inúmeras vantagens para cenários de colaboração em tempo real. Trabalhar em uma IDE na nuvem oferece um ambiente unificado de desenvolvimento e teste para você e sua equipe, enquanto minimiza incompatibilidades de plataforma. Por serem baseadas nativamente em tecnologias de nuvem, elas podem aproveitar o cluster para realizar tarefas, o que pode exceder significativamente a potência e confiabilidade de um único computador de desenvolvimento.
O Eclipse Theia é uma IDE na 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 maneira semelhante ao Microsoft Visual Studio Code, o que significa que suporta muitas linguagens de programação, tem um layout flexível e possui um terminal integrado. O que diferencia o Eclipse Theia de outros softwares de IDE na nuvem é sua extensibilidade; ele pode ser modificado usando extensões personalizadas, que permitem criar uma IDE na nuvem adequada às suas necessidades.
Neste tutorial, você configurará a versão padrão da plataforma de IDE em nuvem Eclipse Theia em seu cluster Kubernetes do DigitalOcean e a exporá 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 em 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. Complete o Passo 1 do tutorial Como Instalar Software em Clusters Kubernetes com o Gerenciador de Pacotes Helm 3.
- O Controlador de Ingresso Nginx instalado em seu cluster usando o Helm para usar o ExternalDNS com Recursos de Ingresso. Para fazer isso, siga Como Configurar um Ingresso Nginx no Kubernetes do 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.
Como você criou dois exemplos de implantações e um recurso como parte dos pré-requisitos, você pode excluí-los livremente executando os seguintes comandos:
Para este tutorial, você irá armazenar a configuração de 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 Ingresso. O Namespace é chamado theia
e conterá todos os objetos Kubernetes relacionados ao Eclipse Theia, separados do restante do cluster. A Implantação consiste em uma instância da imagem Docker Theia com a porta 3000
exposta no contêiner. O Serviço procura a Implantação e remapeia a porta do contêiner para a porta HTTP usual, 80
, permitindo acesso no-cluster ao Eclipse Theia.
O Ingresso 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 Ingresso 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, depois 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 do 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.
Acesse o 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 à implantação do Eclipse Theia ativando a autenticação de login.
Passo 2 — Habilitando 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 a 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 os visitantes de acordo com ela. No final, o seu domínio só será acessível quando o visitante inserir uma combinação válida de nome de usuário e senha. Isso impedirá 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 do 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 se chamar auth
porque o Controlador de Ingresso do 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 a fornecer uma senha acompanhante e a combinação será adicionada ao arquivo auth
. Você pode repetir este comando para quantos usuários desejar adicionar.
Observação: 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 <username>
pelo nome de usuário que deseja usar. Você será solicitado a fornecer uma senha. A combinação de login hash será escrita 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 fazê-lo usar 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 uma 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 acabou de ser criado. 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 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 que faça o 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 permaneça criptografado.
Passo 3 — Aplicando Certificados HTTPS Let’s Encrypt
Em seguida, você irá garantir a instalação do seu Eclipse Theia aplicando certificados Let’s Encrypt ao seu Ingress, que o Cert-Manager irá provisionar automaticamente. Após concluir este passo, 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 marcador de posição pelo seu próprio:
Primeiro, você especifica o letsencrypt-prod
ClusterIssuer 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 seguro, bem como um nome para um segredo que conterá esses certificados.
Salve e saia do arquivo.
Aplique as alterações 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 que os certificados sejam provisionados e totalmente aplicados. Você pode acompanhar o progresso observando a saída do seguinte comando:
Quando terminar, o final da saída se parecerá com isso:
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 seu 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 fila vertical de quatro botões que abrem as características 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 do Explorer que fornece 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.
Depois de criar um novo arquivo através do menu Ficheiro, você verá um arquivo vazio aberto em uma nova guia. Uma vez salvo, você pode ver 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, bem 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 pesquisa e substituição. A seguir, a próxima opção fornece uma visão dos sistemas de controle de origem que você pode estar usando, 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 guias para a edição do seu código. Você pode alterar a visualização da edição para um sistema de grade ou para arquivos lado a lado. Como todas as IDEs modernas, o Eclipse Theia suporta realce 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á definido para o espaço de trabalho do projeto, que contém os arquivos e pastas mostrados no painel lateral do Explorador.
Se desejar 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 algumas das funcionalidades mais comumente usadas.
Conclusão
Agora você tem o Eclipse Theia, uma IDE em nuvem versátil, instalada em seu cluster DigitalOcean Kubernetes. Você a segurou com um certificado TLS gratuito do Let’s Encrypt e configurou a instância para exigir um login do visitante. Você pode trabalhar em seu código-fonte e documentos individualmente ou colaborar com sua equipe. Você também pode tentar criar sua própria versão do Eclipse Theia se precisar de funcionalidades adicionais. Para obter mais informações sobre como fazer isso, visite a documentação do Theia.