Skip to content
This repository was archived by the owner on Aug 20, 2025. It is now read-only.

Conversation

@merrimanr
Copy link
Contributor

Contributor Comments

This PR adds Kerberos support to the http://node1:8082/swagger-ui.html#!/kafka-controller/produceUsingPOST endpoint. This can be verified in full dev by enabling Kerberos and using that endpoint to produce a message. The same message should be returned with a call to the http://node1:8082/swagger-ui.html#!/kafka-controller/getSampleUsingGET endpoint (using the same topic).

I also added a unit test for the KafkaConfig class.

Pull Request Checklist

Thank you for submitting a contribution to Apache Metron.
Please refer to our Development Guidelines for the complete guide to follow for contributions.
Please refer also to our Build Verification Guidelines for complete smoke testing guides.

In order to streamline the review of the contribution we ask you follow these guidelines and ask you to double check the following:

For all changes:

  • Is there a JIRA ticket associated with this PR? If not one needs to be created at Metron Jira.
  • Does your PR title start with METRON-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.
  • Has your PR been rebased against the latest commit within the target branch (typically master)?

For code changes:

  • Have you included steps to reproduce the behavior or problem that is being changed or addressed?

  • Have you included steps or a guide to how the change may be verified and tested manually?

  • Have you ensured that the full suite of tests and checks have been executed in the root metron folder via:

    mvn -q clean integration-test install && build_utils/verify_licenses.sh 
    
  • Have you written or updated unit tests and or integration tests to verify your changes?

  • If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

  • Have you verified the basic functionality of the build by building and running locally with Vagrant full-dev environment or the equivalent?

For documentation related changes:

  • Have you ensured that format looks appropriate for the output in which it is rendered by building and verifying the site-book? If not then run the following commands and the verify changes via site-book/target/site/index.html:

    cd site-book
    mvn site
    

Note:

Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible.
It is also recommended that travis-ci is set up for your personal repository such that your branches are built there before submitting a pull request.

producerConfig.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
producerConfig.put("request.required.acks", 1);
if (environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)) {
producerConfig.put("security.protocol", "SASL_PLAINTEXT");
Copy link
Member

Choose a reason for hiding this comment

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

Shouldn't we pull this from the KAFKA_SECURITY_PROTOCOL environment variable? Looks like it's being set in metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Is the KAFKA_SECURITY_PROTOCOL env variable guaranteed to be available on the the host where REST is installed? Either way I don't have a problem with making the Kafka security protocol configurable vs hard-coded. I would propose we manage it like the other REST properties though and put it in metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/templates/metron.j2 to ensure it's always available to REST. Would it make sense to remove the "kerberos.enabled" spring property in this case?

Copy link
Member

Choose a reason for hiding this comment

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

Well, if metron.j2 were not available as environment variables for REST, how does metron-rest.sh get the spring profile to use (the METRON_SPRING_PROFILES_ACTIVE variable)?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

metron.j2 is always available to REST. KAFKA_SECURITY_PROTOCOL env variable may or may not be depending on if a Kafka Broker or Client is located on the same host (am I wrong?).

Copy link
Contributor

Choose a reason for hiding this comment

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

KAFKA_SECURITY_PROTOCOL is carried through by metron.j2 (KAFKA_SECURITY_PROTOCOL="{{kafka_security_protocol}}"). Given that, we should be fine to use it here, I believe.

Copy link
Member

Choose a reason for hiding this comment

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

I submitted a PR against your branch with my proposed solution to this. It fixes the issue for both the producer and consumer configs. If you choose to accept it, you can do it without my attribution.

Copy link
Contributor Author

@merrimanr merrimanr Nov 16, 2017

Choose a reason for hiding this comment

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

Thanks @cestella. Turns out this setting was already available so it was a simple change. I also added the default ("SASL_PLAINTEXT") to application.yml and adjusted the unit test.

@merrimanr
Copy link
Contributor Author

merrimanr commented Nov 16, 2017

The latest commit address the issue of making the Kafka security protocol configurable. I tested this in full dev after enabling Kerberos.

@cestella
Copy link
Member

+1 by inspection, great job.

@asfgit asfgit closed this in fd4a6d1 Nov 17, 2017
iraghumitra pushed a commit to iraghumitra/incubator-metron that referenced this pull request Nov 20, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants