Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow property security-inter-broker-protocol #85

Merged

Conversation

cawright-rh
Copy link
Collaborator

@cawright-rh cawright-rh commented Jun 11, 2024

Description

Please provide a meaningful description of what this change will do, or is for. Bonus points for including links to
related issues, other PRs, or technical references.

This change is to allow for the kafka property security.inter.broker.protocol to be used by the broker pods. Currently, koperator will create the property inter.broker.listener.name, which is mutually exclusive with security.inter.broker.protocol.

see kafka documentation on the property: https://kafka.apache.org/documentation/#brokerconfigs_security.inter.broker.protocol

Note that by not including a description, you are asking reviewers to do extra work to understand the context of this
change, which may lead to your PR taking much longer to review, or result in it not being reviewed at all.

Type of Change

  • Bug Fix
  • New Feature
  • Breaking Change
  • Refactor
  • Documentation
  • Other (please describe)

Checklist

  • I have read the contributing guidelines
  • Existing issues have been referenced (where applicable)
  • I have verified this change is not present in other open pull requests
  • Functionality is documented
  • All code style checks pass
  • New code contribution is covered by automated tests
  • All new and existing tests pass

@cawright-rh cawright-rh marked this pull request as draft June 11, 2024 19:46
@dobrerazvan
Copy link

Looks good to me, just to rebase to have the latest changes.

