升级 Container Analysis

漏洞扫描在 Container Analysis 正式版发布后已变为付费服务。在促销期间,结算费用会降低。如需了解详情,请参阅价格页面

促销期结束后,当您启用 Container Scanning API 时,系统会立即开始计费。

升级

Container Analysis 已于 2019 年 9 月 20 日全面推出。如果您的工作负载使用 Container Analysis Beta 版,请考虑以下事项以迁移到最新版本:

  • REST API:使用 GA REST API 端点

    https://containeranalysis.googleapis.com/v1
    

    来替代

    https://containeranalysis.googleapis.com/v1beta1
    
  • 将您的客户端库升级到最新版本。如需了解详情,请参阅库文档

降低费用的最佳做法

当您启用 Container Analysis API 后,系统会自动扫描您推送的每个新映像。为了降低费用,请将您要扫描的容器映像拆分到其他项目。

  • 设置新的 Google Cloud 项目并为该项目启用 Container Scanning API。此项目需要为 Container Registry 支付正常的结算费用。将您要扫描的映像推送到此项目。

  • 要自动执行此流程,请在 CI/CD 流水线中添加一个步骤,以便根据标记将映像推送到新的 Container Registry 项目。

估算扫描费用

要计算项目中映像的大致费用,请估算您在某个时间范围内推送的映像数量,并将该数量乘以价格 $ 0.26。您可以通过在 Cloud Shell 中运行 shell 脚本来实现此目的。

  1. 在项目中打开 Cloud Shell,点击打开编辑器图标,然后创建一个包含以下内容的新文件 cost-estimation.sh

    
    #!/bin/bash
    
    # Replace with your project data
    GC_PROJECT='[PROJECT_REPOSITORY]'
    START_DATE='[START_DATE]'
    END_DATE='[END_DATE]'
    
    IFS=$'\n'
    FILTER="timestamp.date('%Y-%m-%d', Z)>'$START_DATE' AND timestamp.date('%Y-%m-%d', Z)<'$END_DATE'"
    PRICE="0.26"
    
    images=$( gcloud container images list --repository="$GC_PROJECT" | sed -n '/gcr.io/p' )
    total_digests=0
    
    for image in $images; do
      image_digests=$( gcloud container images list-tags --filter="$FILTER" "$image" | wc -l )
      if [[ "$image_digests" -gt 1 ]]; then
        total_digests=$(( total_digests + $image_digests - 1 ))
      fi
    done
    
    total_price=$( python -c "print($total_digests * $PRICE)" )
    
    echo "Number of images: $total_digests"
    echo "Estimated cost: $total_price"
    
    

    其中:

    • [PROJECT_REPOSITORY] 是您的项目代码库。例如 gcr.io/corp-staging
    • [START_DATE] 是要估算的时间段的开始日期,格式为 Y-m-d。例如 2020-03-01
    • [END_DATE] 是要估算的时间段的结束日期,格式为 Y-m-d。例如 2020-03-31
  2. 运行脚本:

    bash cost-estimation.sh
    

    它会显示映像总数和总估算费用:

    Number of images: 53
    Estimated cost: 13.78
    

这只是估算值,实际费用可能因其他因素而异,例如:

  • 将同一映像推送到同一项目中不同的多区域不会产生额外的费用。

  • 将同一映像推送到两个不同项目中的两个不同代码库不会产生额外的费用。