Настройка jenkins на GKE с входом с поддержкой tls - PullRequest
0 голосов
/ 13 января 2020

Я устанавливаю jenkins на GKE.

Я хочу использовать ingress (чтобы избежать LoadBalancer), но я также хочу, чтобы он включил TLS.

Здесь - это ingress - values:

  ingress:
    enabled: false
    # For Kubernetes v1.14+, use 'networking.k8s.io/v1beta1'
    apiVersion: "extensions/v1beta1"
    labels: {}
    annotations: {}
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
    # Set this path to jenkinsUriPrefix above or use annotations to rewrite path
    # path: "/jenkins"
    # configures the hostname e.g. jenkins.example.com
    hostName:
    tls:
    # - secretName: jenkins.cluster.local
    #   hosts:
    #     - jenkins.cluster.local

Предполагается, что у меня уже есть CloudDNS (с возможностью перенаправления на my-network.mydomain.net), и я хочу, чтобы jenkins был доступен через jenkins.my-network.mydomain.net, как мне настроить вышеуказанные значения?

В чем полезность values.ingress.tls.secretName?

В случае, если я включу tls, каким будет орган выдачи соответствующего сертификата? GCP обрабатывает это автоматически?

1 Ответ

1 голос
/ 13 января 2020

Для входа, который вы настроите, потребуется один loadBalancer. Этот балансировщик нагрузки будет получать трафик c от клиента и перенаправлять его на входной контроллер (gke ingress, nginx et c). Таким образом, вы действительно не полностью избегаете loadbalancer в этом случае.

Вход используется для экспоненциального предотвращения создания балансировщиков нагрузки, если вы используете службу kubernetes типа LoadBalancer для обслуживания внешних клиентов. В вашем случае главная служба jenkins master вместо прямого доступа к балансировщику нагрузки вы можете выбрать вход, чтобы избежать создания более одного балансировщика нагрузки.

Какова полезность values.ingress.tls.secretName?

Он сообщает контроллеру Ingress, чтобы защитить канал от клиента к балансировщику нагрузки с использованием TLS , Вам необходимо убедиться, что созданный вами секрет TLS получен из сертификата, содержащего общее имя (CN), также известное как полное доменное имя (FQDN) для jenkins.cluster.local.

Вам также необходимо создать секрет с именем jenkins.cluster.local

apiVersion: v1
kind: Secret
metadata:
  name: jenkins.cluster.local
  namespace: default
data:
  tls.crt: base64 encoded cert
  tls.key: base64 encoded key
type: kubernetes.io/tls

Если я включу tls, какой орган выдаст соответствующий сертификат? GCP обрабатывает это автоматически?

GCP не обрабатывает это автоматически. Выберите пункт «Параметры для предоставления сертификатов SSL» в официальных документах . Из всех трех вариантов я считаю, что вам нужно использовать сертификаты самоуправления в качестве секретных ресурсов, предоставить собственный сертификат SSL и создать секрет для его хранения. Затем вы можете обратиться к секрету в спецификации Ingress, чтобы создать балансировщик нагрузки HTTP (S), который использует сертификат. Обратитесь к инструкциям для использования сертификатов в секретах для получения дополнительной информации.

...