Настройка IBM Cloud Transformation Advisor

В этом документе описывается настройка для Transformation Advisor 2.4.x+. Информацию по настройке предыдущих версий можно найти здесь.

Во время установки Transformation Advisor параметрам конфигурации присваиваются значения по умолчанию. Хранение данных - один из параметров, который потребуется настроить в зависимости от особенностей среды. См. раздел "Хранение данных" в документе Предварительные требования. В зависимости от среды и параметров может потребоваться дополнительная настройка Transformation Advisor. Ниже приведен список всех параметров конфигурации Transformation Advisor, которые доступны в YAML пользовательского ресурса. См. инструкции по доступу к YAML пользовательского ресурса в разделе Установка. Многие из этих параметров предназначены для углубленной диагностики неполадок и должны использоваться только специалистами.

Параметр Описание Значение по умолчанию
networkPolicy.enabled Включает networkPolicy в кластере. Для углубленной диагностики неполадок. true
route.enabled Включает маршрут к службе. Для углубленной диагностики неполадок. true
route.hosname Имя хоста для маршрута. Задается оператором Transformation Advisor
fips.enabled Укажите значение true в случае установки в среде, где включен FIPS. false
tls.enabled Включает применение TLS при передаче данных между контейнерами. Для углубленной диагностики неполадок. true
tls.caCert Сертификат CA для TLS (инструкции по созданию сертификата клиента приведены ниже.) задается icpa-installer
authentication.disabled.liberty Выключить идентификацию для сервера Liberty. Для углубленной диагностики неполадок. false
authentication.disabled.ui Выключить идентификацию для пользовательского интерфейса. Для углубленной диагностики неполадок. false
authentication.ocp.authIssuerEndpoint Конечная точка источника идентификационных данных. Задается оператором Transformation Advisor
authentication.ocp.apiEndpoint Конечная точка API идентификации. Задается оператором Transformation Advisor
authentication.ocp.secretName Имя пароля для внутренней идентификации. transformation-advisor-secret
authentication.oidc.endpointPort Порт конечной точки идентификации OIDC Задается оператором Transformation Advisor
authentication.oidc.clientId В реестре OIDC будет создана запись с этим ИД ta-ui
authentication.oidc.clientSecret В реестре OIDC будет создана запись с этим паролем Задается оператором Transformation Advisor
authentication.thirdparty.identityRequestEndpoint Конечная точка для запросов на идентификацию через внешнюю службу Значение не задано
authentication.thirdparty.identityRequestEndpointPath Путь к конечной точке для запросов на идентификацию через внешнюю службу Значение не задано
authentication.thirdparty.identityRequestEndpointScope Область конечной точки для запросов на идентификацию через внешнюю службу Значение не задано
authentication.thirdparty.identityRequestEndpointStatePrefix Префикс состояния конечной точки для запросов на идентификацию через внешнюю службу Значение не задано
authentication.thirdparty.tokenRequestEndpoint Конечная точка для запросов маркера внешней службы Значение не задано
authentication.thirdparty.tokenRequestEndpointPath Путь к конечной точке для запросов маркера внешней службы Значение не задано
authentication.thirdparty.tokenVerificationEndpoint Конечная точка для проверки маркеров внешней службы Значение не задано
authentication.thirdparty.tokenVerificationEndpointPath Путь к конечной точке для проверки маркеров внешней службы Значение не задано
couchdb.image Тег образа Couchdb Задается оператором Transformation Advisor
couchdb.imagePullSecret Пароль для загрузки образов. Используется для доступа к реестру разрешенного ПО. См. раздел "Предварительные требования". Нет
couchdb.resources.requests.memory Память запросов (Ресурсы могут изменяться в зависимости от доступности. По умолчанию минимум.) 1Gi
couchdb.resources.requests.cpu Ресурсы процессора для запросов 500m
couchdb.resources.limits.memory Максимальный объем памяти 8Gi
couchdb.resources.limits.cpu Максимальный объем ресурсов 16000m
couchdb.livenessProbe.initialDelaySeconds Начальная задержка проверки активности контейнера в с. (Проверки могут меняться в зависимости от производительности. Обычно подходят значения по умолчанию. Для углубленной диагностики неполадок.) 60
couchdb.livenessProbe.timeoutSeconds Тайм-аут проверки активности контейнера в секундах. Для углубленной диагностики неполадок. 3
couchdb.livenessProbe.periodSeconds Периодичность проверки активности контейнера в секундах. Для углубленной диагностики неполадок. 5
couchdb.livenessProbe.failureThreshold Пороговое число сбоев проверок активности контейнера. Для углубленной диагностики неполадок. 6
couchdb.readinessProbe.initialDelaySeconds Начальная задержка проверки готовности контейнера в секундах. Для углубленной диагностики неполадок. 5
couchdb.readinessProbe.timeoutSeconds Тайм-аут проверки готовности контейнера в секундах. Для углубленной диагностики неполадок. 3
couchdb.readinessProbe.periodSeconds Периодичность проверки готовности контейнера в секундах. Для углубленной диагностики неполадок. 5
couchdb.readinessProbe.failureThreshold Пороговое число сбоев проверок готовности контейнера. Для углубленной диагностики неполадок. 6
couchdb.persistence.enabled Включено постоянное хранение (если нет, все данные теряются при перезапуске контейнера БД). true
couchdb.persistence.accessMode Режим доступа к Couchdb. ReadWriteMany
couchdb.persistence.size Размер хранилища Couchdb. 8Gi
couchdb.persistence.useDynamicProvisioning Использовать динамическое предоставление ресурсов. Не изменять. true
couchdb.persistence.existingClaim Существующий pv claim (обычно существующий PVC указывает на существующие данные). ""
couchdb.persistence.storageClassName Имя класса хранилища Couchdb (например, "rook-ceph-cephfs-internal") ""
couchdb.persistence.supplementalGroups Дополнительные группы Couchdb (обычно используется для NFS) []
transadv.image Тег образа сервера Transadv Liberty. Для углубленной диагностики неполадок.
transadv.imagePullSecret Пароль для загрузки образов. Используется для доступа к реестру разрешенного ПО. См. раздел "Предварительные требования".
transadv.pubilcUrl Внешний URL сервера Transadv Задается программой Transformation Advisor
transadv.image.logLevel Уровень ведения протокола сервера Transadv info
transadv.resources.requests.memory Память для запросов 1Gi
transadv.resources.requests.cpu Ресурсы процессора для запросов 500m
transadv.resources.limits.memory Максимальный объем памяти 8Gi
transadv.resources.limits.cpu Максимальный объем ресурсов 16000m
transadv.livenessProbe.initialDelaySeconds Начальная задержка проверки активности контейнера в секундах. Для углубленной диагностики неполадок. 60
transadv.livenessProbe.timeoutSeconds Тайм-аут проверки активности контейнера в секундах. Для углубленной диагностики неполадок. 3
transadv.livenessProbe.periodSeconds Периодичность проверки активности контейнера в секундах. Для углубленной диагностики неполадок. 5
transadv.livenessProbe.failureThreshold Пороговое число сбоев проверок активности контейнера. Для углубленной диагностики неполадок. 6
transadv.readinessProbe.initialDelaySeconds Начальная задержка проверки готовности контейнера в секундах. Для углубленной диагностики неполадок. 60
transadv.readinessProbe.timeoutSeconds Тайм-аут проверки готовности контейнера в секундах. Для углубленной диагностики неполадок. 3
transadv.readinessProbe.periodSeconds Периодичность проверки готовности контейнера в секундах. Для углубленной диагностики неполадок. 5
transadv.readinessProbe.failureThreshold Пороговое число сбоев проверок готовности контейнера. Для углубленной диагностики неполадок. 6
transadvui.image Тег образа UI Transadv. Для углубленной диагностики неполадок.
transadvui.imagePullSecret Пароль для загрузки образов. Используется для доступа к реестру разрешенного ПО. См. раздел "Предварительные требования".
transadvui.image.logLevel Уровень ведения протокола UI Transadv info
transadvui.useSecureCookie Использовать безопасный cookie для UI Transadv true
transadvui.resources.requests.memory Память для запросов 1Gi
transadvui.resources.requests.cpu Ресурсы процессора для запросов 500m
transadvui.resources.limits.memory Максимальный объем памяти 4Gi
transadvui.resources.limits.cpu Максимальный объем ресурсов 16000m
transadvui.livenessProbe.initialDelaySeconds Начальная задержка проверки активности контейнера в секундах. Для углубленной диагностики неполадок. 60
transadvui.livenessProbe.timeoutSeconds Тайм-аут проверки активности контейнера в секундах. Для углубленной диагностики неполадок. 5
transadvui.livenessProbe.periodSeconds Периодичность проверки активности контейнера в секундах. Для углубленной диагностики неполадок. 30
transadvui.livenessProbe.failureThreshold Пороговое число сбоев проверок активности контейнера. Для углубленной диагностики неполадок. 6
transadvui.readinessProbe.initialDelaySeconds Начальная задержка проверки готовности контейнера в секундах. Для углубленной диагностики неполадок. 5
transadvui.readinessProbe.timeoutSeconds Тайм-аут проверки готовности контейнера в секундах. Для углубленной диагностики неполадок. 5
transadvui.readinessProbe.periodSeconds Периодичность проверки готовности контейнера в секундах. Для углубленной диагностики неполадок. 30
transadvui.readinessProbe.failureThreshold Пороговое число сбоев проверок готовности контейнера. Для углубленной диагностики неполадок. 6

