confluentinc / cp-ansible

Ansible playbooks for the Confluent Platform
Apache License 2.0
42 stars 405 forks source link

Multiple protocols ansieng 2902 #1796

Closed mansi-jain-1206 closed 4 weeks ago

mansi-jain-1206 commented 1 month ago

Description

This PR adds capability to support multiple authentication on a single listener. 1-pager

Type of change

How Has This Been Tested?

ZK Kraft Migration

Checklist:

confluent-cla-assistant[bot] commented 1 month ago

:tada: All Contributor License Agreements have been signed. Ready to merge.
Please push an empty commit if you would like to re-run the checks to verify CLA status for all contributors.

mansisinha commented 1 month ago

Needs some more testing, added a few open questions like

  1. How are we maintaining the preference for client protocol? How are we testing that the correct client properties are getting created for cp components as kafka clients?
  2. How have we tested the backwards compatibility?
  3. Have we tested any upgrade scenario where customer might upgrade from plain to plain,kerberos? what happens when customer upgrades from plain to kerberos,plain?
mansi-jain-1206 commented 1 month ago
  1. First protocol takes preference for inter component communication while the customer can create its own client to communicate with the other protocols.
  2. Yes have added the semaphore job links in the PR description.
  3. Have tested the upgrade scenarios for the following cases:
    • plain to kerberos,plain
    • kerberos,plain to plain

Upgrade needs to steps similar to the ones defined at https://docs.confluent.io/ansible/current/ansible-upgrade.html.

  1. Upgrade Zookeeper or Controller
  2. Upgrade Kafka Broker
  3. Upgrade other components
mansisinha commented 4 weeks ago

Overall changes look good now, please list down the upgrade scenarios tried for different controller and broker sasl protocol as well

mansi-jain-1206 commented 4 weeks ago

More upgrade scenarios around controller protocol are covered in scram changes PR because this feature was needed to implement that. sasl_protocol: kerberos -> plain -> kerberos,plain -> plain,kerberos