Настройка учетных данных репозитория для скачивания образов контейнеров в приложении

Настройте проверку подлинности реестра контейнеров, добавив RepositoryCredentials в раздел ContainerHostPolicies манифеста приложения. Добавьте учетную запись и пароль для реестра контейнеров (myregistry.azurecr.io в приведенном ниже примере). Это позволит службе скачать образ контейнера из репозитория.

<ServiceManifestImport>
    ...
    <Policies>
        <ContainerHostPolicies CodePackageRef="Code">
            <RepositoryCredentials AccountName="myregistry" Password="=P==/==/=8=/=+u4lyOB=+=nWzEeRfF=" PasswordEncrypted="false"/>
            <PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
        </ContainerHostPolicies>
    </Policies>
    ...
</ServiceManifestImport>

Рекомендуется зашифровать пароль репозитория с помощью сертификата шифрования, развернутого на всех узлах кластера. Когда служба Service Fabric развернет пакет службы в кластере, сертификат шифрования будет использоваться для расшифровки зашифрованного текста. Командлет Invoke-ServiceFabricEncryptText используется для создания зашифрованного текста пароля, который добавляется в файл ApplicationManifest.xml. Дополнительные сведения о сертификатах и семантике шифрования см. в разделе Управление секретами.

Настройка учетных данных на уровне кластера

Service Fabric позволяет настроить учетные данные на уровне кластера, которые могут использоваться приложениями как учетные данные репозитория по умолчанию.

Эту возможность можно включить или отключить, добавив атрибут UseDefaultRepositoryCredentials к ContainerHostPolicies в файле ApplicationManifest.xml со значением true или false.

<ServiceManifestImport>
    ...
    <Policies>
        <ContainerHostPolicies CodePackageRef="Code" UseDefaultRepositoryCredentials="true">
            <PortBinding ContainerPort="80" EndpointRef="Guest1TypeEndpoint"/>
        </ContainerHostPolicies>
    </Policies>
    ...
</ServiceManifestImport>

Затем Service Fabric будет по умолчанию использовать учетные данные репозитория, заданные в ClusterManifest в разделе Hosting. Если UseDefaultRepositoryCredentials — true, Service Fabric считывает следующие значения с ClusterManifest:

  • DefaultContainerRepositoryAccountName (строка).
  • DefaultContainerRepositoryPassword (строка).
  • IsDefaultContainerRepositoryPasswordEncrypted (логическое значение).
  • DefaultContainerRepositoryPasswordType (строка)

Ниже приведен пример того, что можно добавить в раздел Hosting файла ClusterManifestTemplate.json. Раздел Hosting можно добавить при создании кластера или позднее, при обновлении конфигурации. Дополнительные сведения см. в статьях Настройка параметров кластера Service Fabric и Управление секретами в приложениях Service Fabric.

"fabricSettings": [
	...,
	{
        "name": "Hosting",
        "parameters": [
          {
            "name": "EndpointProviderEnabled",
            "value": "true"
          },
          {
            "name": "DefaultContainerRepositoryAccountName",
            "value": "someusername"
          },
          {
            "name": "DefaultContainerRepositoryPassword",
            "value": "somepassword"
          },
          {
            "name": "IsDefaultContainerRepositoryPasswordEncrypted",
            "value": "false"
          },
          {
            "name": "DefaultContainerRepositoryPasswordType",
            "value": "PlainText"
          }
        ]
      },
]

Использование токенов в качестве учетных данных реестра

Service Fabric поддерживает использование токенов в качестве учетных данных для скачивания образов контейнеров. Поскольку при этом используется управляемое удостоверение базового масштабируемого набора виртуальных машин для проверки подлинности в реестре, нет необходимости управлять учетными данными пользователей. Дополнительные сведения см. в статье Управляемые удостоверения для ресурсов Azure Чтобы воспользоваться этой возможностью, выполните следующие действия.

  1. Убедитесь, что для виртуальной машины включено управляемое удостоверение, назначенное системой .

    Портал Azure: параметр

Примечание

Для управляемого удостоверения, назначенного пользователем, пропустите этот шаг. Остальные шаги выполняются, если масштабируемый набор связан только с одним управляемым удостоверением, назначенным пользователем.

  1. Предоставьте разрешения на доступ к масштабируемому набору виртуальных машин, чтобы извлечь или прочитать образы из реестра. На портале Azure в колонке "Управление доступом (IAM)" реестра контейнеров Azure добавьте назначение роли для виртуальной машины:

    Добавление субъекта виртуальной машины в запись контроля доступа

  2. Затем измените манифест приложения. В разделе ContainerHostPolicies добавьте атрибут ‘UseTokenAuthenticationCredentials=”true”.

      <ServiceManifestImport>
          <ServiceManifestRef ServiceManifestName="NodeServicePackage" ServiceManifestVersion="1.0"/>
      <Policies>
        <ContainerHostPolicies CodePackageRef="NodeService.Code" Isolation="process" UseTokenAuthenticationCredentials="true">
          <PortBinding ContainerPort="8905" EndpointRef="Endpoint1"/>
        </ContainerHostPolicies>
        <ResourceGovernancePolicy CodePackageRef="NodeService.Code" MemoryInMB="256"/>
      </Policies>
      </ServiceManifestImport>
    

    Примечание

    Если для флага UseDefaultRepositoryCredentials задано значение true и UseTokenAuthenticationCredentials также имеет значение true, во время развертывания возникнет ошибка.

Дальнейшие действия