Настройка программы установки CASE

Ниже описываются параметры команд программы установки CASE:

Параметры действия установки:

cloudctl case launch \
    --case ibm-transadv \
    --inventory v2InstallProduct \
    --namespace $TA_PROJECT \
    --action install \
    --args "[параметры]"
--acceptLicense <true|false>        : (обязательный) Должен быть указан со значением true для продолжения установки.
--installIbmCatalog <true|false>    : (необязательный) Если указано значение true, будет установлен каталог операторов IBM (если это еще не сделано). По умолчанию false.
--installTaCatalog <true|false>     : (необязательный) Если указано значение true, будет установлен каталог Transformation Advisor (если это еще не сделано). По умолчанию false.
--secret <пароль>                   : (необязательный) Пароль для загрузки образов Tranformation Advisor из реестра разрешенного ПО.
--registry <реестр>                 : (необязательный) Реестр разрешенного ПО, например cp.icr.io.
--user <пользователь>               : (необязательный) Имя пользователя для доступа к реестру разрешенного ПО.
--pass <пароль>                     : (необязательный) Пароль пользователя для доступа к реестру разрешенного ПО.
--tryAndBuy                               : (необязательный) Если нет ключа разрешения для реестра разрешенного ПО, то с помощью этого параметра Transformation Advisor можно установить в пробном режиме.
--persistence <true|false>          : (необязательный) Требуется ли хранение данных для Transformation Advisor (по умолчанию true).
--accessMode <режим-доступа>        : (необязательный) Режим доступа к хранилищу. По умолчанию ReadWriteMany.
--persistenceClaim <затребование>   : (необязательный) Использовать существующее затребование хранения данных.
--storageClass <класс-хранилища>    : (необязательный) Рекомендуемый способ использования хранилища с Transformation Advisor. Укажите допустимый класс хранилища для использования.
--supplementalGroups [gid,...]            : (необязательный) Может использоваться, когда применяется файловое хранилище, для настройки прав доступа на чтение/запись к хранилищу у контейнера базы данных.
--hostName <имя-хоста>              : (необязательный) Имя хоста для доступа к кластеру. Это значение задается программой Transformation Advisor. В большинстве сред менять его не требуется.
--apiEndpoint <конечная-точка-api>  : (необязательный) URL API для кластера. Это значение задается программой Transformation Advisor. В большинстве сред менять его не требуется.
--authIssuerEndpoint <конечная-точка-источника-идентификации>   : (необязательный) Конечная точка источника идентификации для кластера. Это значение задается программой Transformation Advisor. В большинстве сред менять его не требуется.
--publicUrlServer                   : (необязательный) См. документацию. Это значение задается программой Transformation Advisor. В большинстве сред менять его не требуется.
--publicUrlUI                       : (необязательный) См. документацию. Это значение задается программой Transformation Advisor. В большинстве сред менять его не требуется.
--customCACert <путь-к-файлу> : (необязательный) Файл пользовательского сертификата CA.
--authConfigFile <путь-к-файлу> (необязательный) Файл для настройки идентификации через внешнюю службу
--fips <true|false>                  : (необязательный) Требуется ли поддержка FIPS в экземпляре Transformation Advisor. По умолчанию false.
--checkUpgrade                      : (необязательный) Проверить наличие установленной версии Transformation Advisor в текущем пространстве имен и, если это так, попытаться выполнить автоматическое обновление до новой версии.
--upgrade                           : (необязательный) По возможности обновить текущую установленную версию Transformation Advisor.
--taHelp                            : (необязательный) Вывести список доступных параметров.

