1. Visão geral
Como uma evolução do Container Registry, o Artifact Registry é uma central unificada para sua organização gerenciar imagens de contêiner e pacotes de linguagens (como Maven e NPM). Ele é totalmente integrado às ferramentas e aos ambientes de execução do Google Cloud e oferece suporte ao gerenciamento de dependências com base em linguagem para uso com ferramentas como npm e Maven. Dessa forma, é fácil integrar o Artifact Registry às ferramentas de CI/CD para configurar pipelines automatizados.
Neste laboratório, você vai conhecer alguns recursos disponíveis no Artifact Registry.
O que você vai aprender
Quais são os objetivos de aprendizado deste laboratório?
- Criar repositórios para contêineres e pacotes de linguagem
- Gerenciar imagens de contêiner com o Artifact Registry
- Configure o Maven para usar o Artifact Registry para dependências do Java
2. Configuração e requisitos
Configuração de ambiente personalizada
- Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.
- O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google Você pode atualizar a qualquer momento.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. normalmente você não se importa com o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, que normalmente é identificado como
PROJECT_ID
. Se você não gostar do ID gerado, poderá gerar outro ID aleatório. Como alternativa, você pode tentar o seu próprio e ver se ele está disponível. Ela não pode ser alterada após essa etapa e permanecerá durante a duração do projeto. - Para sua informação, há um terceiro valor, um Número de projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não será muito cara, se tiver algum custo. Para encerrar os recursos e não gerar faturamento além deste tutorial, exclua os recursos criados ou exclua o projeto inteiro. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
Configurar a gcloud
No Cloud Shell, defina o ID e o número do projeto. Salve-as como variáveis PROJECT_ID
e PROJECT_NUMBER
.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Ativar os Serviços do Google
gcloud services enable \
cloudresourcemanager.googleapis.com \
container.googleapis.com \
artifactregistry.googleapis.com \
containerregistry.googleapis.com \
containerscanning.googleapis.com
Conseguir o código-fonte
O código-fonte deste laboratório está localizado na organização GoogleCloudPlatform no GitHub. Clone-o com o comando abaixo e mude para o diretório.
git clone https://github.com/GoogleCloudPlatform/cloud-code-samples/
3. Como trabalhar com imagens de contêiner
Criar um repositório do Docker no Artifact Registry
O Artifact Registry oferece suporte ao gerenciamento de imagens de contêiner e pacotes de linguagens. Diferentes tipos de artefato exigem especificações distintas. Por exemplo, as solicitações de dependências do Maven são diferentes das solicitações de dependências do nó.
Para oferecer suporte a diferentes especificações de API, o Artifact Registry precisa saber qual formato você quer que as respostas da API sigam. Para fazer isso, crie um repositório e transmita a flag --repository-format
indicando o tipo de repositório desejado
No Cloud Shell, execute o seguinte comando para criar um repositório de imagens Docker:
gcloud artifacts repositories create container-dev-repo --repository-format=docker \
--location=us-central1 --description="Docker repository for Container Dev Workshop"
Clique em "Autorizar" se o comando de autorização do Cloud Shell aparecer.
Acesse o console do Google Cloud - Artifact Registry - Repositórios e observe o repositório do Docker recém-criado, chamado container-dev-repo
. Ao clicar nele, você verá que ele está vazio.
Configure a autenticação do Docker para o Artifact Registry
Ao se conectar ao Artifact Registry, as credenciais são necessárias para conceder acesso. Em vez de definir credenciais separadas, o Docker pode ser configurado para usar suas credenciais da gcloud sem problemas.
No Cloud Shell, execute o seguinte comando para configurar o Docker e usar a CLI do Google Cloud para autenticar solicitações ao Artifact Registry na região us-central1
.
gcloud auth configure-docker us-central1-docker.pkg.dev
O comando vai solicitar uma confirmação para alterar a configuração do Docker do Cloud Shell. Pressione Enter.
Conheça o aplicativo de exemplo
Um aplicativo de exemplo é fornecido no repositório git que você clonou em uma etapa anterior. Acesse o diretório Java e revise o código do aplicativo.
cd cloud-code-samples/java/java-hello-world
A pasta contém um exemplo de aplicativo Java que renderiza uma página da Web simples: além de vários arquivos irrelevantes para este laboratório específico, ela contém o código-fonte, na pasta src
, e um Dockerfile que usaremos para criar localmente uma imagem de contêiner.
Criar a imagem do contêiner
Antes de armazenar imagens de contêiner no Artifact Registry, você precisa criar uma.
Execute o comando a seguir para criar a imagem do contêiner e marcá-la corretamente para enviá-la ao repositório na próxima etapa:
docker build -t us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1 .
Envie a imagem do contêiner para o Artifact Registry
Execute o comando a seguir para enviar a imagem do contêiner ao repositório criado anteriormente:
docker push us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1
Revise a imagem no Artifact Registry
Acesse Console do Cloud – Artifact Registry – Repositórios.
Clique em container-dev-repo
e verifique se a imagem java-hello-world
está lá. Clique na imagem e observe a imagem marcada com tag1
. Você vai notar que a verificação de vulnerabilidades está em execução ou já foi concluída e que o número de vulnerabilidades detectadas está visível.
Clique no número de vulnerabilidades para ver a lista de vulnerabilidades detectadas na imagem, com o nome do boletim de CVE e a gravidade. Você pode clicar em VISUALIZAR em cada vulnerabilidade listada para obter mais detalhes:
4. Como trabalhar com pacotes de idiomas
Nesta seção, você vai aprender a configurar um repositório Java do Artifact Registry e fazer upload de pacotes para ele, usando esses repositórios em diferentes aplicativos.
Criar um repositório de pacotes Java
No Cloud Shell, execute o seguinte comando para criar um repositório de artefatos Java:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
Clique em "Autorizar" se o comando de autorização do Cloud Shell aparecer.
Acesse Artifact Registry - Repositórios no console do Google Cloud e observe o repositório Maven recém-criado, chamado container-dev-java-repo
. Ao clicar nele, você vai notar que ele está vazio.
Configurar a autenticação no Artifact Repository
Use o comando a seguir para atualizar o local conhecido do Application Default Credentials (ADC) com as credenciais da sua conta de usuário. Assim, o auxiliar de credenciais do Artifact Registry pode se autenticar usando essas credenciais ao se conectar a repositórios:
gcloud auth login --update-adc
Configurar o Maven para o Artifact Registry
Execute o comando a seguir na pasta java-hello-world
para abrir o Editor do Cloud Shell e adicionar a pasta do aplicativo ao espaço de trabalho:
cloudshell workspace .
Ative cookies de terceiros clicando em "O site está funcionando?" e selecione "Permitir cookies".
Depois que o navegador for recarregado, abra o Cloud Shell e execute o comando acima mais uma vez para carregar a pasta do aplicativo.
Abra o pom.xml no Cloud Shell Editor e clique em "Abrir editor".
Abra o terminal no editor do Cloud Shell e execute o seguinte comando para imprimir a configuração do repositório a ser adicionada ao seu projeto Java:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
e adicione as configurações retornadas às seções apropriadas no arquivo pom.xml
.
Visualização do editor do Cloud com terminal integrado:
Atualize a seção distributionManagement
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</repository>
</distributionManagement>
Atualizar a seção repositories
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
Atualize as extensões
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
Aqui está um exemplo do arquivo completo para sua referência. Certifique-se de substituir <PROJECT> pelo ID do projeto.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>hello-world</artifactId>
<packaging>jar</packaging>
<name>Cloud Code Hello World</name>
<description>Getting started with Cloud Code</description>
<version>1.0.0</version>
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
</parent>
<properties>
<java.version>1.8</java.version>
<checkstyle.config.location>./checkstyle.xml</checkstyle.config.location>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.2</version>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
</build>
<!-- The Spring Cloud GCP BOM will manage spring-cloud-gcp version numbers for you. -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>1.2.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-logging</artifactId>
</dependency>
</dependencies>
</project>
Faça upload do pacote Java para o Artifact Registry
Agora que o Artifact Registry está configurado no Maven, é possível usar o Artifact Registry para armazenar Jars Java para outros projetos da organização.
Execute este comando para fazer upload do pacote Java no Artifact Registry:
mvn deploy
Verifique o pacote Java no Artifact Registry
Acesse Console do Cloud - Artifact Registry - Repositórios. Clique em container-dev-java-repo
e verifique se o artefato binário hello-world
está lá:
5. Parabéns!
Parabéns, você concluiu o codelab.
Conteúdo abordado
- Repositórios criados para contêineres e pacotes de linguagens
- Imagens de contêiner gerenciadas com o Artifact Registry
- Configurou o Maven para usar o Artifact Registry para dependências do Java
Limpeza
Execute o comando a seguir para excluir o projeto.
gcloud projects delete $PROJECT_ID