-
可寻址资源可以接受到 HTTPS 端点的事件。
-
生产者可以向 HTTPS 端点发送事件。
使用传输加密功能,您可以通过使用 *传输层安全协议* (TLS) 在安全且加密的 HTTPS 连接上传输数据和事件。
用于 Eventing 的 OpenShift Serverless 传输加密仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且功能可能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您抢先体验即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅 技术预览功能支持范围。 |
transport-encryption
功能标志是一个 enum
配置,用于定义可寻址资源(如 Broker、Channel 和 Sink)如何接受事件。它控制可寻址资源是否必须根据所选设置通过 HTTP 或 HTTPS 接受事件。
transport-encryption
的可能值如下所示
值 | 描述 |
---|---|
|
|
|
|
|
|
ClusterIssuers
是 Kubernetes 资源,代表可以生成签名证书(通过遵守证书签名请求)的证书颁发机构 (CA)。所有 cert-manager 证书都需要一个处于就绪状态的引用颁发者才能尝试处理请求。更多详细信息,请参阅 颁发者。
为简便起见,此过程使用 |
您在 OpenShift Container Platform 上具有集群管理员权限,或者您在 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 上具有集群或专用管理员权限。
您已安装 OpenShift Serverless 运算符。
您已为 Red Hat OpenShift 安装 cert-manager 运算符。
您已安装 OpenShift (oc
) CLI。
按如下所示创建SelfSigned
ClusterIssuer
资源
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: knative-eventing-selfsigned-issuer
spec:
selfSigned: {}
通过运行以下命令应用ClusterIssuer
资源
$ oc apply -f <filename>
按如下所示使用SelfSigned
ClusterIssuer
资源创建根证书
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: knative-eventing-selfsigned-ca
namespace: cert-manager (1)
spec:
secretName: knative-eventing-ca (2)
isCA: true
commonName: selfsigned-ca
privateKey:
algorithm: ECDSA
size: 256
issuerRef:
name: knative-eventing-selfsigned-issuer
kind: ClusterIssuer
group: cert-manager.io
1 | 指定默认使用的 Red Hat OpenShift 的 cert-manager 运算符。 |
2 | 指定存储证书的密钥。该名称稍后将由 Eventing 的ClusterIssuer 使用。 |
通过运行以下命令应用Certificate
资源
$ oc apply -f <filename>
ClusterIssuers
是 Kubernetes 资源,代表可以生成签名证书(通过遵守证书签名请求)的证书颁发机构 (CA)。
您在 OpenShift Container Platform 上具有集群管理员权限,或者您在 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 上具有集群或专用管理员权限。
您已安装 OpenShift Serverless 运算符。
您已为 Red Hat OpenShift 安装 cert-manager 运算符。
您已安装 OpenShift (oc
) CLI。
按如下所示创建knative-eventing-ca-issuer
ClusterIssuer
资源
每个 Eventing 组件都使用此颁发者来颁发其服务器的证书。
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: knative-eventing-ca-issuer
spec:
ca:
secretName: knative-eventing-ca (1)
1 | cert-manager 命名空间(Red Hat OpenShift 的 cert-manager 运算符的默认值)中的secretName 值包含 Knative Eventing 组件可使用的证书。 |
|
通过运行以下命令应用ClusterIssuer
资源
$ oc apply -f <filename>
您可以通过将KnativeEventing
中的transport-encryption
功能设置为strict
来启用传输加密。
您在 OpenShift Container Platform 上具有集群管理员权限,或者您在 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 上具有集群或专用管理员权限。
您已安装 OpenShift Serverless 运算符。
您已为 Red Hat OpenShift 安装 cert-manager 运算符。
您已安装 OpenShift (oc
) CLI。
按如下所示在KnativeEventing
中启用transport-encryption
apiVersion: operator.knative.dev/v1beta1
kind: KnativeEventing
metadata:
name: knative-eventing
namespace: knative-eventing
spec:
# Other spec fields omitted ...
# ...
config:
features:
transport-encryption: strict
通过运行以下命令应用KnativeEventing
资源
$ oc apply -f <filename>
默认情况下,Eventing 客户端信任为自定义 PKI 配置的 OpenShift CA 捆绑包。更多详情,请参见 配置自定义 PKI。
建立新连接时,Eventing 客户端会自动将其信任列表中包含这些 CA 捆绑包。 |
您在 OpenShift Container Platform 上具有集群管理员权限,或者您在 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 上具有集群或专用管理员权限。
您已安装 OpenShift Serverless 运算符。
您已为 Red Hat OpenShift 安装 cert-manager 运算符。
按照以下步骤为 Eventing 创建 CA 捆绑包
kind: ConfigMap
metadata:
name: <my_org_eventing_bundle> (1)
namespace: knative-eventing
labels:
networking.knative.dev/trust-bundle: "true"
data: (2)
ca.crt: ...
ca1.crt: ...
tls.crt: ...
1 | 使用唯一名称以避免与现有或将来的 Eventing 配置映射冲突。 |
2 | Eventing 客户端信任所有具有有效 PEM 编码 CA 捆绑包的密钥。 |
要创建自定义事件源,请使用 SinkBinding。SinkBinding 可以通过使用 `knative-custom-certs` 目录将配置的 CA 信任捆绑包作为投影卷注入到每个容器中。
在某些情况下,您可能需要将公司特定的 CA 信任捆绑包注入到基础容器镜像中,并自动配置运行时(例如 OpenJDK 或 Node.js 等)以信任这些 CA 捆绑包。在这种情况下,您可能不需要配置客户端。
使用前面示例中的 `my_org_eventing_bundle` 配置映射,以及 `ca.crt`、`ca1.crt` 和 `tls.crt` 数据密钥,`knative-custom-certs` 目录具有以下布局
/knative-custom-certs/ca.crt
/knative-custom-certs/ca1.crt
/knative-custom-certs/tls.crt
您可以使用这些文件将 CA 信任捆绑包添加到向 Eventing 发送事件的 HTTP 客户端。
根据您使用的运行时、编程语言或库,存在不同的方法来配置自定义 CA 证书文件,例如使用命令行标志、环境变量或读取文件内容。 |
如果您使用的是 `SelfSigned` `ClusterIssuer` 资源,则可以将 CA 添加到 Eventing CA 信任捆绑包。
您在 OpenShift Container Platform 上具有集群管理员权限,或者您在 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 上具有集群或专用管理员权限。
您已安装 OpenShift Serverless 运算符。
您已为 Red Hat OpenShift 安装 cert-manager 运算符。
您已安装 OpenShift (oc
) CLI。
从 Red Hat OpenShift 命名空间中的 cert-manager Operator 中导出 `knative-eventing-ca` 密钥中的 CA(默认是 `cert-manager` 证书),运行以下命令:
$ oc get secret -n cert-manager knative-eventing-ca -o=jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
在 `knative-eventing` 命名空间中创建 CA 信任捆绑包,运行以下命令:
$ oc create configmap -n knative-eventing my-org-selfsigned-ca-bundle --from-file=ca.crt
通过运行以下命令为 `ConfigMap` 添加标签:
$ oc label configmap -n knative-eventing my-org-selfsigned-ca-bundle networking.knative.dev/trust-bundle=true
确保 CA 旋转无缝进行对于避免服务停机或处理紧急情况至关重要。
您在 OpenShift Container Platform 上具有集群管理员权限,或者您在 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 上具有集群或专用管理员权限。
您已安装 OpenShift Serverless 运算符。
您已为 Red Hat OpenShift 安装 cert-manager 运算符。
您已安装 OpenShift (oc
) CLI。
创建 CA 证书。
将新 CA 证书的公钥添加到 CA 信任捆绑包。
确保您还保留现有 CA 的公钥。
确保所有客户端都使用最新的 CA 信任捆绑包。
Knative Eventing 组件会自动重新加载更新的 CA 信任捆绑包。对于使用信任捆绑包的自定义工作负载,根据需要重新加载或重启它们。
更新 `knative-eventing-ca-issuer` `ClusterIssuer` 以引用包含您在步骤 1 中创建的 CA 证书的密钥。
强制 `cert-manager` 续订 `knative-eventing` 命名空间中的证书。
有关 `cert-manager` 的更多信息,请参见 用户操作触发的重新颁发。
CA 旋转完全完成后,从信任捆绑包配置映射中删除旧 CA 的公钥。
要确认传输加密已正确配置,您可以创建和测试 `InMemoryChannel` 资源。按照以下步骤确保它按预期使用 HTTPS。
您在 OpenShift Container Platform 上具有集群管理员权限,或者您在 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 上具有集群或专用管理员权限。
您已安装 OpenShift Serverless 运算符。
您已为 Red Hat OpenShift 安装 cert-manager 运算符。
您已安装 OpenShift (oc
) CLI。
按照以下步骤创建 `InMemoryChannel` 资源:
apiVersion: messaging.knative.dev/v1
kind: InMemoryChannel
metadata:
name: transport-encryption-test
运行以下命令应用 `InMemoryChannel` 资源:
$ oc apply -f <filename>
运行以下命令查看 `InMemoryChannel` 地址:
$ oc get inmemorychannels.messaging.knative.dev transport-encryption-test
NAME URL AGE READY REASON
transport-encryption-test https://imc-dispatcher.knative-eventing.svc.cluster.local/default/transport-encryption-test 17s True