Параметры действия удаления:

cloudctl case launch \
    --case ibm-transadv \
    --inventory v2InstallProduct \
    --namespace $TA_PROJECT \
    --action uninstall \
    --args "[параметры]"
--uninstallIbmCatalog <true|false>    : (необязательный) Если указано значение true, будет удален каталог операторов IBM. По умолчанию false.
--uninstallTaCatalog <true|false>    : (необязательный) Если указано значение true, будет удален каталог операторов IBM. По умолчанию false.

Настройка идентификации через внешнюю службу

Настройка идентификации через внешнюю службу (установка через пользовательский интерфейс)

Примечание: В дополнение к свойствам, описанным в следующих примерах, также необходимо задать значения authentication.oidc.clientId и authentication.oidc.clientSecret в соответствии с выбранным источником идентификации.

Ниже приведен пример конфигурации для объекта конфигурации thirdparty, позволяющей использовать службу Github OAuth:

      description: "github"
      identityRequestEndpoint: "https://github.com"
      identityRequestEndpointPath: "/login/oauth/authorize"
      identityRequestEndpointScope: "openid+offline"
      identityRequestEndpointStatePrefix: ""
      tokenRequestEndpoint: "https://github.com"
      tokenRequestEndpointPath: "/login/oauth/access_token"
      tokenVerificationEndpoint: "https://api.github.com"
      tokenVerificationEndpointPath: "/user"

