community.okd.openshift_route 模块 – 将服务公开为 OpenShift 路由。

注意

此模块是 community.okd 集合(版本 4.0.0)的一部分。

如果您正在使用 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.okd。您需要进一步的要求才能使用此模块,有关详细信息,请参阅 要求

要在 Playbook 中使用它,请指定:community.okd.openshift_route

community.okd 0.3.0 中的新增功能

概要

  • 查找服务并基于该服务创建新的路由。

  • 类似于用于创建路由的 `oc expose` 和 `oc create route`,但不支持创建服务。

  • 有关从其他资源创建服务的信息,请参阅 kubernetes.core.k8s。

要求

执行此模块的主机需要以下要求。

  • python >= 3.6

  • kubernetes >= 12.0.0

  • PyYAML >= 3.11

参数

参数

注释

annotations

字典

在 community.okd 2.1.0 中添加

指定路由注释。

一组键:值对。

api_key

字符串

用于向 API 进行身份验证的令牌。也可以通过 K8S_AUTH_API_KEY 环境变量指定。

ca_cert

别名:ssl_ca_cert

路径

用于向 API 进行身份验证的 CA 证书的路径。必须提供完整的证书链以避免证书验证错误。也可以通过 K8S_AUTH_SSL_CA_CERT 环境变量指定。

client_cert

别名:cert_file

路径

用于向 API 进行身份验证的证书的路径。也可以通过 K8S_AUTH_CERT_FILE 环境变量指定。

client_key

别名:key_file

路径

用于向 API 进行身份验证的密钥文件的路径。也可以通过 K8S_AUTH_KEY_FILE 环境变量指定。

context

字符串

配置文件中找到的上下文的名称。也可以通过 K8S_AUTH_CONTEXT 环境变量指定。

force

布尔值

如果设置为 yesstatepresent,则将替换现有对象。

选项

  • false ← (默认)

  • true

host

字符串

提供用于访问 API 的 URL。也可以通过 K8S_AUTH_HOST 环境变量指定。

hostname

字符串

路由的主机名。

impersonate_groups

列表 / elements=字符串

在 kubernetes.core 2.3.0 中添加

操作要模拟的组。

也可以通过 K8S_AUTH_IMPERSONATE_GROUPS 环境变量指定。示例:Group1,Group2

impersonate_user

字符串

在 kubernetes.core 2.3.0 中添加

操作要模拟的用户名。

也可以通过 K8S_AUTH_IMPERSONATE_USER 环境变量指定。

kubeconfig

任何

现有 Kubernetes 配置文件的路径。如果未提供,并且未提供其他连接选项,则 Kubernetes 客户端将尝试从 ~/.kube/config 加载默认配置文件。也可以通过 K8S_AUTH_KUBECONFIG 环境变量指定。

可以使用分隔符 “;”(对于 Windows 平台)或 “:”(对于其他平台)提供多个 Kubernetes 配置文件。

可以将 Kubernetes 配置作为字典提供。此功能需要 Python Kubernetes 客户端版本 >= 17.17.0。在版本 2.2.0 中添加。

labels

字典

指定要应用于创建的路由的标签。

一组键:值对。

name

字符串

要创建的路由的所需名称。

默认为 service 的值

namespace

字符串 / 必填

目标资源的命名空间。

路由也将在该命名空间中创建。

no_proxy

字符串

在 kubernetes.core 2.3.0 中添加

不应通过代理的以逗号分隔的主机/域名/IP/CIDR 列表。也可以通过 K8S_AUTH_NO_PROXY 环境变量指定。

请注意,此模块不会从环境中提取典型的代理设置(例如 NO_PROXY)。

此功能需要 kubernetes>=19.15.0。当 Kubernetes 库小于 19.15.0 时,即使在正确设置 no_proxy 的情况下也会失败。

示例值为“localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16”

password

字符串

提供用于向 API 进行身份验证的密码。也可以通过 K8S_AUTH_PASSWORD 环境变量指定。

请阅读 username 选项的描述,了解何时适用此选项的讨论。

路径

字符串

路由的路径

persist_config

布尔值

是否保存 kube config 刷新令牌。也可以通过 K8S_AUTH_PERSIST_CONFIG 环境变量指定。

当 k8s 上下文使用带有刷新令牌的用户凭据(如 oidc 或 gke/gcloud 身份验证)时,令牌会由 k8s python 客户端库刷新,但默认情况下不会保存。因此,旧的刷新令牌可能会过期,并且下次身份验证可能会失败。将此标志设置为 true 将告知 k8s python 客户端将新的刷新令牌保存到 kube config 文件中。

默认为 false。

请注意,当前版本的 k8s python 客户端库尚不支持将此标志设置为 True。

此 k8s python 库的修复程序位于此处:https://github.com/kubernetes-client/python-base/pull/169

选项

  • false

  • true

端口

字符串

Route 将流量路由到的端口的名称或编号。

代理

字符串

用于连接的 HTTP 代理的 URL。也可以通过 K8S_AUTH_PROXY 环境变量指定。

请注意,此模块不会从环境中获取典型的代理设置(例如 HTTP_PROXY)。

proxy_headers

字典

在 kubernetes.core 2.0.0 中添加

basic_auth

字符串

用于基本身份验证标头的冒号分隔的用户名:密码。

也可以通过 K8S_AUTH_PROXY_HEADERS_BASIC_AUTH 环境指定。

proxy_basic_auth

字符串

用于代理基本身份验证标头的冒号分隔的用户名:密码。

也可以通过 K8S_AUTH_PROXY_HEADERS_PROXY_BASIC_AUTH 环境指定。

user_agent

字符串

表示您想要的 user-agent 的字符串,例如 foo/1.0。

也可以通过 K8S_AUTH_PROXY_HEADERS_USER_AGENT 环境指定。

service

别名: svc

字符串

要公开的服务的名称。

state 不为 absent 时是必需的。

state

字符串

确定是应该创建、修补还是删除对象。当设置为 present 时,如果对象不存在,则会创建该对象。如果设置为 absent,则会删除现有对象。如果设置为 present,如果其属性与使用 resource_definitionsrc 指定的属性不同,则会修补现有对象。

选项

  • "absent"

  • "present" ← (默认)

termination

字符串

Route 的终止类型。

如果留空,则不会设置终止类型,并且路由将是不安全的。

当设置为 insecure 时,将忽略 tls

选项

  • "edge"

  • "passthrough"

  • "reencrypt"

  • "insecure" ← (默认)

tls

字典

为新创建的路由配置 TLS。

仅当设置了 termination 时使用。

ca_certificate

字符串

目标主机上 CA 证书文件的路径。

termination 设置为 passthrough 时不支持。

certificate

字符串

目标主机上证书文件的路径。

termination 设置为 passthrough 时不支持。

destination_ca_certificate

字符串

用于保护连接的 CA 证书文件的路径。

仅当 termination 设置为 reencrypt 时使用。

默认为服务 CA。

insecure_policy

字符串

设置 Route 的 InsecureEdgeTerminationPolicy。

termination 设置为 reencrypt 时不支持。

termination 设置为 passthrough 时,仅支持重定向。

如果未提供,则将不允许不安全的流量。

选项

  • "allow"

  • "redirect"

  • "disallow" ← (默认)

key

字符串

目标主机上密钥文件的路径。

termination 设置为 passthrough 时不支持。

username

字符串

提供用于与 API 进行身份验证的用户名。也可以通过 K8S_AUTH_USERNAME 环境变量指定。

请注意,这仅适用于配置为使用 HTTP 基本身份验证的集群。如果您的集群具有不同的身份验证形式(例如 OpenShift 中的 OAuth2),则此选项将无法按预期工作,您应该研究 community.okd.k8s_auth 模块,因为它可能可以满足您的需求。

validate_certs

别名: verify_ssl

布尔值

是否验证 API 服务器的 SSL 证书。也可以通过 K8S_AUTH_VERIFY_SSL 环境变量指定。

选项

  • false

  • true

wait

布尔值

是否等待某些资源类型最终处于所需状态。

默认情况下,模块在 Kubernetes 收到请求后退出。

state=presentDeploymentDaemonSetPod 以及 state=absent 的所有资源类型实现。

对于没有实现的资源类型,除非设置了 wait_condition,否则 wait 会立即返回。

选项

  • false ← (默认)

  • true

wait_condition

字典

指定在状态上等待的自定义条件。

如果未设置 wait 或设置为 False,则忽略。

reason

字符串

所需条件中 reason 字段的值

例如,如果 Deployment 已暂停,则 Progressing type 将具有 DeploymentPaused 原因。

条件中可能的原因特定于 Kubernetes 中的每种资源类型。

请参阅给定资源的状态字段的 API 文档,以查看可能的选择。

status

字符串

所需条件中 status 字段的值。

例如,如果 Deployment 已暂停,则 Progressing type 将具有 Unknown 状态。

选项

  • "True" ← (默认)

  • "False"

  • "Unknown"

type

字符串

要等待的条件类型。

例如,Pod 资源将设置 Ready 条件(以及其他条件)。

