搜索

11.2. 使用卷投射配置绑定服务帐户令牌

download PDF

您可以使用卷投射,将 pod 配置为请求绑定的服务帐户令牌。

先决条件

  • 您可以使用具有 dedicated-admin 角色的用户访问集群。
  • 您已创建了一个服务帐户。这里假定服务帐户命名为 build-robot

流程

  1. 使用卷投影将 pod 配置为使用绑定服务帐户令牌。

    1. 创建名为 pod-projected-svc-token.yaml 的文件,其内容如下:

      apiVersion: v1
      kind: Pod
      metadata:
        name: nginx
      spec:
        securityContext:
          runAsNonRoot: true 1
          seccompProfile:
            type: RuntimeDefault 2
        containers:
        - image: nginx
          name: nginx
          volumeMounts:
          - mountPath: /var/run/secrets/tokens
            name: vault-token
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop: [ALL]
        serviceAccountName: build-robot 3
        volumes:
        - name: vault-token
          projected:
            sources:
            - serviceAccountToken:
                path: vault-token 4
                expirationSeconds: 7200 5
                audience: vault 6
      1
      防止容器以 root 用户身份运行,以最大程度降低威胁的风险。
      2
      设置默认 seccomp 配置集,限制为仅可以使用必要的系统调用,以降低风险。
      3
      对现有服务帐户的引用。
      4
      相对于文件挂载点的相对路径,用于将令牌放入。
      5
      (可选)设置服务帐户令牌的到期时间(以秒为单位)。默认值为 3600 秒(1 小时),这个值必须至少为 600 秒(10 分钟)。如果令牌已使用的时间超过这个值的 80%,或者超过 24 小时,则 kubelet 会开始尝试轮转令牌。
      6
      (可选)设置令牌的预期使用者。令牌的接收者应验证接收者身份是否与令牌的使用声明匹配,否则应拒绝令牌。使用者默认为 API 服务器的标识符。
      注意

      为了防止意外失败,Red Hat OpenShift Service on AWS 会使用 --service-account-extend-token-expiration 默认值从初始令牌生成中覆盖了 expirationSeconds 值。您无法更改此设置。

    2. 创建 pod:

      $ oc create -f pod-projected-svc-token.yaml

      Kubelet 代表 pod 请求并存储令牌,使 pod 可以在一个可配置的文件路径中获得令牌,并在该令牌接近到期时刷新令牌。

  2. 使用绑定令牌的应用程序需要在令牌轮转时重新载入令牌。

    如果令牌使用的时间超过这个值的 80%,或者超过 24 小时,则 kubelet 会轮转令牌。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.