Ниже приведен пример конфигурации для объекта конфигурации thirdparty, позволяющей использовать службу Box OAuth:

      description: "box"
      identityRequestEndpoint: "https://account.box.com"
      identityRequestEndpointPath: "/api/oauth2/authorize"
      identityRequestEndpointScope: "root_readonly"
      identityRequestEndpointStatePrefix: ""
      tokenRequestEndpoint: "https://api.box.com"
      tokenRequestEndpointPath: "/oauth2/token"
      tokenVerificationEndpoint: "https://api.box.com"
      tokenVerificationEndpointPath: "/2.0/users/me"

Настройка идентификации через внешнюю службу (установка с помощью CASE)

Укажите файл конфигурации для идентификации через внешнюю службу в параметре --authConfigFile с действием CASE install. Ниже приведен пример файла для службы GitHub OAuth: Формат файла изменять не следует.

# укажите значение true, чтобы выключить идентификацию на сервере пользовательского интерфейса
TA_AUTH_UI_DISABLED=false
# укажите значение true, чтобы выключить идентификацию на сервере Liberty
TA_AUTH_LIBERTY_DISABLED=false

# ИД клиента сервера OAuth2
TA_AUTH_OIDC_CLIENT_ID=xxx
# Пароль клиента сервера OAuth2
TA_AUTH_OIDC_CLIENT_SECRET=xxx

# конечная точка для запроса идентификации на сервере OAuth2 (без символа / на конце)
TA_AUTH_IDENTITY_REQUEST_ENDPOINT=https://github.com
# путь к конечной точке для запроса идентификации на сервере OAuth2 (с символом / в начале)
TA_AUTH_IDENTITY_REQUEST_ENDPOINT_PATH=/login/oauth/authorize
# Область OAuth2
TA_AUTH_IDENTITY_REQUEST_ENDPOINT_SCOPE=openid+offline
# состояние OAuth2 требует минимальную длину (по умолчанию пустое значение)
TA_AUTH_CALLBACK_STATE_PREFIX_PADDING=

# конечная точка для запроса маркера сервера OAuth2 (без символа / на конце)
TA_AUTH_TOKEN_REQUEST_ENDPOINT=https://github.com
# путь к конечной точке для запроса маркера сервера OAuth2 (с символом / в начале)
TA_AUTH_TOKEN_REQUEST_ENDPOINT_PATH=/login/oauth/access_token

# конечная точка для проверки маркеров сервера OAuth2 (без символа / на конце)
TA_AUTH_TOKEN_VERIFICATION_ENDPOINT=https://api.github.com
# путь к конечной точке для проверки маркеров сервера OAuth2 (с символом / в начале)
TA_AUTH_TOKEN_VERIFICATION_ENDPOINT_PATH=/user

Включение поддержки Bring Your Own Key (BYOK)

Для внутреннего обмена данными по TLS можно использовать собственный сертификат и ключ.

Предполагается, что:

  1. Общедоступный сертификат - public.crt, личный ключ - private.pem.
  2. Transformation Advisor (TA) установлен или планируется установить в пространстве имен ta.

    Ниже приведен пример того, как получить пару из ключа и сертификата (используйте тот же формат для своего ключа и сертификата):

    openssl req -newkey rsa:2048 -nodes -keyout private.pem -x509 -days 730 -out public.crt -subj "/C=IE/ST=Cork/L=Cork/O=IBM/CN=internal.ta.ibm.com"

