1. Genel Bakış
Container Registry'nin gelişmiş hali olan Artifact Registry, kuruluşunuzun container görüntülerini ve dil paketlerini (Maven ve npm gibi) tek bir yerden yönetebilmesini sağlar. Google Cloud'un araçları ve çalışma zamanlarıyla tamamen entegredir. Ayrıca npm ve Maven gibi araçlarla kullanım için dile dayalı bağımlılık yönetimi desteği sunar. Bu sayede, otomatik ardışık düzenler kurmak için CI/CD araçlarınızla kolayca entegre edebilirsiniz.
Bu laboratuvar, Artifact Registry'de bulunan bazı özellikleri adım adım gösterir.
Öğrenecekleriniz
Bu laboratuvarın öğrenme hedefleri nelerdir?
- Container'lar ve Dil Paketleri için depo oluşturma
- Artifact Registry ile container görüntülerini yönetme
- Maven'i, Java Bağımlılıkları için Artifact Registry kullanacak şekilde yapılandırma
2. Kurulum ve Gereksinimler
Kendi hızınızda ortam kurulumu
- Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.
- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. İstediğiniz zaman güncelleyebilirsiniz.
- Proje Kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğini (genellikle
PROJECT_ID
olarak tanımlanır) referans almanız gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır. - Bilginiz için bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırma yapılmaması için kaynakları kapatmak isterseniz oluşturduğunuz kaynakları silebilir veya projenin tamamını silebilirsiniz. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
gcloud'u kurun
Cloud Shell'de proje kimliğinizi ve proje numaranızı ayarlayın. Bunları PROJECT_ID
ve PROJECT_NUMBER
değişkenleri olarak kaydedin.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Google hizmetlerini etkinleştirme
gcloud services enable \
cloudresourcemanager.googleapis.com \
container.googleapis.com \
artifactregistry.googleapis.com \
containerregistry.googleapis.com \
containerscanning.googleapis.com
Kaynak kodunu alma
Bu laboratuvarın kaynak kodu, GitHub'daki GoogleCloudPlatform kuruluşunda bulunmaktadır. Aşağıdaki komutla klonlayın, ardından dizine değiştirin.
git clone https://github.com/GoogleCloudPlatform/cloud-code-samples/
3. Container görüntüleriyle çalışma
Artifact kayıt defterinde Docker Deposu oluşturma
Artifact Registry, container görüntülerinin ve dil paketlerinin yönetilmesini destekler. Farklı yapı türleri farklı özellikler gerektirir. Örneğin, Maven bağımlılıkları için yapılan istekler, düğüm bağımlıları için yapılan isteklerden farklıdır.
Artifact Registry'nin, farklı API spesifikasyonlarını desteklemek için API yanıtlarının hangi biçimi kullanmasını istediğinizi bilmesi gerekir. Bunu yapmak için bir depo oluşturup --repository-format
işaretini kullanarak istenen depo türünü belirtmelisiniz.
Docker görüntüleri için depo oluşturmak isterseniz Cloud Shell'den aşağıdaki komutu çalıştırın:
gcloud artifacts repositories create container-dev-repo --repository-format=docker \
--location=us-central1 --description="Docker repository for Container Dev Workshop"
Cloud Shell yetkilendirme istemi görüntülenirse Yetkilendir'i tıklayın
Google Cloud Console - Artifact Registry - Repositories'e gidin ve yeni oluşturduğunuz container-dev-repo
Docker deposunu görün. Tıkladığınızda şu anda boş olduğunu görebilirsiniz
Artifact Registry için Docker Kimlik Doğrulaması yapılandırma
Artifact Registry'ye bağlanıldığında erişim sağlamak için kimlik bilgileri gerekir. Docker, ayrı kimlik bilgileri ayarlamak yerine gcloud kimlik bilgilerinizi sorunsuz şekilde kullanacak şekilde yapılandırılabilir.
Docker'ı us-central1
bölgesinde Artifact Registry'ye gelen isteklerin kimliğini Google Cloud CLI ile doğrulayacak şekilde yapılandırmak için Cloud Shell'den aşağıdaki komutu çalıştırın:
gcloud auth configure-docker us-central1-docker.pkg.dev
Bu komutta, Cloud Shell Docker yapılandırmasını değiştirmek için onay istenir ve Enter tuşuna basın.
Örnek uygulamayı inceleyin
Önceki adımda klonladığınız git deposunda örnek bir uygulama sağlanır. Java dizinine geçin ve uygulama kodunu inceleyin.
cd cloud-code-samples/java/java-hello-world
Klasör, basit bir web sayfasını oluşturan örnek bir Java uygulaması içerir: Söz konusu laboratuvar, ilgili laboratuvarla alakalı olmayan çeşitli dosyaların yanı sıra src
klasörünün altında kaynak kodunu ve yerel olarak container görüntüsü oluşturmak için kullanacağımız bir Dockerfile dosyasını içerir.
Kapsayıcı Görüntüsünü Derleme
Artifact Registry'de container görüntüleri depolayabilmek için öncelikle bir görüntü oluşturmanız gerekir.
Container görüntüsünü derlemek için aşağıdaki komutu çalıştırın ve bir sonraki adımda deponuza aktarmak üzere görüntüyü uygun şekilde etiketleyin:
docker build -t us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1 .
Container Görüntüsünü Artifact Registry'ye Aktarma
Container görüntüsünü daha önce oluşturulan depoya aktarmak için aşağıdaki komutu çalıştırın:
docker push us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1
Artifact Registry'de görüntüyü inceleyin
Google Cloud Console - Artifact Registry - Repositories'e gidin.
container-dev-repo
adresini tıklayın ve java-hello-world
görüntüsünün mevcut olup olmadığını kontrol edin. Resmi tıklayın ve tag1
olarak etiketlenmiş resmi not edin. Güvenlik Açığı Taraması'nın çalıştığını veya zaten tamamlandığını ve tespit edilen güvenlik açıklarının sayısının görünür olduğunu görebilirsiniz.
Güvenlik açıklarının sayısını tıkladığınızda, görüntüde algılanan güvenlik açıklarının listesini görürsünüz. CVE'nin adı ve önem derecesi ile birlikte listelenen her güvenlik açığındaki VIEW'i tıklayarak daha fazla bilgi edinebilirsiniz:
4. Dil paketleriyle çalışma
Bu bölümde, Artifact Registry Java deposu oluşturmayı ve bu depoya paketleri farklı uygulamalarda kullanarak yüklemeyi öğreneceksiniz.
Java paketi deposu oluşturma
Cloud Shell'den aşağıdaki komutu çalıştırarak Java yapıları için depo oluşturun:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
Cloud Shell yetkilendirme istemi görüntülenirse Yetkilendir'i tıklayın
Google Cloud Console - Artifact Registry - Repositories'e gidin ve yeni oluşturduğunuz container-dev-java-repo
adlı Maven deposunu bulun. Tıkladığınızda şu anda boş olduğunu görebilirsiniz.
Artifact Repository için kimlik doğrulamayı ayarlama
Aşağıdaki komutu kullanarak Uygulama Varsayılan Kimlik Bilgileri (ADC) için iyi bilinen konumu kullanıcı hesabı kimlik bilgilerinizle güncelleyin. Böylece Artifact Registry kimlik bilgisi yardımcısı, depolara bağlanırken bu bilgileri kullanarak kimlik doğrulaması yapabilir:
gcloud auth login --update-adc
Artifact Registry için Maven'i yapılandırma
java-hello-world
klasöründen aşağıdaki komutu çalıştırarak Cloud Shell Düzenleyici'yi açın ve uygulama klasörünü kendi çalışma alanına ekleyin:
cloudshell workspace .
"Site artık çalışıyor mu?" seçeneğini tıklayarak üçüncü taraf çerezlerini etkinleştirin. ve ardından "Çerezlere izin ver"i seçin.
Tarayıcı yeniden yüklendikten sonra Cloud Shell'i açın ve uygulama klasörünü yüklemek için yukarıdaki komutu bir kez daha çalıştırın.
pom.xml dosyasını Cloud Shell Düzenleyici'de açın ve "Düzenleyiciyi Aç"ı tıklayın.
Cloud Shell Düzenleyici'den terminali açın ve aşağıdaki komutu çalıştırarak Java projenize eklenecek depo yapılandırmasını yazdırın:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
ve döndürülen ayarları pom.xml
dosyasındaki uygun bölümlere ekleyin.
Yerleşik terminal ile Cloud Editor görünümü:
distributionManagement bölümünü güncelleme
<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>
Depolar bölümünü güncelleyin.
<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>
Uzantıları güncelleyin
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
Aşağıda, size referans olması için eksiksiz bir dosya örneği verilmiştir. <PROJECT> öğesini değiştirdiğinizden emin olun girin.
<?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>
Java paketinizi Artifact Registry'ye yükleyin
Maven'de yapılandırılan Artifact Registry sayesinde artık Artifact Registry'yi kullanarak Java Jar'lerini kuruluşunuzdaki diğer projeler tarafından kullanılmak üzere depolayabilirsiniz.
Java paketinizi Artifact Registry'ye yüklemek için aşağıdaki komutu çalıştırın:
mvn deploy
Artifact Registry'de Java paketini kontrol edin
Cloud Console - Artifact Registry - Repositories'e gidin container-dev-java-repo
klasörünü tıklayın ve hello-world
ikili yapısının mevcut olup olmadığını kontrol edin:
5. Tebrikler!
Tebrikler, codelab'i tamamladınız.
İşledikleriniz
- Kapsayıcılar ve Dil Paketleri İçin Depolar Oluşturuldu
- Artifact Registry ile yönetilen container görüntüleri
- Maven, Java Bağımlılıkları için Artifact Registry kullanacak şekilde yapılandırıldı
Temizleme
Projeyi silmek için aşağıdaki komutu çalıştırın
gcloud projects delete $PROJECT_ID