本页面介绍了如何将容器映像部署到启用了 Binary Authorization 的 GKE 集群(在 Google Cloud 或 Google Distributed Cloud 上)。用于部署此类映像的 kubectl
命令与用于将映像部署到未启用 Binary Authorization 的集群的命令相同。
准备工作
确保您已在项目中启用了 Binary Authorization API,并且拥有启用了 Binary Authorization 的 GKE 集群。请参阅在 Google Kubernetes Engine 上进行设置或在 Distributed Cloud 上进行设置。
安装 kubectl
,以与 GKE 进行交互。
配置 kubectl
您必须为 kubectl
安装更新本地 kubeconfig
文件。这可以提供访问 GKE 或 Distributed Cloud 中的集群所需的凭据和端点信息。
如需配置 kubectl
,请运行以下 gcloud
命令:
GKE
gcloud container clusters get-credentials \ --zone ZONE \ CLUSTER_NAME
请替换以下内容:
- ZONE:运行集群的 GKE 可用区的名称,例如
us-central1-a
- CLUSTER_NAME:集群的名称
分布式云
gcloud container fleet memberships get-credentials \ --location LOCATION \ MEMBERSHIP_NAME
替换以下内容:
- LOCATION:GKE 集群的舰队成员资格的位置,例如
global
- MEMBERSHIP_NAME:GKE 集群的舰队成员资格的名称
部署容器映像
按如下方式部署容器映像:
配置环境变量:
POD_NAME=POD_NAME IMAGE_PATH=IMAGE_PATH IMAGE_DIGEST=IMAGE_DIGEST
请替换以下内容:
- POD_NAME:您要用于 GKE 工作负载的名称
- IMAGE_PATH:Artifact Registry、Container Registry 或其他注册表中的映像路径。
IMAGE_DIGEST:映像清单的摘要。示例如下:
- Artifact Registry:
- 路径:
us-docker.pkg.dev/google-samples/containers/gke/hello-app
- 摘要:
sha256:37e5287945774f27b418ce567cd77f4bbc9ef44a1bcd1a2312369f31f9cce567
- 路径:
- Container Registry:
- 路径:
gcr.io/google-samples/hello-app
- 摘要:
sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
- 路径:
如需了解如何在 Artifact Registry 中获取映像摘要,请参阅管理映像;如需查看 Container Registry 中的映像,请参阅列出映像版本。
- Artifact Registry:
使用
kubectl run
命令部署您的映像。您必须使用摘要(而非
1.0
或latest
等标记)部署映像,因为 Binary Authorization 会使用摘要来查找证明。如需部署映像,请运行以下
kubectl
命令:kubectl run ${POD_NAME} \ --image ${IMAGE_PATH}@${IMAGE_DIGEST}
现在,验证 Binary Authorization 是否会阻止部署:
kubectl get pods
系统将列出您的 Pod。
应急开启
如果 GKE 出于任何原因无法访问 Binary Authorization 服务器,或者服务器返回错误,GKE 将无法确定 Binary Authorization 是允许还是拒绝该映像。在这种情况下,GKE 会开启故障处理机制:默认情况下,它会允许部署映像,但会在 Cloud Audit Logs 中创建日志条目,以记录允许部署该映像的原因。
由于可靠性和安全性之间存在权衡,因此 GKE 强制执行会发生开启故障。每当创建或更新 Pod 时,GKE 都会向 Binary Authorization 发送请求。这包括由更高级别的 Kubernetes 工作负载控制器(例如 ReplicaSet 和 StatefulSet)自动创建或更新 Pod 的情况。如果 GKE 未能正常关闭,而已关闭,则任何 Binary Authorization 中断都会导致这些 Pod 停止运行。此外,当 Pod 被拒绝时,故障切换可能会导致级联故障,因为重定向的流量会导致仍在运行的 Pod 过载。任何 Binary Authorization 服务中断都可能会导致集群完全中断,即使没有部署任何新映像也是如此。
部署违反政策的映像
Binary Authorization 支持一项称为 Breakglass 的功能;如果启用该功能,则即使映像违反了政策,也允许对该映像进行部署。
如需了解详情,请参阅使用 Breakglass。
清理
如需进行清理,请通过执行以下命令删除 Pod:
kubectl delete pod ${POD_NAME}
后续步骤
- 了解试运行模式。
- 了解如何使用 CV。
- 了解如何使用旧版持续验证(已弃用)。
- 了解如何在 Kubernetes 清单中使用映像摘要。