GitLab项目教程:使用Google Cloud Run组件创建和部署Web服务

GitLab项目教程:使用Google Cloud Run组件创建和部署Web服务

gitlabhq GitLab CE Mirror | Please open new issues in our issue tracker on GitLab.com gitlabhq 项目地址: https://gitcode.com/gh_mirrors/gi/gitlabhq

前言

在现代云原生应用开发中,容器化部署已经成为标准实践。本教程将指导您如何利用GitLab项目中的Google Cloud Run组件,从存储在Artifact Registry中的容器镜像部署一个Web服务。通过本教程,您将掌握完整的CI/CD流程,从代码提交到服务部署的全自动化过程。

准备工作

在开始之前,您需要完成以下准备工作:

  1. Google Cloud集成设置

    • 配置Google Cloud IAM(身份和访问管理)
    • 将GitLab连接到Google Artifact Registry
    • 设置GitLab Runner在Google Cloud上执行CI/CD作业
  2. 开发环境配置

    • 安装并配置gcloud命令行工具
    • 设置默认Google Cloud项目:
      gcloud config set project PROJECT_ID
      
  3. API启用

    • 启用Compute Engine和Cloud Run API:
      gcloud services enable compute.googleapis.com artifactregistry.googleapis.com run.googleapis.com
      
  4. 权限配置

    • 为工作负载身份池授予以下角色:
      • roles/run.admin(Cloud Run管理员)
      • roles/iam.serviceAccountUser(服务账户用户)

项目配置

IAM集成配置

  1. 在GitLab项目中创建新项目
  2. 进入"设置 > 集成"
  3. 选择"Google Cloud IAM"
  4. 填写以下信息:
    • Google Cloud项目ID和项目编号
    • 工作负载身份池ID和提供者ID

Artifact Registry集成配置

  1. 在相同项目的"设置 > 集成"中
  2. 选择"Google Artifact Management"
  3. 配置以下参数:
    • 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会:

  1. 基于Python 3.12.4镜像
  2. 创建一个简单的HTML页面
  3. 启动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

流水线包含三个阶段:

  1. 构建阶段:使用Docker-in-Docker构建容器镜像
  2. 推送阶段:将镜像推送到Google Artifact Registry
  3. 部署阶段:使用Cloud Run部署服务

服务验证

部署完成后,您可以通过以下方式验证服务:

  1. 在Google Cloud控制台的Cloud Run页面查看服务状态
  2. 使用gcloud CLI本地访问服务:
    gcloud run services proxy SERVICE \
        --project PROJECT_ID \
        --region=LOCATION
    
    访问http://localhost:8080查看服务

资源清理

为避免产生不必要的费用,您可以清理资源:

  1. 删除Artifact Registry仓库

    gcloud artifacts repositories delete REPOSITORY --location=LOCATION
    
  2. 删除Cloud Run服务

    • 在Cloud Run页面选择服务并删除
  3. 删除整个Google Cloud项目(谨慎操作):

    • 在Google Cloud控制台的"管理资源"页面删除项目

最佳实践建议

  1. 标签策略:使用有意义的镜像标签,如v$CI_PIPELINE_ID确保可追溯性
  2. 环境分离:考虑为不同环境(开发、测试、生产)使用不同的Cloud Run服务
  3. 监控配置:部署后配置适当的监控和告警
  4. 自动缩放:根据负载需求调整Cloud Run的自动缩放配置

通过本教程,您已经掌握了使用GitLab和Google Cloud Run实现完整CI/CD流程的方法,可以将其应用到更复杂的实际项目中。

gitlabhq GitLab CE Mirror | Please open new issues in our issue tracker on GitLab.com gitlabhq 项目地址: https://gitcode.com/gh_mirrors/gi/gitlabhq

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花淑云Nell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值