本页面介绍了如何将容器映像部署到启用了 Binary Authorization 的 Google Kubernetes Engine (GKE) 集群。用于部署的命令与用于将映像部署到不使用 Binary Authorization 的集群的命令相同。
准备工作
安装 kubectl
,以与 GKE 进行交互。
配置 kubectl
您必须为 kubectl
安装更新本地 kubeconfig
文件。这可以提供访问 GKE 中的集群所需的凭据和端点信息。
如需配置 kubectl
,请运行以下命令:
gcloud container clusters get-credentials \ --zone ZONE \ CLUSTER_NAME
其中:
- ZONE 是运行集群的 GKE 区域的名称(例如
us-central1-a1
) - CLUSTER_NAME 是集群的名称
部署容器映像
您可以使用 kubectl run
命令部署映像。
您必须使用摘要(而非 1.0
或 latest
等标记)部署映像,因为 Binary Authorization 将使用映像路径和摘要来查找证明。
如需部署映像,请运行以下命令:
kubectl run ${DEPLOYMENT_NAME} \ --image ${IMAGE_PATH}@${IMAGE_DIGEST} --port 8080
其中:
DEPLOYMENT_NAME
是您要为 GKE 工作负载使用的名称IMAGE_PATH
:IMAGE_DIGEST
是 Container Registry 或其他注册表(例如gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
)中映像的路径和摘要
覆盖政策
Binary Authorization 支持一项称为“紧急访问权限”的功能,可让您在部署容器映像时覆盖授权政策。此功能的实现方式与 Kubernetes 准入控制器规范中的建议一致。
以下示例展示了如何创建使用紧急访问权限来覆盖政策的 GKE pod:
创建 YAML 格式的配置文件。此文件包含紧急访问权限注释以及创建 pod 所需的其他信息:
apiVersion: v1 kind: Pod metadata: name: pod-name annotations: alpha.image-policy.k8s.io/break-glass: "true" spec: containers: - name: container-name image: gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4
GKE 还允许您根据需要使用 JSON 格式指定新资源的配置。
使用
kubectl
创建 pod:kubectl create -f YAML_file
验证映像是否正在运行
如需验证映像是否正在运行,请输入以下命令:
kubectl get pods
该命令会输出类似于以下内容的消息,表示部署成功:
NAME READY STATUS RESTARTS AGE hello-server-579859fb5b-h2k8s 1/1 Running 0 1m
查看审核日志
如需详细了解如何在 Cloud Logging 中查看强制执行状态和部署消息,请参阅查看审核日志。