После получения пары из сертификата и ключа выполните следующие действия, чтобы их активировать:

  1. Переключитесь на пространство имен ta или создайте его, если TA еще не установлен.

       # переключите проект
    oc project ta
    

    или

       # создайте пространство имен ta, если его еще нет
    oc create ns ta
    
  2. Удалите пароль Transformation Advisor transformation-advisor-secret, если он существует.

    oc delete secret transformation-advisor-secret
    
  3. При установке с помощью программы установки CASE укажите параметр --customCACert <public.crt>, где <public.crt> - полный путь к файлу public.crt.

    В случае установки через пользовательский интерфейс OpenShift измените значение свойства caCert в YAML пользовательского ресурса. См. инструкции по доступу к YAML пользовательского ресурса из пользовательского интерфейса в разделе Установка.

    Пример caCert в YAML пользовательского ресурса:

      tls:
    

    enabled: true caCert: | -----BEGIN CERTIFICATE----- MIIDKjCCAhICCQCjbqTC95dw+jANBgkqhkiG9w0BAQsFADBXMQswCQYDVQQGEwJJ RTENMAsGA1UECAwEQ29yazENMAsGA1UEBwwEQ29yazEMMAoGA1UECgwDSUJNMRww GgYDVQQDDBNpbnRlcm5hbC50YS5pYm0uY29tMB4XDTIwMDEyMDEzMjkxMVoXDTIy MDExOTEzMjkxMVowVzELMAkGA1UEBhMCSUUxDTALBgNVBAgMBENvcmsxDTALBgNV BAcMBENvcmsxDDAKBgNVBAoMA0lCTTEcMBoGA1UEAwwTaW50ZXJuYWwudGEuaWJt LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMIGfSptUnimmxZ IdVK6uLscJQetel+MX7u4viIaBwdd/IGDE7GHDHEYYFmEfv+gYbVT1+EAkdiLtHG SutUMPxpbUyv1xCW+9z3nDInHKzZxHMJJwB5j4+oVq+XkdXzZu2hwuoc0aA7Ek3r L6FFPIQi9bcmayuOa7HRpH43+86JuJF8tcx1MrDxWzBJraZNuvDVLs574qr/eM2d x5N+qkJqwOy94k0eH+x7kAKRp6vBEcVR+I/HHYDZSnC4UNEX8I/NbCS3wMUXysC9 lcC2vsIKrCRSn9Fu/ixWwlGy6QV1my4H6ZPtvJV56fcS42523KTDbT628Xa9B3/p cX0WZWMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEADIyp9A4p46DZ6brEbL0e+wWf bnnymf1QZWcz4xrrMW2CcKBmRqFIPFPBpSEbCKlsFaZex5863z7dsa5SU7fHRdHF Yk9t8mGu2B+yZF6nW4biPmezaDLPi9VUomxcd+/rxWKhZJIufWXxs22AOhNQHeeK PSjP8RPCh1Gny7kC3jUz1Q/wd4QF/OGeu+Xf5jhERpJPfjKMtPMPJPGiPYSqhYQM VA6G83nZVlPDtnFJ28AzZU2/YtvCzhU66Ua5PjbSG1w6QsXZt/lE3E9utcJ+MNQi 3JwrLp4/97cupXsGmPPmkvH50LB8ex/N/ra6QOLGLm0gU218yXu7KezOfZNkTw== -----END CERTIFICATE-----

    Значение можно вручную скопировать и вставить в нужное место. Важно сохранить отступ. Отступ строк сертификата содержит 2 дополнительных пробела по сравнению со строкой caCert.

  4. Заново создайте секрет TA

    # создать key.p12
    

    openssl pkcs12 -export -inkey private.pem -in public.crt -name default -out key.p12 -passout pass:plain-text-password

    # private.pem и public.crt в кодировке base64
    

    base64 -w 0 ./private.pem > private-base64 base64 -w 0 ./public.crt > public-base64

    в Mac

    base64 ./private.pem > private-base64

    base64 ./public.crt > public-base64

    # создать ключ и начальный вектор для AES-CBC-256 (P)
    # длина ключа для aes256 составляет 256 бит (около 32 символов)
    TA_TEMP_KEY=`LC_CTYPE=C tr -dc A-Za-z0-9_ < /dev/urandom | head -c 32 | xargs`
    # длина ключа для aes256 составляет 128 бит (около 16 символов)
    TA_TEMP_IV=`LC_CTYPE=C tr -dc A-Za-z0-9_ < /dev/urandom | head -c 16 | xargs`
    
    # создать transformation-advisor-secret
    

    oc create secret generic transformation-advisor-secret \ --from-literal=db_username='plain-text-username' --from-literal=secret='plain-text-password' \ --from-file=ta_public_key=./public-base64 --from-file=ta_private_key=./private-base64 \ --from-literal=ta_aes_key=$TA_TEMP_KEY --from-literal=ta_aes_iv=$TA_TEMP_IV \ --from-file=key.p12=key.p12

Теперь можно приступать к установке.