[PATCH] proxies: add a registry-no-cdn host that doesn't use the cdn for images.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Kevin Fenzi <kevin@xxxxxxxxx>

When composing with flatpaks, we need to download them, but right now we always
download them from the cdn, but thats blocked in builders. Instead add a new
host that bypasses the cdn and use it for composes, so it pulls all the images
directly from our registry.fedoraproject.org.

Signed-off-by: Kevin Fenzi <kevin@xxxxxxxxx>
---
 playbooks/include/proxies-reverseproxy.yml         |  9 +++
 .../reversepassproxy.registry-no-cdn-fedora.conf   | 38 ++++++++++++
 .../reversepassproxy.registry-no-cdn-generic.conf  | 72 ++++++++++++++++++++++
 3 files changed, 119 insertions(+)
 create mode 100644 roles/httpd/reverseproxy/templates/reversepassproxy.registry-no-cdn-fedora.conf
 create mode 100644 roles/httpd/reverseproxy/templates/reversepassproxy.registry-no-cdn-generic.conf

diff --git a/playbooks/include/proxies-reverseproxy.yml b/playbooks/include/proxies-reverseproxy.yml
index 63fb246..ab1e242 100644
--- a/playbooks/include/proxies-reverseproxy.yml
+++ b/playbooks/include/proxies-reverseproxy.yml
@@ -651,6 +651,15 @@
     - registry
 
   - role: httpd/reverseproxy
+    website: registry-no-cdn.fedoraproject.org
+    destname: registry-no-cdn-fedora
+    # proxyurl in this one is totally ignored, because Docker.
+    # (turns out it uses PATCH requests that Varnish cannot deal with)
+    proxyurl: "{{ varnish_url }}"
+    tags:
+    - registry
+
+  - role: httpd/reverseproxy
     website: registry.centos.org
     destname: registry-centos
     # proxyurl in this one is totally ignored, because Docker.
diff --git a/roles/httpd/reverseproxy/templates/reversepassproxy.registry-no-cdn-fedora.conf b/roles/httpd/reverseproxy/templates/reversepassproxy.registry-no-cdn-fedora.conf
new file mode 100644
index 0000000..bdb7d0d
--- /dev/null
+++ b/roles/httpd/reverseproxy/templates/reversepassproxy.registry-no-cdn-fedora.conf
@@ -0,0 +1,38 @@
+RewriteEngine on
+
+RewriteRule ^/v2/latest/(.*) /v2/f27/$1 [R,L]
+
+{% if env == "staging-new" %}
+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-no-cdn-generic.conf' %}
+
+# Write access to docker-deployer only
+{% if env == "staging-new" %}
+  <Location /v2/fedora>
+    <LimitExcept GET HEAD>
+      Require user docker-registry-internal-stg
+    </LimitExcept>
+  </Location>
+  <Location /v2/centos>
+    Require all denied
+  </Location>
+
+{% else %}
+
+<Location /v2>
+  <Limit GET HEAD>
+    require all granted
+  </Limit>
+  <LimitExcept GET HEAD>
+    require valid-user
+  </LimitExcept>
+</Location>
+{% endif %}
diff --git a/roles/httpd/reverseproxy/templates/reversepassproxy.registry-no-cdn-generic.conf b/roles/httpd/reverseproxy/templates/reversepassproxy.registry-no-cdn-generic.conf
new file mode 100644
index 0000000..54fc273
--- /dev/null
+++ b/roles/httpd/reverseproxy/templates/reversepassproxy.registry-no-cdn-generic.conf
@@ -0,0 +1,72 @@
+RequestHeader set X-Forwarded-Scheme https early
+RequestHeader set X-Scheme https early
+RequestHeader set X-Forwarded-Proto https early
+ProxyPreserveHost On
+
+# This is terible, but Docker.
+RewriteCond %{REQUEST_METHOD} ^(PATCH|POST|PUT|DELETE)$
+{% if env == "production" %}
+RewriteRule ^/v2/(.*)$ http://oci-registry02:5000/v2/$1 [P,L]
+{% elif env == "staging" %}
+RewriteRule ^/v2/(.*)$ http://oci-registry01:5000/v2/$1 [P,L]
+{% endif %}
+RewriteRule ^/v2/(.*)$ http://localhost:6081/v2/$1 [P,L]
+
+RewriteCond "&%{QUERY_STRING}" &annotation(%3A|:)org.flatpak.ref(%3A|:)exists=1
+RewriteCond "&%{QUERY_STRING}" &tag=testing
+RewriteCond "&%{QUERY_STRING}" &architecture=([^&]+)
+RewriteRule "^/index/static$" /index/flatpak-testing-%1.json [L,PT]
+
+RewriteCond "&%{QUERY_STRING}" &annotation(%3A|:)org.flatpak.ref(%3A|:)exists=1
+RewriteCond "&%{QUERY_STRING}" &architecture=([^&]+)
+RewriteRule "^/index/static$" /index/flatpak-%1.json [L,PT]
+
+RewriteCond "&%{QUERY_STRING}" &annotation(%3A|:)org.flatpak.ref(%3A|:)exists=1
+RewriteCond "&%{QUERY_STRING}" &tag=testing
+RewriteRule "^/index/static$" /index/flatpak-testing.json [L,PT]
+
+RewriteCond "&%{QUERY_STRING}" &annotation(%3A|:)org.flatpak.ref(%3A|:)exists=1
+RewriteRule "^/index/static$" /index/flatpak.json [L,PT]
+
+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
+
+  <Limit GET HEAD>
+    Require all granted
+  </Limit>
+</Location>
+
+Alias "/index/" "/srv/web/registry-index/index/"
+Alias "/app-icons/" "/srv/web/registry-index/icons/"
+
+<Directory “/srv/web/registry-index/index/">
+    Options +FollowSymLinks
+
+    ExpiresActive on
+    ExpiresDefault "access plus 30 minutes"
+
+    AllowOverride None
+    Require all granted
+</Directory>
+
+<Directory "/srv/web/registry-index/icons/">
+    ExpiresActive on
+    ExpiresDefault "access plus 1 year"
+
+    AllowOverride None
+    Options +Indexes
+    Require all granted
+</Directory>
-- 
1.8.3.1
_______________________________________________
infrastructure mailing list -- infrastructure@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to infrastructure-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/infrastructure@xxxxxxxxxxxxxxxxxxxxxxx




[Index of Archives]     [Fedora Development]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]

  Powered by Linux