@cawright-rh cawright-rh force-pushed the allow-security-inter-broker-protocol branch from 51191e5 to 869549e Compare June 27, 2024 14:15
@cawright-rh cawright-rh marked this pull request as ready for review June 27, 2024 14:16
@@ -748,6 +748,7 @@ type CommonListenerSpec struct {
// At least one of the listeners should have this flag enabled
// +optional
UsedForInnerBrokerCommunication bool `json:"usedForInnerBrokerCommunication"`
UsedForKafkaAdminCommunication bool `json:"usedForKafkaAdminCommunication,omitempty"`

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add description for when this flag is useful.

@@ -37,11 +37,18 @@ func UseSSL(cluster *v1beta1.KafkaCluster) bool {

func getContainerPortForInnerCom(internalListeners []v1beta1.InternalListenerConfig, extListeners []v1beta1.ExternalListenerConfig) int32 {
for _, val := range internalListeners {
if val.UsedForKafkaAdminCommunication { // Cannot Currently update the CRD as I do not have permissions

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CRDs are not updated in all envs, is this still needed?

Copy link
Collaborator Author

@cawright-rh cawright-rh Aug 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I forgot to clean up this comment, the conditional statement is still needed though, I will add a comment explaining the use. The summary is, having a separate flag to indicate which port to use for the koperator and CruiseControl logic is valuable, as, it normally just uses UsedForInnerBrokerCommunication port, which may not be a port CC or Koperator has access to.

@@ -88,8 +88,10 @@ func (r *Reconciler) getConfigProperties(bConfig *v1beta1.BrokerConfig, id int32
}

// Add Cruise Control Metrics Reporter configuration
if err := config.Set(kafkautils.CruiseControlConfigMetricsReporters, "com.linkedin.kafka.cruisecontrol.metricsreporter.CruiseControlMetricsReporter"); err != nil {
log.Error(err, fmt.Sprintf("setting '%s' in broker configuration resulted an error", kafkautils.CruiseControlConfigMetricsReporters))
if !strings.Contains(r.KafkaCluster.Spec.ReadOnlyConfig, kafkautils.KafkaConfigSecurityInterBrokerProtocol+"=") {
Copy link

@azun azun Aug 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you can convert the readonly config to properties using func getBrokerReadOnlyConfig, or some similar logic

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, update the comment to reflect that the reported is disabled when inter broker communication is secured

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated to use the getBrokerReadOnlyConfig function and added comment.

@@ -88,8 +88,10 @@ func (r *Reconciler) getConfigProperties(bConfig *v1beta1.BrokerConfig, id int32
}

// Add Cruise Control Metrics Reporter configuration
if err := config.Set(kafkautils.CruiseControlConfigMetricsReporters, "com.linkedin.kafka.cruisecontrol.metricsreporter.CruiseControlMetricsReporter"); err != nil {
log.Error(err, fmt.Sprintf("setting '%s' in broker configuration resulted an error", kafkautils.CruiseControlConfigMetricsReporters))
if !strings.Contains(r.KafkaCluster.Spec.ReadOnlyConfig, kafkautils.KafkaConfigSecurityInterBrokerProtocol+"=") {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, update the comment to reflect that the reported is disabled when inter broker communication is secured

@@ -292,9 +296,12 @@ func generateListenerSpecificConfig(l *v1beta1.ListenersConfig, serverPasses map
if err := config.Set(kafkautils.KafkaConfigListenerSecurityProtocolMap, securityProtocolMapConfig); err != nil {
log.Error(err, fmt.Sprintf("setting '%s' parameter in broker configuration resulted an error", kafkautils.KafkaConfigListenerSecurityProtocolMap))
}
if err := config.Set(kafkautils.KafkaConfigInterBrokerListenerName, interBrokerListenerName); err != nil {
log.Error(err, fmt.Sprintf("setting '%s' parameter in broker configuration resulted an error", kafkautils.KafkaConfigInterBrokerListenerName))
if !strings.Contains(r, kafkautils.KafkaConfigSecurityInterBrokerProtocol+"=") {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This means the inter broker listener needs to be explicitly specified through the readonly config right?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes that is correct, it is a kafka property similar, but conflicting with, inter.broker.listener.name and inter.broker.listener.protocol

@dobrerazvan dobrerazvan merged commit 1f0d47f into adobe:master Aug 14, 2024
7 of 8 checks passed
hvan pushed a commit that referenced this pull request Nov 13, 2024
* Fix flaky test by deleting nodeports explicitly (#67)

* Upgrade Kafka to 3.6.0 (#69)

* Upgrade dependencies

* Fix wrong port on expectEnvoyWithConfigAz2Tls test (#70)

* Upgrade Kafka to 3.6.1 (#71)

Co-authored-by: Petruț™ <cpetrache@adobe.com>

* Upgrade Kafka image to use Java v21 (#72)

* Added arm64 to docker build platforms (#73)

* Added arm64 to docker build platforms

* Regenerated headers for 2024

* Upgrading Kafka to 3.7.0 (#77)

* Update codeql-analysis.yml (#78)

* [INTERNAL] Create uniq leader ID per operator deployment (#76)

* [INTERNAL] Get watched namespaces from env variable (#75)

(cherry picked from commit de6500b)

* [CORE-106517] Fix outdated config in the sample (#83)

* Cross-compile koperator for arm and intel. (#84)

* Adding Contour Ingress support (#82)

* Allow property security-inter-broker-protocol  (#85)

* adding the ability to use security-inter-broker-protocol in koperator

* updating util.go to remove _ for generated names

* adding replace all for external listener port name

* fixing other places where externallistener name is used to not have _

* adding an alternative way to identify which port to use for kafka administration and cc connection

* taking out comments for pr push

* fixing kafka crd

* setting omitempty so it will not be required

* adding generated crds

* adding comments with context for new flag UsedForKafkaAdminCommunication

* Use getBrokerReadOnlyConfig function to get properties and update unit test - security_inter_broker_protocol_Set

* Update crds to match generated manifest

---------

Co-authored-by: Cameron Wright <red82277@adobe.com>
Co-authored-by: Ha Van <red83362@adobe.com>

---------

Co-authored-by: ctrlaltluc <96051211+ctrlaltluc@users.noreply.github.com>
Co-authored-by: Adi Muraru <amuraru@adobe.com>
Co-authored-by: Razvan Dobre <dobre@adobe.com>
Co-authored-by: Cristian-Petrut Petrache <cristianpetrache@gmail.com>
Co-authored-by: Petruț™ <cpetrache@adobe.com>
Co-authored-by: Adrian Muraru <adi.muraru@gmail.com>
Co-authored-by: Adrian <1664229+azun@users.noreply.github.com>
Co-authored-by: aguzovatii <guzovatii.anatolii@gmail.com>
Co-authored-by: cawright-rh <cawright@redhat.com>
Co-authored-by: Cameron Wright <red82277@adobe.com>
Co-authored-by: Ha Van <red83362@adobe.com>
Co-authored-by: Daniel Vaseekaran <red10447@adobe.com>
dvaseekara added a commit that referenced this pull request Dec 9, 2024
* Fix flaky test by deleting nodeports explicitly (#67)

* Upgrade Kafka to 3.6.0 (#69)

* Upgrade dependencies

* Fix wrong port on expectEnvoyWithConfigAz2Tls test (#70)

* Upgrade Kafka to 3.6.1 (#71)

Co-authored-by: Petruț™ <cpetrache@adobe.com>

* Upgrade Kafka image to use Java v21 (#72)

* Added arm64 to docker build platforms (#73)

* Added arm64 to docker build platforms

* Regenerated headers for 2024

* Upgrading Kafka to 3.7.0 (#77)

* Update codeql-analysis.yml (#78)

* [INTERNAL] Create uniq leader ID per operator deployment (#76)

* [INTERNAL] Get watched namespaces from env variable (#75)

(cherry picked from commit de6500b)

* [CORE-106517] Fix outdated config in the sample (#83)

* Cross-compile koperator for arm and intel. (#84)

* Adding Contour Ingress support (#82)

* Allow property security-inter-broker-protocol  (#85)

* adding the ability to use security-inter-broker-protocol in koperator

* updating util.go to remove _ for generated names

* adding replace all for external listener port name

* fixing other places where externallistener name is used to not have _

* adding an alternative way to identify which port to use for kafka administration and cc connection

* taking out comments for pr push

* fixing kafka crd

* setting omitempty so it will not be required

* adding generated crds

* adding comments with context for new flag UsedForKafkaAdminCommunication

* Use getBrokerReadOnlyConfig function to get properties and update unit test - security_inter_broker_protocol_Set

* Update crds to match generated manifest

---------

Co-authored-by: Cameron Wright <red82277@adobe.com>
Co-authored-by: Ha Van <red83362@adobe.com>

* Revert "Allow concurrent broker restarts from same AZ (broker rack) (#62)"

This reverts commit 514fa07.

* Fixed build issues

* Fix TestGenerateBrokerConfig

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added watch namesapces

* Added tmate for debugging

* Added tmate for debugging

* Added tmate for debugging

* Added enabled projectcontour helm install

* Enabled cloud-provider-kind

* Added ProjectContour cluster role

* updated certificate name

* updated certificate name

* Run without SSL

* Removing Project Contour

* Adding cloud-provider-kind

* Removing cloud-provider - manually adding during test

* trigger test

* Remove SnpshotClusterAndCompare

* Increased log length for Snapshot and Compare

* Re-Add Snapshot and compare

* Increased log length for Snapshot and Compare

* Increased log length even more

* Add Uninstall Contour CRDs

* Re-Add KafkaCluster_SSL Tests

* Removing BanzaiCloud Helm Chart from list of repos

* pushing up latest go.sum

* Clean up Merge

* Enabling Tmate to debug e2e Test

* Revert Cert Changes

* Revert "Revert Cert Changes"

This reverts commit 5c5b19c.

* Enable sslClientAuth

* trigger test

* WIP: Fix Listener Config

* Clean up test case results - tc-1

* Clean up test case results - tc-2

* Updated Kraft Test Cases

* Cleanup Linting Issues

* Remove Tmate Debugger

* Run Kraft CLuster E2E

* Add kraft e2e test

* Revert Test

---------

Co-authored-by: ctrlaltluc <96051211+ctrlaltluc@users.noreply.github.com>
Co-authored-by: Adi Muraru <amuraru@adobe.com>
Co-authored-by: Razvan Dobre <dobre@adobe.com>
Co-authored-by: Cristian-Petrut Petrache <cristianpetrache@gmail.com>
Co-authored-by: Petruț™ <cpetrache@adobe.com>
Co-authored-by: Adrian Muraru <adi.muraru@gmail.com>
Co-authored-by: Adrian <1664229+azun@users.noreply.github.com>
Co-authored-by: aguzovatii <guzovatii.anatolii@gmail.com>
Co-authored-by: cawright-rh <cawright@redhat.com>
Co-authored-by: Cameron Wright <red82277@adobe.com>
Co-authored-by: Ha Van <red83362@adobe.com>
Co-authored-by: Daniel Vaseekaran <red10447@adobe.com>
dvaseekara added a commit that referenced this pull request Dec 11, 2024
* Fix flaky test by deleting nodeports explicitly (#67)

* Upgrade Kafka to 3.6.0 (#69)

* Upgrade dependencies

* Fix wrong port on expectEnvoyWithConfigAz2Tls test (#70)

* Upgrade Kafka to 3.6.1 (#71)

Co-authored-by: Petruț™ <cpetrache@adobe.com>

* Upgrade Kafka image to use Java v21 (#72)

* Added arm64 to docker build platforms (#73)

* Added arm64 to docker build platforms

* Regenerated headers for 2024

* Upgrading Kafka to 3.7.0 (#77)

* Update codeql-analysis.yml (#78)

* [INTERNAL] Create uniq leader ID per operator deployment (#76)

* [INTERNAL] Get watched namespaces from env variable (#75)

(cherry picked from commit de6500b)

* [CORE-106517] Fix outdated config in the sample (#83)

* Cross-compile koperator for arm and intel. (#84)

* Adding Contour Ingress support (#82)

* Allow property security-inter-broker-protocol  (#85)

* adding the ability to use security-inter-broker-protocol in koperator

* updating util.go to remove _ for generated names

* adding replace all for external listener port name

* fixing other places where externallistener name is used to not have _

* adding an alternative way to identify which port to use for kafka administration and cc connection

* taking out comments for pr push

* fixing kafka crd

* setting omitempty so it will not be required

* adding generated crds

* adding comments with context for new flag UsedForKafkaAdminCommunication

* Use getBrokerReadOnlyConfig function to get properties and update unit test - security_inter_broker_protocol_Set

* Update crds to match generated manifest

---------

Co-authored-by: Cameron Wright <red82277@adobe.com>
Co-authored-by: Ha Van <red83362@adobe.com>

* Revert "Allow concurrent broker restarts from same AZ (broker rack) (#62)"

This reverts commit 514fa07.

* Fixed build issues

* Fix TestGenerateBrokerConfig

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added LoadBalancer for Kind E2E test cluster

* Added watch namesapces

* Added tmate for debugging

* Added tmate for debugging

* Added tmate for debugging

* Added enabled projectcontour helm install

* Enabled cloud-provider-kind

* Added ProjectContour cluster role

* updated certificate name

* updated certificate name

* Run without SSL

* Removing Project Contour

* Adding cloud-provider-kind

* Removing cloud-provider - manually adding during test

* trigger test

* Remove SnpshotClusterAndCompare

* Increased log length for Snapshot and Compare

* Re-Add Snapshot and compare

* Increased log length for Snapshot and Compare

* Increased log length even more

* Add Uninstall Contour CRDs

* Re-Add KafkaCluster_SSL Tests

* Removing BanzaiCloud Helm Chart from list of repos

* pushing up latest go.sum

* Clean up Merge

* Enabling Tmate to debug e2e Test

* Revert Cert Changes

* Revert "Revert Cert Changes"

This reverts commit 5c5b19c.

* Enable sslClientAuth

* trigger test

* WIP: Fix Listener Config

* Clean up test case results - tc-1

* Clean up test case results - tc-2

* Updated Kraft Test Cases

* Cleanup Linting Issues

* Remove Tmate Debugger

* Run Kraft CLuster E2E

* Increate Timeout to allow pod termination

* Trigger Test

* Added Debugger

* Fix App Labels for Controllers

* Revert image upate

* Revert "Fix App Labels for Controllers"

This reverts commit a3cf8a5.

* Include Broker/Controller Labels for Headless SVC Selector

* Logic for controller listener

* add controller service

* Added Headless-Controller-SVC Labels

* Fix controller addresses and labels for brokers

* Empty commit to trigger e2e

* Set up kafka-3 as controller only for troubleshooting

* Empty commit to trigger e2e

* Use controller address for JMXTemplate

* Update uninstall timeout to 600s

* fix lint

* fix lint

* fix lint

* Enable TMate Debugger

* Trigger E2E

* Updated BrokerIdLabelkey

* Updated BrokerIdLabelkey

* Check for Kraft mode when setting the controller listener

* Check for Kraft mode when setting the controller listener

* Disable tmate from e2e test

* adding //nolint:unparam to testProduceConsumeInternal func now that it is used twice

* moving the //nolint:unparam to the none-ssl version

* Fixed BrokerLabel Test

* Add additional test cases for TestGetBrokerLabels

* Add additional test cases for TestGetBrokerLabels

* commenting out broker-1 in test to fix kraft test

* adding conditional to check if kraft mode is enabled before selecting which expected results in test

---------

Co-authored-by: ctrlaltluc <96051211+ctrlaltluc@users.noreply.github.com>
Co-authored-by: Adi Muraru <amuraru@adobe.com>
Co-authored-by: Razvan Dobre <dobre@adobe.com>
Co-authored-by: Cristian-Petrut Petrache <cristianpetrache@gmail.com>
Co-authored-by: Petruț™ <cpetrache@adobe.com>
Co-authored-by: Adrian Muraru <adi.muraru@gmail.com>
Co-authored-by: Adrian <1664229+azun@users.noreply.github.com>
Co-authored-by: aguzovatii <guzovatii.anatolii@gmail.com>
Co-authored-by: cawright-rh <cawright@redhat.com>
Co-authored-by: Cameron Wright <red82277@adobe.com>
Co-authored-by: Ha Van <red83362@adobe.com>
Co-authored-by: Daniel Vaseekaran <red10447@adobe.com>
Co-authored-by: Ha Van <168012087+musubi7726@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants