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

布尔值

如果设置为 yes,并且statepresent,则将替换现有对象。

选择

  • false ← (默认)

  • true

host

字符串

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

hostname

字符串

路由的主机名。

impersonate_groups

列表 / 元素=字符串

在 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 配置刷新令牌。也可以通过 K8S_AUTH_PERSIST_CONFIG 环境变量指定。

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

默认为 false。

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

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

选择

  • false

  • true

port

字符串

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

proxy

字符串

用于连接的 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

字符串

路由的终止类型。

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

当设置为 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

字符串

为路由设置 InsecureEdgeTerminationPolicy。

termination 设置为 reencrypt 时,不支持此项。

termination 设置为 passthrough 时,仅支持 redirect。

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

选择

  • "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 中的每种资源类型。

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

status

字符串

所需条件中 status 字段的值。

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

选择

  • "True" ← (默认)

  • "False"

  • "Unknown"

type

字符串

要等待的条件类型。

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

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

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

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

请参阅给定资源的 status 字段的 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

返回值

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

描述

duration

整数

任务的运行时间(以秒为单位)

返回值:wait 为 true 时

示例: 48

result

复杂

已创建或更新的路由对象。删除时将为空。

返回值: 成功

apiVersion

字符串

此对象表示的版本的架构。

返回值: 成功

kind

字符串

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

返回值: 成功

metadata

复杂

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

返回值: 成功

name

字符串

创建的路由的名称

返回值: 成功

namespace

字符串

创建的路由的命名空间

返回值: 成功

spec

复杂

路由的规范

返回值: 成功

host

字符串

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

返回值: 成功

路径

字符串

路由器监视的路径,以将流量路由到服务。

返回值: 成功

port

复杂

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

返回值: 成功

targetPort

字符串

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

返回值: 成功

tls

复杂

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

返回值: 成功

caCertificate

字符串

提供证书颁发机构证书内容。

返回值: 成功

certificate

字符串

提供证书内容。

返回值: 成功

destinationCACertificate

字符串

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

返回值: 成功

insecureEdgeTerminationPolicy

字符串

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

返回值: 成功

key

字符串

提供密钥文件内容。

返回值: 成功

termination

字符串

指示终止类型。

返回值: 成功

to

复杂

指定解析为终点的目标。

返回值: 成功

kind

字符串

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

返回值: 成功

name

字符串

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

返回值: 成功

weight

整数

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

返回值: 成功

wildcardPolicy

字符串

路由的任何通配符策略。

返回值: 成功

status

复杂

路由的当前状态详细信息

返回值: 成功

ingress

复杂

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

返回值: 成功

conditions

复杂

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

返回值: 成功

status

字符串

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

返回值: 成功

type

字符串

条件的类型。目前只有“Ready”。

返回值: 成功

host

字符串

暴露路由的主机字符串。

返回值: 成功

routerCanonicalHostname

字符串

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

返回值: 成功

routerName

字符串

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

返回值: 成功

wildcardPolicy

字符串

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

返回值: 成功

作者

  • Fabian von Feilitzsch (@fabianvf)