Конфигурация Spinnaker HTTPS через Apache - PullRequest
0 голосов
/ 07 января 2020

My Spinnaker работает в Kubernetes с типом сервиса: LoadBalancer и добавил ниже azure аннотации для получения внутреннего su bnet частного ip-адреса для предоставления сервиса внутри.

  annotations:
    service.beta.kubernetes.io/azure-load-balancer-internal: "true"
    service.beta.kubernetes.io/azure-load-balancer-internal-subnet: subnetName

У меня есть одна Ubuntu ВМ, где установлена ​​Apache. Создан самозаверяющий сертификат и завершен в конфигурации apache, и я могу получить доступ к домашней странице apache с помощью HTTPS.

Затем я создал правило прокси для IP-адреса службы Spinnaker. В основном я хочу получить доступ к Spinnaker из Apache HTTPS -> к внутреннему HTTP-траффику c в сторону сервиса kubernetes.

Вот Apache конфигурации:

xxxx@xxxx:/etc/apache2/sites-available$ ls -ltrh
total 28K
-rw-r--r-- 1 root root 1332 Jul 16 18:14 000-default.conf
-rw-r--r-- 1 root root 6338 Jul 16 18:14 default-ssl.conf
drwxr-xr-x 2 root root 4096 Dec 12 17:24 abc
-rw-r--r-- 1 root root  680 Dec 12 13:04 abc.conf
drwxr-xr-x 2 root root 4096 Dec 12 14:29 xyz
-rw-r--r-- 1 root root 1151 Dec 12 13:08 xyz.conf

cat abc/00-redirect-to-https.conf
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^spinnaker$ / [L,R=302]


cat abc.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    LogLevel warn
    ErrorLog ${APACHE_LOG_DIR}/abc_error.log
    CustomLog ${APACHE_LOG_DIR}/abc_access.log combined

    <IfModule mod_headers.c>
      RequestHeader unset X-Forwarded-For
      RequestHeader unset X-Forwarded-Host
      RequestHeader unset X-Forwarded-Server
      RequestHeader set X-Forwarded-Proto "http"
      RequestHeader set X-Forwarded-Port "80"
    </IfModule>

    # Apache will try to set application/json based on mime type
    # This behaviour casing problems with empty json responses from spring
    RemoveType json

    Include sites-available/abc/*.conf
</VirtualHost>


cat xyz/00-spinnaker.conf
ProxyPass /spinnaker balancer://spinnaker
ProxyPassReverse  /spinnaker balancer://spinnaker
ProxyRequests     Off
AllowEncodedSlashes NoDecode
<Proxy balancer://spinnaker>
    BalancerMember http://172.18.1.99:9000/spinnaker loadfactor=1 keepalive=On retry=0
    ProxySet lbmethod=bytraffic
</Proxy>


cat xyz.conf
<VirtualHost *:443>
    ServerAdmin webmaster@localhost

    ServerName FQDN

    LogLevel warn
    ErrorLog ${APACHE_LOG_DIR}/xyz_error.log
    CustomLog ${APACHE_LOG_DIR}/xyz_access.log combined

    <IfModule mod_headers.c>
      RequestHeader unset X-Forwarded-For
      RequestHeader unset X-Forwarded-Host
      RequestHeader unset X-Forwarded-Server
      RequestHeader set X-Forwarded-Proto "https"
      RequestHeader set X-Forwarded-Port "443"
    </IfModule>

    SSLEngine on
    SSLProtocol -ALL +TLSv1 +TLSv1.1 +TLSv1.2
    SSLHonorCipherOrder On
    SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

    SSLCertificateFile    /etc/apache2/certs/ca.cert
    SSLCertificateKeyFile /etc/apache2/certs/ca.key


    # Apache will try to set application/json based on mime type
    # This behaviour casing problems with empty json responses from spring
    RemoveType json

    Include sites-available/xyz/*.conf

</VirtualHost>

, если я запрашиваю этот URL-адрес в браузере https://apacheServerDomainName/spinnaker затем перенаправляет его на внутреннюю версию spinnaker, но затем, если я хочу go на любой другой странице spinnaker, скажем, нажмите на проекты, приложения и т. д. c. тогда он не будет работать, потому что url изменится на https://apacheServerDomainName/applications, и это даст 404, потому что он предполагает получение страницы с локального сервера ubuntu apache, тогда как этот запрос также должен перенаправлять и отвечать от spinnaker.

, пожалуйста, сообщите, какого рода apache rewrite rule может помочь выполнить это требование или любое другое предложение.

1 Ответ

0 голосов
/ 07 января 2020

Выполните следующие действия

  1. развертывание nginx входной контроллер
  2. Определение правила входа для Spinnaker, включая сертификат TLS в секретном
  3. Nginx контроллер будет делать Завершение TLS, позволяющее внешние соединения по HTTPS
...