×

为 Apache Kafka 的 Knative 通道配置 TLS 身份验证

Apache Kafka 客户端和服务器使用传输层安全 (TLS) 来加密 Knative 和 Kafka 之间的流量,以及用于身份验证。对于 Apache Kafka 的 Knative 代理实现,TLS 是唯一支持的流量加密方法。

先决条件
  • 您在 OpenShift Container Platform 上拥有集群或专用管理员权限。

  • OpenShift Serverless Operator、Knative Eventing 和KnativeKafka CR 已安装在您的 OpenShift Container Platform 集群上。

  • 您已创建一个项目,或有权访问具有创建 OpenShift Container Platform 中的应用程序和其他工作负载的适当角色和权限的项目。

  • 您有一个存储为.pem 文件的 Kafka 集群 CA 证书。

  • 您有一个存储为.pem 文件的 Kafka 集群客户端证书和密钥。

  • 安装 OpenShift CLI (oc)。

步骤
  1. 在您选择的命名空间中将证书文件创建为密钥。

    $ oc create secret -n <namespace> generic <kafka_auth_secret> \
      --from-file=ca.crt=caroot.pem \
      --from-file=user.crt=certificate.pem \
      --from-file=user.key=key.pem

    使用密钥名称ca.crtuser.crtuser.key。不要更改它们。

  2. 开始编辑KnativeKafka 自定义资源

    $ oc edit knativekafka
  3. 引用您的密钥和密钥的命名空间

    apiVersion: operator.serverless.openshift.io/v1alpha1
    kind: KnativeKafka
    metadata:
      namespace: knative-eventing
      name: knative-kafka
    spec:
      channel:
        authSecretName: <kafka_auth_secret>
        authSecretNamespace: <kafka_auth_secret_namespace>
        bootstrapServers: <bootstrap_servers>
        enabled: true
      source:
        enabled: true

    确保指定引导服务器中的匹配端口。

    例如

    apiVersion: operator.serverless.openshift.io/v1alpha1
    kind: KnativeKafka
    metadata:
      namespace: knative-eventing
      name: knative-kafka
    spec:
      channel:
        authSecretName: tls-user
        authSecretNamespace: kafka
        bootstrapServers: eventing-kafka-bootstrap.kafka.svc:9094
        enabled: true
      source:
        enabled: true

为 Apache Kafka 的 Knative 通道配置 SASL 身份验证

Apache Kafka 使用简单身份验证和安全层 (SASL) 进行身份验证。如果您在集群上使用 SASL 身份验证,则用户必须向 Knative 提供凭据才能与 Kafka 集群通信;否则,无法生成或使用事件。

先决条件
  • 您在 OpenShift Container Platform 上拥有集群或专用管理员权限。

  • OpenShift Serverless Operator、Knative Eventing 和KnativeKafka CR 已安装在您的 OpenShift Container Platform 集群上。

  • 您已创建一个项目,或有权访问具有创建 OpenShift Container Platform 中的应用程序和其他工作负载的适当角色和权限的项目。

  • 您拥有 Kafka 集群的用户名和密码。

  • 您已选择要使用的 SASL 机制,例如PLAINSCRAM-SHA-256SCRAM-SHA-512

  • 如果启用了 TLS,您还需要 Kafka 集群的ca.crt 证书文件。

  • 安装 OpenShift CLI (oc)。

步骤
  1. 在您选择的命名空间中将证书文件创建为密钥。

    $ oc create secret -n <namespace> generic <kafka_auth_secret> \
      --from-file=ca.crt=caroot.pem \
      --from-literal=password="SecretPassword" \
      --from-literal=saslType="SCRAM-SHA-512" \
      --from-literal=user="my-sasl-user"
    • 使用密钥名称ca.crtpasswordsasl.mechanism。不要更改它们。

    • 如果您想将 SASL 与公共 CA 证书一起使用,则在创建密钥时必须使用tls.enabled=true 标志,而不是ca.crt 参数。例如

      $ oc create secret -n <namespace> generic <kafka_auth_secret> \
        --from-literal=tls.enabled=true \
        --from-literal=password="SecretPassword" \
        --from-literal=saslType="SCRAM-SHA-512" \
        --from-literal=user="my-sasl-user"
  2. 开始编辑KnativeKafka 自定义资源

    $ oc edit knativekafka
  3. 引用您的密钥和密钥的命名空间

    apiVersion: operator.serverless.openshift.io/v1alpha1
    kind: KnativeKafka
    metadata:
      namespace: knative-eventing
      name: knative-kafka
    spec:
      channel:
        authSecretName: <kafka_auth_secret>
        authSecretNamespace: <kafka_auth_secret_namespace>
        bootstrapServers: <bootstrap_servers>
        enabled: true
      source:
        enabled: true

    确保指定引导服务器中的匹配端口。

    例如

    apiVersion: operator.serverless.openshift.io/v1alpha1
    kind: KnativeKafka
    metadata:
      namespace: knative-eventing
      name: knative-kafka
    spec:
      channel:
        authSecretName: scram-user
        authSecretNamespace: kafka
        bootstrapServers: eventing-kafka-bootstrap.kafka.svc:9093
        enabled: true
      source:
        enabled: true