Thông tin về lớp học lập trình này
1. Tổng quan
Cấu phần lưu trữ cho phép bạn lưu trữ nhiều loại cấu phần phần mềm, tạo nhiều kho lưu trữ trong một dự án và liên kết một hoặc nhiều khu vực cụ thể với mỗi kho lưu trữ. Có một số chế độ kho lưu trữ. Mỗi chế độ phục vụ một mục đích khác nhau. Sơ đồ sau đây cho thấy một trong nhiều cách bạn có thể sử dụng các kho lưu trữ ở nhiều chế độ cùng nhau. Sơ đồ này cho thấy quy trình làm việc trên hai dự án Google Cloud. Trong một dự án phát triển, nhà phát triển sẽ tạo một ứng dụng Java. Trong một dự án thời gian chạy riêng, một bản dựng khác sẽ tạo hình ảnh vùng chứa có ứng dụng để triển khai trên Google Kubernetes Engine.
Trong lớp học này, bạn sẽ tìm hiểu cách thực hiện các nhiệm vụ sau.
- Sử dụng Kho lưu trữ chuẩn để triển khai các gói riêng
- Sử dụng Kho lưu trữ từ xa để lưu các gói maven central vào bộ nhớ đệm
- Sử dụng Kho lưu trữ ảo để kết hợp nhiều kho lưu trữ thượng nguồn trong một cấu hình
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.
- Tên dự án là tên hiển thị cho người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn có thể cập nhật thông tin này bất cứ lúc nào.
- Mã dự án là duy nhất trên tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là
PROJECT_ID
). Nếu không thích mã được tạo, bạn có thể tạo một mã ngẫu nhiên khác. Ngoài ra, bạn có thể thử dùng email của riêng mình để xem có thể sử dụng hay không. Bạn không thể thay đổi thông tin này sau bước này và thông tin này sẽ được giữ nguyên trong suốt thời gian của dự án. - Xin lưu ý rằng có một giá trị thứ ba là Mã dự án mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc tham gia lớp học lập trình này sẽ không tốn kém nhiều chi phí, nếu có. Để tắt các tài nguyên để không bị tính phí sau khi hoàn tất hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá toàn bộ dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.
Thiết lập Workspace
Thiết lập gcloud
Trong Cloud Shell, hãy đặt mã dự án và số dự án. Lưu các biến này dưới dạng biến PROJECT_ID
và PROJECT_NUMBER
.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Bật API
gcloud services enable artifactregistry.googleapis.com
Sao chép kho lưu trữ
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/container-registry/container-analysis
2. Kho lưu trữ chuẩn
Kho lưu trữ chuẩn cung cấp một cách để lưu trữ các gói riêng tư và chia sẻ các gói đó trên các ứng dụng khác
Tạo kho lưu trữ maven chuẩn
Trên Cloud Shell, hãy chạy lệnh sau để tạo kho lưu trữ cho cấu phần phần mềm Java:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
Nhấp vào Uỷ quyền nếu lời nhắc uỷ quyền Cloud Shell xuất hiện
Chuyển đến Google Cloud Console – Cấu phần phần mềm đăng ký – Kho lưu trữ và lưu ý kho lưu trữ Maven mới tạo có tên là container-dev-java-repo
. Nếu nhấp vào kho lưu trữ này, bạn có thể thấy kho lưu trữ này hiện đang trống.
gcloud artifacts repositories describe container-dev-java-repo \
--location=us-central1
Sẽ trả về một phản hồi tương tự như sau
Encryption: Google-managed key Repository Size: 0.000MB createTime: '2023-03-21T19:01:45.461589Z' description: Java package repository for Container Dev Workshop format: MAVEN mavenConfig: {} mode: STANDARD_REPOSITORY name: projects/qwiklabs-gcp-03-4304110dc461/locations/us-central1/repositories/container-dev-java-repo updateTime: '2023-03-21T19:01:45.461589Z'
Định cấu hình Maven cho Artifact Registry
Chạy lệnh sau để in cấu hình kho lưu trữ để thêm vào dự án Java:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
Lệnh trước đó trả về xml để thêm vào pom.xml của dự án.
- Mục kho lưu trữ chỉ định nơi Maven có thể tải các cấu phần phần mềm từ xa xuống để dự án hiện tại sử dụng.
- Mục distributionManagement chỉ định kho lưu trữ từ xa mà dự án sẽ đẩy đến khi được triển khai.
- Phần extensions (tiện ích) thêm vào artifactregistry-maven-wagon để bật lớp Xác thực và lớp truyền tải cần thiết để kết nối với Artifact Registry
- Lưu ý: Các phần mở rộng có thể tồn tại trong pom.xml hoặc extensions.xml. Trong trường hợp dự án phụ thuộc vào một dự án mẹ, các phần phụ thuộc đó sẽ được truy cập trước khi các mục còn lại trong pom.xml được tải. Để đảm bảo phần tử mẹ có quyền truy cập vào phần mở rộng, bạn có thể đặt phần mở rộng đó trong tệp extensions.xml được tải trước pom.xml, nhờ đó cung cấp phần mở rộng cho các phần phụ thuộc mẹ.
Sao chép ba phần, sau đó mở pom.xml
trong Trình chỉnh sửa Cloud Shell và thêm chế độ cài đặt được trả về vào cuối tệp ngay bên trong thẻ project
đóng.
Mẹo: Trong cloudshell, hãy chạy lệnh sau trong dòng lệnh để mở trình chỉnh sửa trong thư mục hiện tại.
cloudshell workspace .
Ví dụ: (tên dự án của bạn sẽ khác trong URL)
...
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.2.0</version>
</extension>
</extensions>
</build>
</project>
Tải gói Java lên Cấu phần phần mềm lưu trữ
Khi đã định cấu hình Cấu phần phần mềm trong Maven, bạn hiện có thể sử dụng Cấu phần phần mềm để lưu trữ các tệp jar Java cho các dự án khác trong tổ chức của mình.
Chạy lệnh sau để tải gói Java lên Cấu phần phần mềm:
mvn deploy -DskipTests
Nếu bạn muốn chạy lại lệnh này, hãy nhớ tăng phiên bản trong pom.xml.
Kiểm tra gói Java trong Cấu phần phần mềm lưu trữ
Chuyển đến Cloud Console – Artifact Registry – Repositories (Cloud Console – Cấu phần phần mềm – Kho lưu trữ). Nhấp vào container-dev-java-repo
và kiểm tra để đảm bảo cấu phần phần mềm nhị phân hello-world
có trong đó:
3. Kho lưu trữ từ xa
Kho lưu trữ từ xa có khả năng lưu các gói của bên thứ ba vào bộ nhớ đệm để tăng độ tin cậy và bảo mật.
Tạo kho lưu trữ từ xa
Lưu ý: Để biết thông tin chi tiết về việc xác thực và định cấu hình, hãy xem tài liệu về sản phẩm.
Trên Cloud Shell, hãy chạy lệnh sau để tạo kho lưu trữ từ xa cho các cấu phần phần mềm Maven Central:
gcloud artifacts repositories create maven-central-cache \
--project=$PROJECT_ID \
--repository-format=maven \
--location=us-central1 \
--description="Remote repository for Maven Central caching" \
--mode=remote-repository \
--remote-repo-config-desc="Maven Central" \
--remote-mvn-repo=MAVEN-CENTRAL
Xem lại kho lưu trữ trong bảng điều khiển
Chuyển đến Cloud Console – Artifact Registry – Repositories (Bảng điều khiển Google Cloud – Cấu phần phần mềm – Kho lưu trữ) Nhấp vào maven-central-cache
và nhận thấy rằng kho lưu trữ này đã được tạo và hiện đang trống
Xem lại kho lưu trữ trong dòng lệnh
gcloud artifacts repositories describe maven-central-cache \
--location=us-central1
Tích hợp kho lưu trữ vào dự án
Chạy lệnh sau để in cấu hình kho lưu trữ nhằm thêm vào dự án Java:
gcloud artifacts print-settings mvn \
--repository=maven-central-cache \
--location=us-central1
Thêm phần kho lưu trữ vào pom.xml. Hãy nhớ không sao chép thẻ <repositories> bên ngoài từ kết quả.
Thay đổi mã nhận dạng của kho lưu trữ mới thêm thành "central" để đảm bảo mỗi mục nhập kho lưu trữ đều có mã nhận dạng duy nhất.
Ví dụ: (tên dự án của bạn sẽ khác trong URL)
...
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>central</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/maven-central-cache</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.2.0</version>
</extension>
</extensions>
</build>
</project>
Chạy các lệnh sau trong thiết bị đầu cuối để tạo extensions.xml
cho dự án của bạn. Để sử dụng cơ chế tiện ích cốt lõi, hãy đảm bảo Maven có thể phân giải các phần phụ thuộc gốc hoặc trình bổ trợ từ Cấu phần phần mềm.
mkdir .mvn
cat > .mvn/extensions.xml << EOF
<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.2.0</version>
</extension>
</extensions>
EOF
Kéo các phần phụ thuộc từ Kho lưu trữ từ xa
Chạy lệnh sau để biên dịch ứng dụng bằng Kho lưu trữ từ xa:
rm -rf ~/.m2/repository
mvn compile
Xem lại các gói trong bảng điều khiển
Chuyển đến Cloud Console – Artifact Registry – Repositories (Cloud Console – Cấu phần phần mềm – Kho lưu trữ) Nhấp vào maven-central-cache
và kiểm tra để đảm bảo rằng các cấu phần phần mềm nhị phân được lưu vào bộ nhớ đệm tại đó:
4. Kho lưu trữ ảo
Kho lưu trữ ảo đóng vai trò là giao diện để truy cập vào nhiều kho lưu trữ thông qua một cấu hình duy nhất. Điều này giúp đơn giản hoá cấu hình ứng dụng cho người dùng cấu phần phần mềm và tăng cường bảo mật bằng cách giảm thiểu các cuộc tấn công gây nhầm lẫn về phần phụ thuộc.
Tạo tệp chính sách
cat > ./policy.json << EOF
[
{
"id": "private",
"repository": "projects/${PROJECT_ID}/locations/us-central1/repositories/container-dev-java-repo",
"priority": 100
},
{
"id": "central",
"repository": "projects/${PROJECT_ID}/locations/us-central1/repositories/maven-central-cache",
"priority": 80
}
]
EOF
Tạo kho lưu trữ ảo
gcloud artifacts repositories create virtual-maven-repo \
--project=${PROJECT_ID} \
--repository-format=maven \
--mode=virtual-repository \
--location=us-central1 \
--description="Virtual Maven Repo" \
--upstream-policy-file=./policy.json
Tích hợp kho lưu trữ vào dự án
Chạy lệnh sau để in cấu hình kho lưu trữ để thêm vào dự án Java:
gcloud artifacts print-settings mvn \
--repository=virtual-maven-repo \
--location=us-central1
Thay thế toàn bộ phần kho lưu trữ trong pom bằng một phần kho lưu trữ ảo từ kết quả.
Ví dụ: (tên dự án của bạn sẽ khác trong URL)
...
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/qwiklabs-gcp-04-3c51830ea757/virtual-maven-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.2.0</version>
</extension>
</extensions>
</build>
</project>
Lấy phần phụ thuộc từ Kho lưu trữ ảo
Vì kho lưu trữ ảo là một đường truyền và sẽ không lưu trữ bất kỳ gói thực tế nào, nên để minh hoạ rõ ràng quá trình này, bạn sẽ xoá kho lưu trữ maven-central-cache mà bạn đã tạo trước đó và tạo lại kho lưu trữ đó để bắt đầu lại với một kho lưu trữ trống
Chạy các lệnh sau để tạo lại kho lưu trữ bộ nhớ đệm
gcloud artifacts repositories delete maven-central-cache \
--project=$PROJECT_ID \
--location=us-central1 \
--quiet
gcloud artifacts repositories create maven-central-cache \
--project=$PROJECT_ID \
--repository-format=maven \
--location=us-central1 \
--description="Remote repository for Maven Central caching" \
--mode=remote-repository \
--remote-repo-config-desc="Maven Central" \
--remote-mvn-repo=MAVEN-CENTRAL
Bạn có thể xem lại kho lưu trữ trống trong bảng điều khiển. Chuyển đến Cloud Console – Cấu phần phần mềm – Kho lưu trữ
Bây giờ, hãy thực hành kho lưu trữ ảo bằng cách tạo dự án bằng lệnh sau
rm -rf ~/.m2/repository
mvn compile
Xem lại các gói trong bảng điều khiển
Chuyển đến Cloud Console – Artifact Registry – Repositories (Bảng điều khiển trên đám mây – Cấu phần phần mềm – Kho lưu trữ). Nhấp vào maven-central-cache
và kiểm tra để đảm bảo rằng các cấu phần phần mềm nhị phân đã được định cấu hình để lấy từ kho lưu trữ ảo nhưng cuối cùng được lấy từ maven-central-cache
:
5. Xin chúc mừng!
Xin chúc mừng, bạn đã hoàn thành lớp học lập trình!
Nội dung bạn đã đề cập
- Sử dụng Kho lưu trữ chuẩn để triển khai các gói riêng tư
- Sử dụng Kho lưu trữ từ xa để lưu các gói maven central vào bộ nhớ đệm
- Sử dụng Kho lưu trữ ảo để kết hợp nhiều kho lưu trữ thượng nguồn trong một cấu hình
Dọn dẹp
Chạy lệnh sau để xoá dự án
gcloud projects delete ${PROJECT_ID}
—
Lần cập nhật gần đây nhất: 22/3/23