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

Added passthrough pulp mode #372

Closed
wants to merge 1 commit into from

Conversation

sbernhard
Copy link

This change implements a passthrough mode on a pulpnode (=capsule) to pulp master using the already existing squid proxy.

The advantage is, that many customers don't want to duplicate the pulp content but still have separated subnets. Therefore, we configured a squid proxy on the capsule to route all requests for pulp content (rpm, apt) to pulp master (=katello)

For using this at katello:

  • install the katello-ca-consumer-latest.noarch.rpm of the pulp master on the content host (instead of the capsule ca consumer)
  • register via the subscription manager
  • set the proxy in yum.conf OR in apt.conf to use the proxy like
    proxy=http://capsule.dev:3129

@ehelms
Copy link
Member

ehelms commented Jun 5, 2019

This is an interesting idea. I have a few questions to help me think on it.

  1. This couples the squid deployed to help with lazy content syncing to a squid used for passthrough proxying. What if I want one but not the other?
  2. In puppet-foreman_proxy_content, a reverse proxy is deployed through Apache that in theory could route back to the main server. What is the advantage of squid in this case? Given it requires using a separate port as well?
  3. How does one deploy this configuration to a proxy without deploying all of Pulp given it seems tightly coupled to puppet-pulp?

@sbernhard
Copy link
Author

Thanks Eric for you question and your interest.
To 1: I added the passthrough mode as a addition - means, the pulp streamer scenario for lazy content syncing should still work.
To 2: I guess, because of SSL certificates to have a secure connection AND to authenticate on pulp (using the client cert) a reverse proxy can not be used. Additionally, I prefered to have the squid solution as its possible to verify that only requests of a given network to pulp master is allowed. Don't know if this is possible with apache.
3. it is coupled with pulp. I think, it might be possible to use passthrough pulp without having the rest of the pulp scenario but this is MUCH more effort and I guess, the katello-agent can not be used as it still requires qpid and (I think) some pulp services (am I right?)

@ehelms
Copy link
Member

ehelms commented Jun 6, 2019

I think I am not grasping the concept here. Let me recap my thoughts and you can steer me back on course. I interpreted this as a lightweight way to present content on a proxy so that hosts isolated could get content from the main server without having to have a full blown Pulp configured and syncing content.

@sbernhard
Copy link
Author

sbernhard commented Jun 6, 2019 via email

@sbernhard
Copy link
Author

ping @ehelms

@sbernhard
Copy link
Author

ping @ehelms / @ekohl

Copy link
Member

@ekohl ekohl left a comment

Choose a reason for hiding this comment

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

What's the general design behind this? Looking at the configuration, this would still deploy a full Pulp instance, correct? Is that really needed?

@@ -517,6 +533,11 @@
Optional[String] $ldap_bind_dn = $pulp::params::ldap_bind_dn,
Optional[String] $ldap_bind_password = $pulp::params::ldap_bind_password,
String $ldap_remote_user_attribute = $pulp::params::ldap_remote_user_attribute,
Boolean $enable_passthrough_pulp = $pulp::params::enable_passthrough_pulp,
Stdlib::Port $passthrough_pulp_http_port = $pulp::params::passthrough_pulp_http_port,
Optional[String] $passthrough_pulp_allowed_net = $pulp::params::passthrough_pulp_allowed_net,
Copy link
Member

Choose a reason for hiding this comment

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

Copy link
Author

Choose a reason for hiding this comment

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

@ekohl See #372 (comment) regarding your answer about "full pulp instance deployment".

@@ -47,7 +71,7 @@
order => '60',
config_entries => {
'cache_peer' => "${streamer_host} parent ${streamer_port} 0 no-digest no-query originserver name=PulpStreamer",
'cache_peer_access' => 'PulpStreamer allow all',
'cache_peer_access' => 'PulpStreamer allow localhost',
Copy link
Member

Choose a reason for hiding this comment

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

This looks like a general thing that can be applied to all installations, correct? Only Apache/Pulp connect to squid.

Copy link
Author

Choose a reason for hiding this comment

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

yes. I think so.

@sbernhard
Copy link
Author

can you please have a look at it again @ekohl ?

@ehelms
Copy link
Member

ehelms commented Apr 28, 2020

@sbernhard We have had a hard time wrapping our brains around this change and how it plays into the architecture. With Pulp 3 integration appearing in Katello releases, and these components no longer being present. Is this a change you still want to persue?

@sbernhard
Copy link
Author

sbernhard commented May 11, 2021

@ehelms The passthrough mode is feature often used by our customers. They like it a lot because they use a foreman proxy to make sure provisioning works in a specific network but don't waste storage as they just forward the requests to the rpm/deb packages.

For pulp3, we want to have similar / the same approach. Therefore, we will work on theforeman/puppet-foreman_proxy_content#205, too.

@ekohl
Copy link
Member

ekohl commented May 11, 2021

This module is just for Pulp 2. No new features will be accepted in this module. It's only here for Katello 3.18 until that's EOL. https://github.com/theforeman/puppet-pulpcore is used for Pulp 3 and is completely different. For example, squid is not present.

@ekohl ekohl closed this May 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants