Skip to content

ianballou/smart_proxy_container_gateway

 
 

Repository files navigation

Smart Proxy - Container Gateway

A Foreman smart proxy plugin for Katello. Implements container registry functions for Pulp 3-enabled smart proxy mirrors.

Example Apache /etc/httpd/conf.d/05-foreman-ssl.d/docker_proxy.conf

<Location /pulpcore_registry/v2/>
   SSLRequire %{SSL_CLIENT_S_DN_CN} eq "admin"
</Location>

SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off

ProxyPass /pulpcore_registry/v2/ http://127.0.0.1:24817/v2/
ProxyPassReverse /pulpcore_registry/v2/ http://127.0.0.1:24817/v2/

ProxyPass /pulp/container/ unix:///run/pulpcore-content.sock|http://centos7-katello-devel.cannolo.example.com/pulp/container/
ProxyPassReverse /pulp/container/ unix:///run/pulpcore-content.sock|http://centos7-katello-devel.cannolo.example.com/pulp/container/

ProxyPass /v2 https://127.0.0.1:9090/container_gateway/v2
ProxyPassReverse https://127.0.0.1:9090/container_gateway/v2 /v2
ProxyPass /v1 https://127.0.0.1:9090/container_gateway/v1
ProxyPassReverse https://127.0.0.1:9090/container_gateway/v1 /v1

Server configuration

The Container Gateway plugin requires a Pulp 3 instance to connect to. Related configuration options:

:pulp_endpoint: 'https://your_pulp_3_server_here.com'
:pulp_client_ssl_cert: 'Path to X509 certificate for authenticating with Pulp'
:pulp_client_ssl_key: 'Path to RSA private key for the Pulp certificate'

Database information

SQLite database migrations are completely automated. The plugin checks if the database is up-to-date before each query.

Katello interaction

Auth information is retrieved from the Katello server during smart proxy sync time and cached in the SQLite database.

Logging in with a container client will cause the Container Gateway to fetch a token from Katello using the login information.

Testing

bundle exec rubocop

bundle exec rake test

About

smart proxy plugin providing an authenticated registry backed by katello, foreman, and pulp

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%