部署容器

本页面介绍了如何将容器映像部署到启用了 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.0latest 等标记)部署映像,因为 Binary Authorization 将使用映像路径和摘要来查找证明

如需部署映像,请运行以下命令:

kubectl run ${DEPLOYMENT_NAME} \
    --image ${IMAGE_PATH}@${IMAGE_DIGEST} --port 8080

其中:

  • DEPLOYMENT_NAME 是您要为 GKE 工作负载使用的名称
  • IMAGE_PATHIMAGE_DIGEST 是 Container Registry 或其他注册表(例如 gcr.io/google-samples/hello-app@sha256:c62ead5b8c15c231f9e786250b07909daf6c266d0fcddd93fea882eb722c3be4)中映像的路径和摘要

覆盖政策

Binary Authorization 支持一项称为“紧急访问权限”的功能,可让您在部署容器映像时覆盖授权政策。此功能的实现方式与 Kubernetes 准入控制器规范中的建议一致。

以下示例展示了如何创建使用紧急访问权限来覆盖政策的 GKE pod:

  1. 创建 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 格式指定新资源的配置。

  2. 使用 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 中查看强制执行状态和部署消息,请参阅查看审核日志