如果您要指定 wait_condition,则为必需项。

如果留空,则将忽略 wait_condition 字段。

条件的可能类型特定于 Kubernetes 中的每种资源类型。

请参阅给定资源的状态字段的 API 文档,以查看可能的选择。

wait_sleep

整数

检查之间休眠的秒数。

默认值: 5

wait_timeout

整数

等待资源最终处于所需状态的秒数。

如果未设置 wait,则忽略。

默认值: 120

wildcard_policy

字符串

主机名的通配符策略。

当前仅支持 Subdomain。

如果未提供,则将使用默认值 None。

选项

  • "Subdomain"

注释

注意

  • 为了避免当 validate_certsTrue 时出现 SSL 证书验证错误,必须通过 ca_cert 或 kubeconfig 文件提供 API 服务器的完整证书链。

示例

- name: Create hello-world deployment
  community.okd.k8s:
    definition:
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: hello-kubernetes
        namespace: default
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: hello-kubernetes
        template:
          metadata:
            labels:
              app: hello-kubernetes
          spec:
            containers:
              - name: hello-kubernetes
                image: paulbouwer/hello-kubernetes:1.8
                ports:
                  - containerPort: 8080

- name: Create Service for the hello-world deployment
  community.okd.k8s:
    definition:
      apiVersion: v1
      kind: Service
      metadata:
        name: hello-kubernetes
        namespace: default
      spec:
        ports:
          - port: 80
            targetPort: 8080
        selector:
          app: hello-kubernetes

- name: Expose the insecure hello-world service externally
  community.okd.openshift_route:
    service: hello-kubernetes
    namespace: default
    insecure_policy: allow
    annotations:
      haproxy.router.openshift.io/balance: roundrobin
  register: route

返回值

常见返回值在此处记录 这里,以下是此模块独有的字段

描述

duration

整数

任务的经过时间,以秒为单位

返回值:wait 为 true 时

示例: 48

result

复合

已创建或更新的 Route 对象。在删除的情况下将为空。

返回值: 成功

apiVersion

字符串

此对象表示形式的版本化模式。

返回值: 成功

kind

字符串

表示此对象表示的 REST 资源。

返回值: 成功

metadata

复合

标准对象元数据。包括名称、命名空间、注释、标签等。

返回值: 成功

name

字符串

已创建的 Route 的名称

返回值: 成功

namespace

字符串

已创建的 Route 的命名空间

返回值: 成功

spec

复合

Route 的规范

返回值: 成功

host

字符串

Host 是指向该服务的别名/DNS。

返回值: 成功

路径

字符串

路由器监视的路径,用于将流量路由到该服务。

返回值: 成功

端口

复合

定义从路由器到服务端点中端点的端口映射。

返回值: 成功

targetPort

字符串

此路由指向的服务所选 pod 上的目标端口。

返回值: 成功

tls

复合

定义用于保护路由和提供终止的配置。

返回值: 成功

caCertificate

字符串

提供证书授权证书内容。

返回值: 成功

certificate

字符串

提供证书内容。

返回值: 成功

destinationCACertificate

字符串

提供最终目的地的 ca 证书内容。

返回值: 成功

insecureEdgeTerminationPolicy

字符串

指示不安全连接到路由的所需行为。

返回值: 成功

key

字符串

提供密钥文件内容。

返回值: 成功

termination

字符串

指示终止类型。

返回值: 成功

to

复合

指定解析为端点的目标。

返回值: 成功

kind

字符串

路由所引用的目标类型。目前,仅允许使用“Service”。

返回值: 成功

name

字符串

所引用的服务/目标的名称。例如,服务的名称。

返回值: 成功

权重

整数

指定目标相对于其他目标引用对象的相对权重。

返回值: 成功

通配符策略

字符串

路由的任何通配符策略。

返回值: 成功

status

复合

路由的当前状态详细信息

返回值: 成功

入口

复合

路由可能暴露的位置列表。

返回值: 成功

条件

复合

路由入口的状态条件数组。

返回值: 成功

status

字符串

条件的状态。可以是 True、False、Unknown。

返回值: 成功

type

字符串

条件的类型。目前只有 'Ready'。

返回值: 成功

host

字符串

暴露路由的主机字符串。

返回值: 成功

路由器规范主机名

字符串

路由器的外部主机名,可用作此路由请求的主机的 CNAME。可能未设置。

返回值: 成功

路由器名称

字符串

路由器选择用于标识自身的名称。

返回值: 成功

通配符策略

字符串

暴露此路由时允许的通配符策略。

返回值: 成功

作者

  • Fabian von Feilitzsch (@fabianvf)