Обзор конфигурации мультикластерной топологии

Для настройки мультикластерной топологии необходимо выполнить следующие действия:

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

Содержание

Создание сертификатов для мультикластерного 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

Применение сертификатов в мультисетевой мультикластерной топологии

Примените корневые и промежуточные сертификаты центра сертификации (CA) к кластерам в мультисетевой мультикластерной топологии.

NOTE

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

Требования

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

Процедура

Переменные окружения

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

ПеременнаяПсевдонимОписание
CTX_CLUSTER1EastИмя контекста в стандартном конфигурационном файле Kubernetes для доступа к кластеру cluster1.
CTX_CLUSTER2WestИмя контекста в стандартном конфигурационном файле Kubernetes для доступа к кластеру cluster2.

Установите две переменные перед продолжением:

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

Применение сертификатов к кластеру East мультикластерной топологии

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

    kubectl --context "${CTX_CLUSTER1}" create namespace istio-system
    kubectl --context "${CTX_CLUSTER1}" label namespace istio-system cpaas.io/project=cpaas-system
  2. Настройте Istio на использование network1 в качестве сети по умолчанию для подов в кластере East, выполнив следующую команду:

    kubectl --context "${CTX_CLUSTER1}" label namespace istio-system topology.istio.io/network=network1
  3. Создайте сертификаты 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

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

Применение сертификатов к кластеру West мультикластерной топологии

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

    kubectl --context "${CTX_CLUSTER2}" create namespace istio-system
    kubectl --context "${CTX_CLUSTER2}" label namespace istio-system cpaas.io/project=cpaas-system
  2. Настройте Istio на использование network2 в качестве сети по умолчанию для подов в кластере West, выполнив следующую команду:

    kubectl --context "${CTX_CLUSTER2}" label namespace istio-system topology.istio.io/network=network2
  3. Создайте сертификаты 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

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

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

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