×

作为管理员,您可以使用事件监听器保护 Webhook。创建命名空间后,您可以通过向命名空间添加operator.tekton.dev/enable-annotation=enabled标签来为EventListener资源启用 HTTPS。然后,您可以使用重新加密的 TLS 终止创建Trigger资源和安全路由。

Red Hat OpenShift Pipelines 中的触发器支持与EventListener资源的不安全 HTTP 和安全 HTTPS 连接。HTTPS 可保护集群内部和外部的连接。

Red Hat OpenShift Pipelines 运行一个tekton-operator-proxy-webhook Pod,该 Pod 监视命名空间中的标签。当您向命名空间添加标签时,Webhook 会在EventListener对象上设置service.beta.openshift.io/serving-cert-secret-name=<secret_name>注释。这反过来又会创建密钥和所需的证书。

service.beta.openshift.io/serving-cert-secret-name=<secret_name>

此外,您可以将创建的密钥挂载到EventListener Pod 中以保护请求。

使用 OpenShift 路由提供安全连接

要创建具有重新加密 TLS 终止的路由,请运行

$ oc create route reencrypt --service=<svc-name> --cert=tls.crt --key=tls.key --ca-cert=ca.crt --hostname=<hostname>

或者,您可以创建一个重新加密 TLS 终止 YAML 文件来创建一个安全路由。

创建安全路由的示例重新加密 TLS 终止 YAML
apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: route-passthrough-secured  (1)
spec:
  host: <hostname>
  to:
    kind: Service
    name: frontend (1)
  tls:
    termination: reencrypt (2)
    key: [as in edge termination]
    certificate: [as in edge termination]
    caCertificate: [as in edge termination]
    destinationCACertificate: |- (3)
      -----BEGIN CERTIFICATE-----
      [...]
      -----END CERTIFICATE-----
1 对象的名称,限制为 63 个字符。
2 termination 字段设置为reencrypt。这是唯一必需的 TLS 字段。
3 这是重新加密所必需的。destinationCACertificate字段指定一个 CA 证书来验证端点证书,从而保护从路由器到目标 Pod 的连接。在以下任一情况下,您可以忽略此字段
  • 服务使用服务签名证书。

  • 管理员为路由器指定默认 CA 证书,并且服务具有由该 CA 签名的证书。

您可以运行oc create route reencrypt --help命令以显示更多选项。

使用安全 HTTPS 连接创建示例 EventListener 资源

本节使用pipelines-tutorial示例来演示如何使用安全 HTTPS 连接创建示例 EventListener 资源。

步骤
  1. 从 pipelines-tutorial 存储库中提供的 YAML 文件创建TriggerBinding资源

    $ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/03_triggers/01_binding.yaml
  2. 从 pipelines-tutorial 存储库中提供的 YAML 文件创建TriggerTemplate资源

    $ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/03_triggers/02_template.yaml
  3. 直接从 pipelines-tutorial 存储库创建Trigger资源

    $ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/03_triggers/03_trigger.yaml
  4. 使用安全 HTTPS 连接创建EventListener资源

    1. 添加标签以启用与EventListener资源的安全 HTTPS 连接

      $ oc label namespace <ns-name> operator.tekton.dev/enable-annotation=enabled
    2. 从 pipelines-tutorial 存储库中提供的 YAML 文件创建EventListener资源

      $ oc create -f https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/03_triggers/04_event_listener.yaml
    3. 创建具有重新加密 TLS 终止的路由

      $ oc create route reencrypt --service=<svc-name> --cert=tls.crt --key=tls.key --ca-cert=ca.crt --hostname=<hostname>