GitLab项目教程:使用Google Cloud Run组件创建和部署Web服务
前言
在现代云原生应用开发中,容器化部署已经成为标准实践。本教程将指导您如何利用GitLab项目中的Google Cloud Run组件,从存储在Artifact Registry中的容器镜像部署一个Web服务。通过本教程,您将掌握完整的CI/CD流程,从代码提交到服务部署的全自动化过程。
准备工作
在开始之前,您需要完成以下准备工作:
-
Google Cloud集成设置:
- 配置Google Cloud IAM(身份和访问管理)
- 将GitLab连接到Google Artifact Registry
- 设置GitLab Runner在Google Cloud上执行CI/CD作业
-
开发环境配置:
- 安装并配置
gcloud
命令行工具 - 设置默认Google Cloud项目:
gcloud config set project PROJECT_ID
- 安装并配置
-
API启用:
- 启用Compute Engine和Cloud Run API:
gcloud services enable compute.googleapis.com artifactregistry.googleapis.com run.googleapis.com
- 启用Compute Engine和Cloud Run API:
-
权限配置:
- 为工作负载身份池授予以下角色:
roles/run.admin
(Cloud Run管理员)roles/iam.serviceAccountUser
(服务账户用户)
- 为工作负载身份池授予以下角色:
项目配置
IAM集成配置
- 在GitLab项目中创建新项目
- 进入"设置 > 集成"
- 选择"Google Cloud IAM"
- 填写以下信息:
- Google Cloud项目ID和项目编号
- 工作负载身份池ID和提供者ID
Artifact Registry集成配置
- 在相同项目的"设置 > 集成"中
- 选择"Google Artifact Management"
- 配置以下参数:
- Google Cloud项目ID
- 仓库名称
- 仓库位置
开发流程
代码仓库克隆
使用Git命令克隆您的GitLab仓库到本地开发环境:
git clone <仓库地址>
Dockerfile创建
创建一个简单的Web服务Dockerfile:
FROM python:3.12.4
ARG name
RUN mkdir web
RUN cat <<EOF > web/index.html
<!DOCTYPE html>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1 color="green">Welcome to $name</h1>
</body>
</html>
EOF
CMD ["python3", "-m", "http.server", "8080", "-d", "web"]
这个Dockerfile会:
- 基于Python 3.12.4镜像
- 创建一个简单的HTML页面
- 启动Python内置HTTP服务器
提交Dockerfile到Git仓库:
git add Dockerfile
git commit -m "add dockerfile"
git push
CI/CD流水线配置
创建.gitlab-ci.yml
文件,配置完整的构建部署流程:
variables:
IMAGE_TAG: v$CI_PIPELINE_ID
AR_IMAGE: LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/python-service
stages:
- build
- push
- deploy
build-job:
stage: build
services:
- docker:24.0.5-dind
image: docker:git
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- docker build -t $CI_REGISTRY_IMAGE:$IMAGE_TAG --build-arg="name=Cloud Run" .
- docker push $CI_REGISTRY_IMAGE:$IMAGE_TAG
include:
- component: gitlab.com/google-gitlab-components/artifact-registry/upload-artifact-registry@0.1.0
inputs:
stage: push
source: $CI_REGISTRY_IMAGE:$IMAGE_TAG
target: $AR_IMAGE:$IMAGE_TAG
- component: gitlab.com/google-gitlab-components/cloud-run/deploy-cloud-run@0.1.0
inputs:
stage: deploy
image: $AR_IMAGE:$IMAGE_TAG
project_id: PROJECT
region: LOCATION
service: python-service
流水线包含三个阶段:
- 构建阶段:使用Docker-in-Docker构建容器镜像
- 推送阶段:将镜像推送到Google Artifact Registry
- 部署阶段:使用Cloud Run部署服务
服务验证
部署完成后,您可以通过以下方式验证服务:
- 在Google Cloud控制台的Cloud Run页面查看服务状态
- 使用gcloud CLI本地访问服务:
访问gcloud run services proxy SERVICE \ --project PROJECT_ID \ --region=LOCATION
http://localhost:8080
查看服务
资源清理
为避免产生不必要的费用,您可以清理资源:
-
删除Artifact Registry仓库:
gcloud artifacts repositories delete REPOSITORY --location=LOCATION
-
删除Cloud Run服务:
- 在Cloud Run页面选择服务并删除
-
删除整个Google Cloud项目(谨慎操作):
- 在Google Cloud控制台的"管理资源"页面删除项目
最佳实践建议
- 标签策略:使用有意义的镜像标签,如
v$CI_PIPELINE_ID
确保可追溯性 - 环境分离:考虑为不同环境(开发、测试、生产)使用不同的Cloud Run服务
- 监控配置:部署后配置适当的监控和告警
- 自动缩放:根据负载需求调整Cloud Run的自动缩放配置
通过本教程,您已经掌握了使用GitLab和Google Cloud Run实现完整CI/CD流程的方法,可以将其应用到更复杂的实际项目中。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考