Deploy the registry multi-tenant in staging

Signed-off-by: Patrick Uiterwijk <patrick@puiterwijk.org>
This commit is contained in:
Patrick Uiterwijk 2018-01-24 22:29:28 +01:00
parent 2bb12e25e6
commit e342afe8d3
5 changed files with 81 additions and 81 deletions

View file

@ -545,7 +545,14 @@
- role: httpd/reverseproxy
website: registry.fedoraproject.org
destname: registry
destname: registry-fedora
# proxyurl in this one is totally ignored, because Docker.
# (turns out it uses PATCH requests that Varnish cannot deal with)
proxyurl: "{{ varnish_url }}"
- role: httpd/reverseproxy
website: registry.centos.org
destname: registry-centos
# proxyurl in this one is totally ignored, because Docker.
# (turns out it uses PATCH requests that Varnish cannot deal with)
proxyurl: "{{ varnish_url }}"

View file

@ -568,6 +568,12 @@
sslonly: true
cert_name: "{{wildcard_cert_name}}"
- role: httpd/website
name: registry.centos.org
server_aliases: [registry.stg.centos.org]
sslonly: true
cert_name: "{{wildcard_cert_name}}"
- role: httpd/website
name: candidate-registry.fedoraproject.org
server_aliases: [candidate-registry.stg.fedoraproject.org]

View file

@ -0,0 +1,33 @@
RewriteEngine on
RewriteRule ^/v2/latest/(.*) /v2/f27/$1 [R,L]
{% if env == "staging" %}
RewriteRule ^/v2/(.*) /v2/fedora/$1
{% endif %}
RewriteRule ^/signatures/(.*) /srv/web/registry-signatures/$1 [L]
<Directory /srv/web/registry-signatures>
Require all granted
</Directory>
{% include './reversepassproxy.registry-generic.conf' %}
# Write access to docker-deployer only
{% if env == "staging" %}
<Location /v2/fedora>
<LimitExcept GET HEAD>
Require user docker-registry-internal-stg
</LimitExcept>
</Location>
<Location /v2/centos>
Require all denied
</Location>
{% else %}
<Location /v2>
require valid-user
</Location>
{% endif %}

View file

@ -0,0 +1,34 @@
RequestHeader set X-Forwarded-Scheme https early
RequestHeader set X-Scheme https early
RequestHeader set X-Forwarded-Proto https early
ProxyPreserveHost On
{% if env == "production" %}
RewriteCond %{HTTP:VIA} !cdn77
RewriteCond %{REQUEST_METHOD} !^(PATCH|POST|PUT|DELETE|HEAD)$
RewriteRule ^/v2/(.*)/blobs/([a-zA-Z0-9:]*) https://cdn.registry.fedoraproject.org/v2/$1/blobs/$2 [R]
{% endif %}
# This is terible, but Docker.
RewriteCond %{REQUEST_METHOD} ^(PATCH|POST|PUT|DELETE)$
RewriteRule ^/v2/(.*)$ http://docker-registry02:5000/v2/$1 [P,L]
RewriteRule ^/v2/(.*)$ http://localhost:6081/v2/$1 [P,L]
DocumentRoot /srv/web/registry-index/
<Directory /srv/web/registry-index>
Require all granted
</Directory>
SSLVerifyClient optional
SSLVerifyDepth 1
SSLCACertificateFile /etc/pki/httpd/registry-ca-{{env}}.cert
SSLOptions +FakeBasicAuth
<Location /v2>
AuthName "Registry Authentication"
AuthType Basic
AuthUserFile /etc/httpd/conf.d/registry.fedoraproject.org/passwd
</Location>

View file

@ -1,80 +0,0 @@
RequestHeader set X-Forwarded-Scheme https early
RequestHeader set X-Scheme https early
RequestHeader set X-Forwarded-Proto https early
ProxyPreserveHost On
RewriteEngine on
RewriteRule ^/signatures/(.*) /srv/web/registry-signatures/$1 [L]
{% if env == "staging" %}
RewriteCond %{HTTP_HOST} "registry{{env_suffix}}.fedoraproject.org"
RewriteRule ^/v2/(.*) /v2/fedora/$1
RewriteCond %{HTTP_HOST} "registry{{env_suffix}}.centos.org"
RewriteRule ^/v2/(.*) /v2/centos/$1
{% endif %}
RewriteRule ^/v2/fedora/latest/(.*) /v2/fedora/f27/$1 [R,L]
{% if env == "production" %}
RewriteCond %{HTTP:VIA} !cdn77
RewriteCond %{REQUEST_METHOD} !^(PATCH|POST|PUT|DELETE|HEAD)$
RewriteRule ^/v2/(.*)/blobs/([a-zA-Z0-9:]*) https://cdn.registry.fedoraproject.org/v2/$1/blobs/$2 [R]
{% endif %}
# This is terible, but Docker.
RewriteCond %{REQUEST_METHOD} ^(PATCH|POST|PUT|DELETE)$
RewriteRule ^/v2/(.*)$ http://docker-registry02:5000/v2/$1 [P,L]
RewriteRule ^/v2/(.*)$ http://localhost:6081/v2/$1 [P,L]
DocumentRoot /srv/web/registry-index/
<Directory /srv/web/registry-index>
Require all granted
</Directory>
SSLVerifyClient optional
SSLVerifyDepth 1
SSLCACertificateFile /etc/pki/httpd/registry-ca-{{env}}.cert
SSLOptions +FakeBasicAuth
<Directory /srv/web/registry-signatures>
Require all granted
</Directory>
<Location /v2>
Order deny,allow
Allow from all
AuthName "Registry Authentication"
AuthType Basic
AuthUserFile /etc/httpd/conf.d/registry.fedoraproject.org/passwd
# Anyone can read
<Limit GET HEAD>
Require all granted
</Limit>
</Location>
# Write access to docker-deployer only
{% if env == "staging" %}
<Location /v2/fedora>
<Limit POST PUT DELETE>
Require user docker-registry-internal-stg
</Limit>
</Location>
<Location /v2/centos>
<Limit POST PUT DELETE>
Require user docker-registry-centos-stg
</Limit>
</Location>
<Location /v2>
Require all denied
</Location>
{% else %}
<Location /v2>
require valid-user
</Location>
{% endif %}