cert-manager

cert-manager — це інструмент для автоматизації управління сертифікатами. Його можна інтегрувати зі шлюзами Istio для управління TLS сертифікатами.

Конфігурація

Ознайомтеся з документацією з встановлення cert-manager для початку роботи. Ніяких спеціальних змін не потрібно для роботи з Istio.

Використання

Шлюз Istio

cert-manager можна використовувати для запису секрету в Kubernetes, який потім може бути використаний шлюзом.

  1. Для початку налаштуйте ресурс Issuer, слідуючи документації issuer cert-manager. Issuer є ресурсом Kubernetes, який представляє центри сертифікації (CA), які можуть генерувати підписані сертифікати, виконуючи запити на підписання сертифікатів. Наприклад, Issuer може виглядати так:

    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: ca-issuer
      namespace: istio-system
    spec:
      ca:
        secretName: ca-key-pair
  2. Далі налаштуйте ресурс Certificate, слідуючи документації cert-manager. Certificate має бути створений в тому ж просторі імен, що і розгортання istio-ingressgateway. Наприклад, Certificate може виглядати так:

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: ingress-cert
      namespace: istio-system
    spec:
      secretName: ingress-cert
      commonName: my.example.com
      dnsNames:
      - my.example.com
      ...
  3. Після створення сертифіката, ми повинні побачити створений секрет у просторі імен istio-system. Це можна потім використовувати в конфігурації tls для шлюзу під credentialName:

    apiVersion: networking.istio.io/v1
    kind: Gateway
    metadata:
      name: gateway
    spec:
      selector:
        istio: ingressgateway
      servers:
      - port:
          number: 443
          name: https
          protocol: HTTPS
        tls:
          mode: SIMPLE
          credentialName: ingress-cert # Це повинно відповідати secretName сертифіката
        hosts:
        - my.example.com # Це повинно відповідати DNS імені в сертифікаті

Kubernetes Ingress

cert-manager забезпечує безпосередню інтеграцію з Kubernetes Ingress, конфігуруючи анотацію на обʼєкті Ingress. Якщо використовується цей метод, Ingress має розміщуватись в тому ж просторі імен, що і розгортання istio-ingressgateway, оскільки секрети читатимуться лише в тому ж просторі імен.

Альтернативно, можна створити Certificate, як описано в Шлюз Istio, а потім використати його в обʼєкті Ingress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.class: istio
spec:
  rules:
  - host: my.example.com
    http: ...
  tls:
  - hosts:
    - my.example.com # Це повинно відповідати DNS імені в сертифікаті
    secretName: ingress-cert # Це повинно відповідати secretName сертифіката
Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

Дякуємо за ваш відгук!