HTTP не работает в Service Fabric с контейнером Docker

Я разрабатываю API для самостоятельного размещения .Net Core Rest, который будет размещен в контейнере Docker в Service Fabric. Я не могу настроить SSL / Https в Service Fabric. Http вроде работает. Я использую HttpSys в качестве веб-сервера, а не Kestrel, поскольку я читал, что это не рекомендуемый вариант для служб без обратного прокси (например, IIS).

Вот фрагмент кода веб-сервера.

return WebHost.CreateDefaultBuilder(args)
            .UseApplicationInsights()
                .UseStartup<Startup>()
                .UseHttpSys(
                    options =>
                    {
                        options.Authentication.Schemes = AspNetCore.Server.HttpSys.AuthenticationSchemes.None;
                        options.Authentication.AllowAnonymous = true;
                    }
                )                  
                .Build();

Вот фрагмент ServiceManifest.xml Endpoints.

<Endpoints>      
  <Endpoint Name = "ServiceEndpoint" Protocol = "http" Port = "80" />
  <Endpoint Name = "ServiceEndpointHttps" Protocol = "https" Port = "443" Type = "Input" CertificateRef = "SSLCertificate" />
</Endpoints>

Вот фрагмент ApplicationManifest EnvironmentVariable.

<EnvironmentVariable Name = "ASPNETCORE_URLS" Value = "https://*:443/;http://*:80/"/>

Вот фрагмент политик ApplicationManifest.xml.

<Policies>
  <ContainerHostPolicies CodePackageRef = "Code">
    <RepositoryCredentials AccountName = "accountname" Password = "password" PasswordEncrypted = "false" />
    <PortBinding ContainerPort = "80" EndpointRef = "ServiceEndpoint"/>
    <PortBinding ContainerPort = "443" EndpointRef = "ServiceEndpointHttps"/> 
  </ContainerHostPolicies>
  <EndpointBindingPolicy CertificateRef = "SSLCertificate" EndpointRef = "ServiceEndpointHttps" />
</Policies>

Вот фрагмент сертификатов ApplicationManifest.xml.

<Certificates>
<EndpointCertificate Name = "SSLCertificate" X509FindValue = "cert thumbprint"/>
</Certificates>

Изначально у меня были проблемы с развертыванием сертификата, когда у меня был сертификат SSL только в CurrentUser \ My Certificate Store. Я решил это после развертывания сертификата в LocalMachine \ My Certificate Store. С этим исправлением служба, похоже, работает только с протоколом HTTP на порту 80, а не с протоколом HTTPS на порту 443.

Обозреватель Service Fabric не показывает ошибок и ошибок в журнале событий. Я столкнулся с этой проблемой как в локальной Service Fabric, так и в экземплярах Azure Service Fabric.

Любые мысли / указатели по этому поводу будут оценены.

Какую базовую ОС вы используете для служебной сети, Windows или Ubuntu?

Karl Xu 05.03.2019 07:08

Service Fabric использует ОС Windows.

Kalaiselvan 19.03.2019 22:26

Проверьте это, ссылка на сайт, развертывание контейнера linux для служебной фабрики.

Karl Xu 20.03.2019 08:59

привет .. у тебя есть решение для этого.

Arshad Badar Khan 14.10.2020 16:37
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
5
4
638
1

Ответы 1

Использование Service Fabric для контейнера и https может следовать за этим док.

Сертификат будет вставлен в контейнер как переменные среды.

Но для кластеров linux есть проблема. Файлы, представленные Certificates_ServicePackageName_CodePackageName_CertName_PEM и Certificates_ServicePackageName_CodePackageName_CertName_PrivateKey, имеют точно такое же содержимое.

Я жду от сторонника Azure China дальнейшие разъяснения по этому поводу, не уверен, что это проблема Китая.

Другие вопросы по теме