Невозможно получить конечные точки актуатора состояния Steeltoe через http

Я прочитал примечание к выпуску https://steeltoe.io/reference/reference-release-notes/#2-2-0 и заинтересованы в предоставлении доступа к конечной точке / health через http (я имею в виду за пределами диспетчера приложений PCF). У меня есть следующие настройки в appsettings.json

{
   "management": {
    "endpoints": {
      "path": "/cloudfoundryapplication",
      "cloudfoundry": {
        "validateCertificates": false
      },
      "health": {
        "showdetails": "always",
        "claim": {
          "type": "health_actuator",
          "value": "see_details"
        }
      }
    }
  } 
}

В моем проекте есть ссылка на Steeltoe.Management.CloudFoundryCore V2.2.0, и мой запуск выглядит так, как показано ниже.

public void ConfigureServices(IServiceCollection services)
        {
             // Add health actuator
            services.AddHealthActuator(configuration);
            services.AddCloudFoundryActuators(Configuration);
        }

public void Configure(IApplicationBuilder app) 

        {
            if (HostingEnvironment.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseCloudFoundryActuators();          

            app.UseHealthChecks();
            app.UseMvc();
        }

Теперь, когда я пытался вызвать URL-адрес https://myservice/cloudfoundryapplication/health, я получаю сообщение об ошибке 401 {"security_error": "Заголовок авторизации отсутствует или недействителен"}. Есть идеи, что здесь может быть не так.


person Sajan    schedule 09.04.2019    source источник


Ответы (1)


Вот шаги, необходимые для доступа к конечной точке работоспособности вне диспетчера приложений при работе в облачной среде:

  1. Не устанавливайте management:endpoints:path и не устанавливайте ничего, кроме / cloudfoundryapplication. По умолчанию ваша внешняя конечная точка будет доступна в / actator / **. Вы можете настроить его, например, на управление (но не на облачное приложение, поскольку человек приложений использует маршрут, и он защищен).
  2. Добавьте свои исполнительные механизмы следующим образом: services.AddCloudFoundryActuators(Configuration, MediaTypeVersion.V2, ActuatorContext.ActuatorAndCloudFoundry); Сюда входит исполнительный механизм Health, поэтому вам не понадобится еще один AddHealthActuator.
  3. Используйте приводы следующим образом:

    app.UseCloudFoundryActuators( MediaTypeVersion.V2, ActuatorContext.ActuatorAndCloudFoundry);

  4. Чтобы защитить его, вы можете добавить эту конфигурацию, "claim": { "type": "health_actuator", "value": "see_details" }

... ожидается, что вы предоставите их в своем запросе. Но похоже, что это не так. Эта конфигурация - способ защитить конечную точку. Чтобы увидеть это без защиты, вы можете отбросить эту часть конфигурации. Также по умолчанию отображается подробная информация, поэтому вы можете полностью отказаться от конфигурации в разделе «здоровье».

person Hananiel    schedule 09.04.2019
comment
Я попытался удалить весь раздел здоровья из appsettings.json, но все равно получаю ту же ошибку - person Sajan; 10.04.2019
comment
Спасибо, что он заработал, когда я запустил PCF, но он не работает при локальном запуске. Я получаю исключение ниже во время запуска System.InvalidOperationException: не удается разрешить службу Steeltoe.Management.Endpoint.Health.HealthEndpoint с областью действия от корневого поставщика. Есть идеи, как заставить конечные точки привода работать с localhost? - person Sajan; 15.05.2019