• Русский
  • Обзор конфигурации Multi-Cluster

    Чтобы настроить топологию multi-cluster, необходимо выполнить следующие действия:

    • Установить плагин Alauda Container Platform Networking for Multus для каждого кластера, при этом kube-ovn должен быть версии v4.1.5 или более поздней.
    • Установить Alauda Service Mesh Operator для каждого кластера.
    • API Server в каждом кластере должен быть доступен из других кластеров в mesh.
    • Создать или получить доступ к корневым и промежуточным сертификатам для каждого кластера.
    • Применить сертификаты безопасности для каждого кластера.
    • Установить Istio для каждого кластера.

    Создание сертификатов для multi-cluster mesh

    Создайте сертификаты центра сертификации (CA) для корневого и промежуточного уровней для двух кластеров.

    Предварительные требования

    • Локально установлен OpenSSL.

    Порядок действий

    Создание корневого сертификата CA

    1. Создайте ключ для корневого сертификата, выполнив следующую команду:

      openssl genrsa -out root-key.pem 4096
    2. Создайте файл конфигурации OpenSSL с именем root-ca.conf для сертификатов корневого CA:

      Пример файла конфигурации корневого сертификата
      encrypt_key = no
      prompt = no
      utf8 = yes
      default_md = sha256
      default_bits = 4096
      req_extensions = req_ext
      x509_extensions = req_ext
      distinguished_name = req_dn
      [ req_ext ]
      subjectKeyIdentifier = hash
      basicConstraints = critical, CA:true
      keyUsage = critical, digitalSignature, nonRepudiation, keyEncipherment, keyCertSign
      [ req_dn ]
      O = Istio
      CN = Root CA
    3. Создайте запрос на подпись сертификата, выполнив следующую команду:

      openssl req -sha256 -new -key root-key.pem \
          -config root-ca.conf \
          -out root-cert.csr
    4. Создайте общий корневой сертификат, выполнив следующую команду:

      openssl x509 -req -sha256 -days 3650 \
          -signkey root-key.pem \
          -extensions req_ext -extfile root-ca.conf \
          -in root-cert.csr \
          -out root-cert.pem

    Создание промежуточного сертификата CA для кластера East

    1. Создайте каталог с именем east, выполнив следующую команду:

      mkdir east
    2. Создайте ключ для промежуточного сертификата для кластера East, выполнив следующую команду:

      openssl genrsa -out east/ca-key.pem 4096
    3. Создайте файл конфигурации OpenSSL с именем intermediate.conf в каталоге east/ для промежуточного сертификата кластера East. Скопируйте следующий пример файла и сохраните его локально:

      Пример файла конфигурации
      [ req ]
      encrypt_key = no
      prompt = no
      utf8 = yes
      default_md = sha256
      default_bits = 4096
      req_extensions = req_ext
      x509_extensions = req_ext
      distinguished_name = req_dn
      [ req_ext ]
      subjectKeyIdentifier = hash
      basicConstraints = critical, CA:true, pathlen:0
      keyUsage = critical, digitalSignature, nonRepudiation, keyEncipherment, keyCertSign
      subjectAltName=@san
      [ san ]
      DNS.1 = istiod.istio-system.svc
      [ req_dn ]
      O = Istio
      CN = Intermediate CA
      L = east
    4. Создайте запрос на подпись сертификата, выполнив следующую команду:

      openssl req -new -config east/intermediate.conf \
        -key east/ca-key.pem \
        -out east/cluster-ca.csr
    5. Создайте промежуточный сертификат CA для кластера East, выполнив следующую команду:

      openssl x509 -req -sha256 -days 3650 \
        -CA root-cert.pem \
        -CAkey root-key.pem -CAcreateserial \
        -extensions req_ext -extfile east/intermediate.conf \
        -in east/cluster-ca.csr \
        -out east/ca-cert.pem
    6. Создайте цепочку сертификатов из промежуточного и корневого сертификатов CA для кластера east, выполнив следующую команду:

      cat east/ca-cert.pem root-cert.pem > east/cert-chain.pem && cp root-cert.pem east

    Создание промежуточного сертификата CA для кластера West

    1. Создайте каталог с именем west, выполнив следующую команду:

      mkdir west
    2. Создайте ключ для промежуточного сертификата для кластера West, выполнив следующую команду:

      openssl genrsa -out west/ca-key.pem 4096
    3. Создайте файл конфигурации OpenSSL с именем intermediate.conf в каталоге west/ для промежуточного сертификата кластера West. Скопируйте следующий пример файла и сохраните его локально:

      Пример файла конфигурации
      [ req ]
      encrypt_key = no
      prompt = no
      utf8 = yes
      default_md = sha256
      default_bits = 4096
      req_extensions = req_ext
      x509_extensions = req_ext
      distinguished_name = req_dn
      [ req_ext ]
      subjectKeyIdentifier = hash
      basicConstraints = critical, CA:true, pathlen:0
      keyUsage = critical, digitalSignature, nonRepudiation, keyEncipherment, keyCertSign
      subjectAltName=@san
      [ san ]
      DNS.1 = istiod.istio-system.svc
      [ req_dn ]
      O = Istio
      CN = Intermediate CA
      L = west
    4. Создайте запрос на подпись сертификата, выполнив следующую команду:

      openssl req -new -config west/intermediate.conf \
        -key west/ca-key.pem \
        -out west/cluster-ca.csr
    5. Создайте промежуточный сертификат CA для кластера West, выполнив следующую команду:

      openssl x509 -req -sha256 -days 3650 \
        -CA root-cert.pem \
        -CAkey root-key.pem -CAcreateserial \
        -extensions req_ext -extfile west/intermediate.conf \
        -in west/cluster-ca.csr \
        -out west/ca-cert.pem
    6. Создайте цепочку сертификатов из промежуточного и корневого сертификатов CA для кластера west, выполнив следующую команду:

      cat west/ca-cert.pem root-cert.pem > west/cert-chain.pem && cp root-cert.pem west

    Применение сертификатов к multi-network multi-cluster mesh

    Примените сертификаты центра сертификации (CA) для корневого и промежуточного уровней к кластерам в топологии multi-network multi-cluster.

    NOTE

    В этой процедуре CLUSTER1 — это кластер East, а CLUSTER2 — кластер West.

    Предварительные требования

    • У вас есть доступ к двум кластерам с поддержкой внешнего load balancer.
    • Вы создали корневой сертификат CA и промежуточные сертификаты CA для каждого кластера либо они были предоставлены вам.

    Порядок действий

    Переменные среды

    В дальнейшем будут использоваться следующие переменные среды, чтобы упростить инструкции:

    ПеременнаяПсевдонимОписание
    CTX_CLUSTER1EastИмя контекста в файле Kubernetes configuration file, используемом для доступа к кластеру cluster1.
    CTX_CLUSTER2WestИмя контекста в файле Kubernetes configuration file, используемом для доступа к кластеру cluster2.

    Задайте обе переменные перед продолжением:

    export CTX_CLUSTER1=<your cluster1 context>
    export CTX_CLUSTER2=<your cluster2 context>

    Применение сертификатов к кластеру East в топологии multi-cluster

    1. Создайте пространство имен istio-system, выполнив следующую команду:

      kubectl --context "${CTX_CLUSTER1}" create namespace istio-system
    2. Создайте сертификаты CA, цепочку сертификатов и закрытый ключ для Istio в кластере East, выполнив следующую команду:

      kubectl get secret -n istio-system --context "${CTX_CLUSTER1}" cacerts || kubectl create secret generic cacerts -n istio-system --context "${CTX_CLUSTER1}" \
        --from-file=east/ca-cert.pem \
        --from-file=east/ca-key.pem \
        --from-file=east/root-cert.pem \
        --from-file=east/cert-chain.pem
      NOTE

      Если вы следовали инструкциям в разделе Создание сертификатов для multi-cluster mesh, ваши сертификаты будут находиться в каталоге east/. Если ваши сертификаты находятся в другом каталоге, соответствующим образом измените синтаксис.

    Применение сертификатов к кластеру West в топологии multi-cluster

    1. Создайте пространство имен istio-system, выполнив следующую команду:

      kubectl --context "${CTX_CLUSTER2}" create namespace istio-system
    2. Создайте сертификаты CA, цепочку сертификатов и закрытый ключ для Istio в кластере West, выполнив следующую команду:

      kubectl get secret -n istio-system --context "${CTX_CLUSTER2}" cacerts || kubectl create secret generic cacerts -n istio-system --context "${CTX_CLUSTER2}" \
        --from-file=west/ca-cert.pem \
        --from-file=west/ca-key.pem \
        --from-file=west/root-cert.pem \
        --from-file=west/cert-chain.pem
      NOTE

      Если вы следовали инструкциям в разделе Создание сертификатов для multi-cluster mesh, ваши сертификаты будут находиться в каталоге west/. Если ваши сертификаты находятся в другом каталоге, соответствующим образом измените синтаксис.

    Следующие шаги

    Установите Istio во всех кластерах, входящих в топологию mesh.