Добрый день, подскажите в чем может быть ошибка. Если запускать creatio  7.18.3.1238 через .net на centos, то приложение корректно работает, но если делать с теми же настройками через docker ругается на настройки redis, в конфиге пробовал как "localhost", "127.0.0.1", "как ip самого сервера". Редис так же запуска и в самом докере.

Нравится

2 комментария

Евгений, напишите, пожалуйста, что скрывается за словами "ругается на настройки Redis". По ошибке можно хоть путь выбрать

 

P.S. Если ошибка в том, что он не находит Redis, то убедитесь запущена ли служба Redis

Артем Гура,

нашли потом в итоге причину, на сервере обрывалось соединение, в конфиге с другим сервером все заработало

Показать все комментарии

Добрый день!

В этом посте покажу как можно развернуть микросервис Exchange Listener в Docker с помощью одной команды. 

Изначально нам нужно настроить среду, то есть установить сам Docker и утилиту Docker-compose. Важно заметить, что данный тип разворачивания подходит для тестирования и разработки. Для работы в проде необходимо использовать kubernetes.

Скачать и установить Docker: https://docs.docker.com/engine/install/debian/
Скачать и установить Docker-compose: https://docs.docker.com/compose/install/

Далее для установки нам необходим yaml-файл. Его я прикрепил к этому посту.
Нужно поместить yaml-файл в произвольную директорию, перейти в нее и выполнить команду:

docker-compose up -d

После выполнения команды автоматически создается сервис в докере. Он содержит отдельный контейнер с редисом и контейнер с микросервисом Exchange Listener, который уже подключен к редису.

По умолчанию микросервис будет доступен по порту 10000. На этом этапе сервис развернут и его можно подключать к приложению Creatio. Чтобы убедиться в корректной работе, нужно перейти по ссылке:

http://адрес_сервера:10000/api/listeners/status

Подробно про дальнейшую настройку в Creatio описано в статье академии.

Теперь давайте подробнее разберем сам yaml-файл:

version: "3"
services:
  ExchangeListener:
    image: bpmonline/exchangelistener:0.8.62 # Последнюю версию ExchangeListener можно посмотреть здесь https://hub.docker.com/r/bpmonline/exchangelistener/tags?page=1&ordering=last_updated
    restart: unless-stopped
    ports:
      - 10000:80 # Проброс порта. Внешний порт:Внутренний порт.
    environment:
      ExchangeListenerRedisHost: redisOfficial:6379 # Строка подключения к Redis.
      ExchangeListenerRedisDatabase: 0 # База данных Redis.
      PodName: ExchangeListener
    depends_on:
      - redisOfficial
 
  redisOfficial:
    image: redis:latest
    restart: unless-stopped
    environment:
      ALLOW_EMPTY_PASSWORD: "yes" # Включение анонимного режима.

 

Прикрепленные файлы

Нравится

Поделиться

0 комментариев
Показать все комментарии

Здравствуйте, собираю по инструкции с академии, единственное имя поменял
https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

 

Система чистая, это была первая сборка. Содержимое Dockerfile:

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS base
EXPOSE 5000 5002

RUN apt-get update && \
    apt-get -y --no-install-recommends install \
    libgdiplus \
    libc6-dev && \
    apt-get clean all && \
    rm -rf /var/lib/apt/lists/* /var/cache/apt/*

WORKDIR /app
COPY . ./

FROM base AS final
WORKDIR /app
ENV ASPNETCORE_ENVIRONMENT Development
ENV TZ US/Eastern
ENTRYPOINT [ "dotnet", "Terrasoft.WebHost.dll" ]

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS base
EXPOSE 5000 5002

RUN apt-get update && \
apt-get -y --no-install-recommends install \
libgdiplus \
libc6-dev && \
apt-get clean all && \
   rm -rf /var/lib/apt/lists/* /var/cache/apt/*

WORKDIR /app
COPY . ./

FROM base AS final
WORKDIR /app
ENV ASPNETCORE_ENVIRONMENT Development
ENV TZ US/Eastern
ENTRYPOINT [ "dotnet", "Terrasoft.WebHost.dll" ]

 

Нравится

3 комментария

Евгений, здравствуйте! 

 

Ошибка "base stage name already used" говорит, что у вас компонент уже используется.

Дело в том, что у вас код продублирован:

 

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS base
EXPOSE 5000 5002

RUN apt-get update && \
    apt-get -y --no-install-recommends install \
    libgdiplus \
    libc6-dev && \
    apt-get clean all && \
    rm -rf /var/lib/apt/lists/* /var/cache/apt/*

WORKDIR /app
COPY . ./

FROM base AS final
WORKDIR /app
ENV ASPNETCORE_ENVIRONMENT Development
ENV TZ US/Eastern
ENTRYPOINT [ "dotnet", "Terrasoft.WebHost.dll" ]

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS base
EXPOSE 5000 5002

RUN apt-get update && \
apt-get -y --no-install-recommends install \
libgdiplus \
libc6-dev && \
apt-get clean all && \
   rm -rf /var/lib/apt/lists/* /var/cache/apt/*

WORKDIR /app
COPY . ./

FROM base AS final
WORKDIR /app
ENV ASPNETCORE_ENVIRONMENT Development
ENV TZ US/Eastern
ENTRYPOINT [ "dotnet", "Terrasoft.WebHost.dll" ]

На Академии уже исправили этот момент:

 

https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…

 

Для продолжения работы нужно выполнить

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS base
EXPOSE 5000 5002
RUN apt-get update && \
apt-get -y --no-install-recommends install \
libgdiplus \
libc6-dev && \
apt-get clean all && \
rm -rf /var/lib/apt/lists/* /var/cache/apt/*
WORKDIR /app
COPY . ./
FROM base AS final
WORKDIR /app
ENV ASPNETCORE_ENVIRONMENT Development
ENV TZ US/Eastern
ENV COMPlus_ThreadPool_ForceMinWorkerThreads 100
ENTRYPOINT ["dotnet", "Terrasoft.WebHost.dll"]

Вильшанский Дмитрий, здравствуйте подскажите в чем может быть проблема, ошибка вида:
Unhandled exception. System.Exception: Could not resolve a service of type 'Terrasoft.WebHost.IApplication' for the parameter 'application' of method 'Configure' on type 'Terrasoft.WebHost.Startup'.
 ---> Autofac.Core.DependencyResolutionException: An error occurred during the activation of a particular registration. See the inner exception for details. Registration: Activator = Application (ReflectionActivator), Services = [Terrasoft.WebHost.IApplication], Lifetime = Autofac.Core.Lifetime.RootScopeLifetime, Sharing = Shared, Ownership = OwnedByLifetimeScope ---> An error occurred during the activation of a particular registration. See the inner exception for details. Registration: Activator = RedisSessionSynchronizationService (ReflectionActivator), Services = [Terrasoft.WebHost.Session.ISessionSynchronizationService], Lifetime = Autofac.Core.Lifetime.RootScopeLifetime, Sharing = Shared, Ownership = OwnedByLifetimeScope ---> An error occurred during the activation of a particular registration. See the inner exception for details. Registration: Activator = RedisSessionSynchronizer (ReflectionActivator), Services = [Terrasoft.Redis.ISessionSynchronizer], Lifetime = Autofac.Core.Lifetime.RootScopeLifetime, Sharing = Shared, Ownership = OwnedByLifetimeScope ---> An error occurred during the activation of a particular registration. See the inner exception for details. Registration: Activator = IRedisClientsManager (DelegateActivator), Services = [Terrasoft.Redis.Abstractions.IRedisClientsManager], Lifetime = Autofac.Core.Lifetime.RootScopeLifetime, Sharing = Shared, Ownership = OwnedByLifetimeScope ---> No connection is available to service this operation: INFO; UnableToConnect on localhost:6379/Interactive, Initializing/NotStarted, last: NONE, origin: BeginConnectAsync, outstanding: 0, last-read: 0s ago, last-write: 0s ago, keep-alive: 60s, state: Connecting, mgr: 10 of 10 available, last-heartbeat: never, global: 0s ago, v: 2.0.601.3402; IOCP: (Busy=0,Free=1000,Min=4,Max=1000), WORKER: (Busy=0,Free=32767,Min=256,Max=32767), Local-CPU: n/a (See inner exception for details.) (See inner exception for details.) (See inner exception for details.) (See inner exception for details.)
 ---> Autofac.Core.DependencyResolutionException: An error occurred during the activation of a particular registration. See the inner exception for details. Registration: Activator = RedisSessionSynchronizationService (ReflectionActivator), Services = [Terrasoft.WebHost.Session.ISessionSynchronizationService], Lifetime = Autofac.Core.Lifetime.RootScopeLifetime, Sharing = Shared, Ownership = OwnedByLifetimeScope ---> An error occurred during the activation of a particular registration. See the inner exception for details. Registration: Activator = RedisSessionSynchronizer (ReflectionActivator), Services = [Terrasoft.Redis.ISessionSynchronizer], Lifetime = Autofac.Core.Lifetime.RootScopeLifetime, Sharing = Shared, Ownership = OwnedByLifetimeScope ---> An error occurred during the activation of a particular registration. See the inner exception for details. Registration: Activator = IRedisClientsManager (DelegateActivator), Services = [Terrasoft.Redis.Abstractions.IRedisClientsManager], Lifetime = Autofac.Core.Lifetime.RootScopeLifetime, Sharing = Shared, Ownership = OwnedByLifetimeScope ---> No connection is available to service this operation: INFO; UnableToConnect on localhost:6379/Interactive, Initializing/NotStarted, last: NONE, origin: BeginConnectAsync, outstanding: 0, last-read: 0s ago, last-write: 0s ago, keep-alive: 60s, state: Connecting, mgr: 10 of 10 available, last-heartbeat: never, global: 0s ago, v: 2.0.601.3402; IOCP: (Busy=0,Free=1000,Min=4,Max=1000), WORKER: (Busy=0,Free=32767,Min=256,Max=32767), Local-CPU: n/a (See inner exception for details.) (See inner exception for details.) (See inner exception for details.)
 ---> Autofac.Core.DependencyResolutionException: An error occurred during the activation of a particular registration. See the inner exception for details. Registration: Activator = RedisSessionSynchronizer (ReflectionActivator), Services = [Terrasoft.Redis.ISessionSynchronizer], Lifetime = Autofac.Core.Lifetime.RootScopeLifetime, Sharing = Shared, Ownership = OwnedByLifetimeScope ---> An error occurred during the activation of a particular registration. See the inner exception for details. Registration: Activator = IRedisClientsManager (DelegateActivator), Services = [Terrasoft.Redis.Abstractions.IRedisClientsManager], Lifetime = Autofac.Core.Lifetime.RootScopeLifetime, Sharing = Shared, Ownership = OwnedByLifetimeScope ---> No connection is available to service this operation: INFO; UnableToConnect on localhost:6379/Interactive, Initializing/NotStarted, last: NONE, origin: BeginConnectAsync, outstanding: 0, last-read: 0s ago, last-write: 0s ago, keep-alive: 60s, state: Connecting, mgr: 10 of 10 available, last-heartbeat: never, global: 0s ago, v: 2.0.601.3402; IOCP: (Busy=0,Free=1000,Min=4,Max=1000), WORKER: (Busy=0,Free=32767,Min=256,Max=32767), Local-CPU: n/a (See inner exception for details.) (See inner exception for details.)
 ---> Autofac.Core.DependencyResolutionException: An error occurred during the activation of a particular registration. See the inner exception for details. Registration: Activator = IRedisClientsManager (DelegateActivator), Services = [Terrasoft.Redis.Abstractions.IRedisClientsManager], Lifetime = Autofac.Core.Lifetime.RootScopeLifetime, Sharing = Shared, Ownership = OwnedByLifetimeScope ---> No connection is available to service this operation: INFO; UnableToConnect on localhost:6379/Interactive, Initializing/NotStarted, last: NONE, origin: BeginConnectAsync, outstanding: 0, last-read: 0s ago, last-write: 0s ago, keep-alive: 60s, state: Connecting, mgr: 10 of 10 available, last-heartbeat: never, global: 0s ago, v: 2.0.601.3402; IOCP: (Busy=0,Free=1000,Min=4,Max=1000), WORKER: (Busy=0,Free=32767,Min=256,Max=32767), Local-CPU: n/a (See inner exception for details.)
 ---> StackExchange.Redis.RedisConnectionException: No connection is available to service this operation: INFO; UnableToConnect on localhost:6379/Interactive, Initializing/NotStarted, last: NONE, origin: BeginConnectAsync, outstanding: 0, last-read: 0s ago, last-write: 0s ago, keep-alive: 60s, state: Connecting, mgr: 10 of 10 available, last-heartbeat: never, global: 0s ago, v: 2.0.601.3402; IOCP: (Busy=0,Free=1000,Min=4,Max=1000), WORKER: (Busy=0,Free=32767,Min=256,Max=32767), Local-CPU: n/a
 ---> StackExchange.Redis.RedisConnectionException: UnableToConnect on localhost:6379/Interactive, Initializing/NotStarted, last: NONE, origin: BeginConnectAsync, outstanding: 0, last-read: 0s ago, last-write: 0s ago, keep-alive: 60s, state: Connecting, mgr: 10 of 10 available, last-heartbeat: never, global: 0s ago, v: 2.0.601.3402
   --- End of inner exception stack trace ---
   at StackExchange.Redis.RedisServer.ExecuteSync[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) in C:\projects\stackexchange-redis\src\StackExchange.Redis\RedisServer.cs:line 589
   at StackExchange.Redis.RedisServer.Info(RedisValue section, CommandFlags flags) in C:\projects\stackexchange-redis\src\StackExchange.Redis\RedisServer.cs:line 258
   at Terrasoft.Redis.StackExchangeAdapters.RedisClientAdapter.get_Info() in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.Redis.StackExchangeAdapters/RedisClientAdapter.cs:line 64
   at Terrasoft.Redis.RedisValidator.GetVersion(IRedisClientsManager redisClientsManager) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.Redis/RedisValidator.cs:line 28
   at Terrasoft.Redis.RedisValidator.CheckVersion(IRedisClientsManager redisClientsManager) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.Redis/RedisValidator.cs:line 42
   at Terrasoft.Redis.RedisClientsManager..ctor(String connectionStringName, IRedisValidator redisValidator) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.Redis/RedisClientsManager.cs:line 57
   at Terrasoft.Redis.RedisClientsManager..ctor() in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.Redis/RedisClientsManager.cs:line 39
   at Terrasoft.Redis.RedisClientsManager.<>c.<.cctor>b__21_1() in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.Redis/RedisClientsManager.cs:line 75
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.get_Value()
   at Terrasoft.Redis.RedisClientsManager.get_Instance() in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.Redis/RedisClientsManager.cs:line 80
   at Terrasoft.Redis.RedisExtensions.<>c.<AddRedis>b__0_0(IServiceProvider container) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.Redis/RedisExtensions.cs:line 15
   at Terrasoft.Core.DI.ServiceProvider.ServiceProviderAutofacModule.<>c__DisplayClass15_0.<ConfigureFactoryBinding>b__0(IComponentContext context, IEnumerable`1 parameters) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.Core.DI/ServiceProvider/ServiceProviderAutofacModule.cs:line 216
   at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters)
   at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters, Object& decoratorTarget)
   --- End of inner exception stack trace ---
   at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters, Object& decoratorTarget)
   at Autofac.Core.Resolving.InstanceLookup.<>c__DisplayClass5_0.<Execute>b__0()
   at Autofac.Core.Lifetime.LifetimeScope.GetOrCreateAndShare(Guid id, Func`1 creator)
   at Autofac.Core.Resolving.InstanceLookup.Execute()
   at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration registration, IEnumerable`1 parameters)
   at Autofac.Core.Resolving.InstanceLookup.ResolveComponent(IComponentRegistration registration, IEnumerable`1 parameters)
   at Autofac.Core.Activators.Reflection.AutowiringParameter.<>c__DisplayClass0_0.<CanSupplyValue>b__0()
   at Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate()
   at Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters)
   at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters, Object& decoratorTarget)
   --- End of inner exception stack trace ---
   at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters, Object& decoratorTarget)
   at Autofac.Core.Resolving.InstanceLookup.<>c__DisplayClass5_0.<Execute>b__0()
   at Autofac.Core.Lifetime.LifetimeScope.GetOrCreateAndShare(Guid id, Func`1 creator)
   at Autofac.Core.Resolving.InstanceLookup.Execute()
   at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration registration, IEnumerable`1 parameters)
   at Autofac.Core.Resolving.InstanceLookup.ResolveComponent(IComponentRegistration registration, IEnumerable`1 parameters)
   at Autofac.Core.Activators.Reflection.AutowiringParameter.<>c__DisplayClass0_0.<CanSupplyValue>b__0()
   at Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate()
   at Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters)
   at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters, Object& decoratorTarget)
   --- End of inner exception stack trace ---
   at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters, Object& decoratorTarget)
   at Autofac.Core.Resolving.InstanceLookup.<>c__DisplayClass5_0.<Execute>b__0()
   at Autofac.Core.Lifetime.LifetimeScope.GetOrCreateAndShare(Guid id, Func`1 creator)
   at Autofac.Core.Resolving.InstanceLookup.Execute()
   at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration registration, IEnumerable`1 parameters)
   at Autofac.Core.Resolving.InstanceLookup.ResolveComponent(IComponentRegistration registration, IEnumerable`1 parameters)
   at Autofac.Core.Activators.Reflection.AutowiringParameter.<>c__DisplayClass0_0.<CanSupplyValue>b__0()
   at Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate()
   at Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters)
   at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters, Object& decoratorTarget)
   --- End of inner exception stack trace ---
   at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters, Object& decoratorTarget)
   at Autofac.Core.Resolving.InstanceLookup.<>c__DisplayClass5_0.<Execute>b__0()
   at Autofac.Core.Lifetime.LifetimeScope.GetOrCreateAndShare(Guid id, Func`1 creator)
   at Autofac.Core.Resolving.InstanceLookup.Execute()
   at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration registration, IEnumerable`1 parameters)
   at Autofac.Core.Resolving.ResolveOperation.ResolveComponent(IComponentRegistration registration, IEnumerable`1 parameters)
   at Autofac.Core.Resolving.ResolveOperation.Execute(IComponentRegistration registration, IEnumerable`1 parameters)
   at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(IComponentRegistration registration, IEnumerable`1 parameters)
   at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance)
   at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters)
   at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters)
   at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType)
   at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   --- End of inner exception stack trace ---
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)
   at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
   at Terrasoft.WebHost.Program.StartWebApplication(String[] args) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.WebHost/Program.cs:line 28
   at Terrasoft.WebHost.Program.<>c__DisplayClass2_0.<Main>b__0(StartOptions _) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.WebHost/Program.cs:line 61
   at CommandLine.ParserResultExtensions.MapResult[T1,T2,TResult](ParserResult`1 result, Func`2 parsedFunc1, Func`2 parsedFunc2, Func`2 notParsedFunc)
   at Terrasoft.WebHost.Program.Main(String[] args) in /opt/buildagent/work/ApplicationCoreLinux/TSBpm/Src/Lib/Terrasoft.WebHost/Program.cs:line 64

Евгений Шевченко,Это ошибка при сборке images*

Показать все комментарии

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

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS base
EXPOSE 5000 5002

RUN apt-get update && \
    apt-get -y --no-install-recommends install \
    libgdiplus \
    libc6-dev && \
    apt-get clean all && \
    rm -rf /var/lib/apt/lists/* /var/cache/apt/*

WORKDIR /app
COPY . ./

FROM base AS final
WORKDIR /app
ENV ASPNETCORE_ENVIRONMENT Development
ENV TZ US/Eastern
ENTRYPOINT [ "dotnet", "Terrasoft.WebHost.dll" ]

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS base
EXPOSE 5000 5002

RUN apt-get update && \
apt-get -y --no-install-recommends install \
libgdiplus \
libc6-dev && \
apt-get clean all && \
   rm -rf /var/lib/apt/lists/* /var/cache/apt/*

WORKDIR /app
COPY . ./

FROM base AS final
WORKDIR /app
ENV ASPNETCORE_ENVIRONMENT Development
ENV TZ US/Eastern
ENTRYPOINT [ "dotnet", "Terrasoft.WebHost.dll" ]

P.S. dotnet 3.1 установлен, что может быть не так?

Нравится

1 комментарий

eugenes, здравствуйте!
Альтернативы для решения проблемы Вы сможете найти тут и тут.

Показать все комментарии

Добрый день,

 

столкнулась с такой проблемой. Мы используем для црм глобальный поиск elasticsearch:5.6.9.

 

тут полное описание, как было сделано

https://academy.terrasoft.ru/documents/administration/7-16/nastroyka-se…

OS: Ubuntu 18.04

 

Все работало наверное около 2х месяцев. В один прекрасный что-то сломалось. Как раз хотела перевести на Ubuntu 20.04. Разбираться не стала - переустановила 2 машины. И опять счастье на 1,5-2 месяца. Утром позвонили и сказали вчера работало - сегодня уже нет.

 

На первой машине оба раза вылезает ошибка

[2020-12-03T11:26:14,489][WARN ][o.e.d.i.m.TypeParsers    ] field [include_in_all] is deprecated, as [_all] is deprecated, and will be disallowed in 6.0, use [copy_to] instead.
 

Сколько я понимаю, что обновляется что-то.. скорее всего, что лежит в контейнере на второй машине до версии 6,0 (индексы, база данных). А сам elasticsearch версии 5.6.9 .

 

Помогите пожалуйста разобраться.

 

С уважением,

Екатерина.

Нравится

2 комментария

Сообщение «[2020-12-03T11:26:14,489][WARN ][o.e.d.i.m.TypeParsers    ] field [include_in_all] is deprecated, as [_all] is deprecated, and will be disallowed in 6.0, use [copy_to] instead.» не является ошибкой, это предупреждение, что какая-то функциональность является устаревшей и не будет работать в новой версии 6.0. Если у Вас используется 5.6.9, то влиять на работу в момент показа сообщения ещё до обновления это не должно.

О причинах лучше уточнить у администраторов сервера. Может, действительно автоматически обновляют.

А если у Вас глобальный поиск версии 1.7, то там в инструкции вообще явно ElasticSearch версии 5.6.8 рекомендуют.

Зверев Александр,

спасибо большое. Нашли ошибку. Память кончилась. Когда ему не хватает память почему-то ломается индексация. Увеличение памяти решило проблему

 

Показать все комментарии

Всем привет!

 

Продолжаем освещать вас жизненными примерами по разворачиванию сервиса Exchange Listener. Если вы пропустили прошлую публикацию, то рекомендуем также с ней ознакомиться - https://community.terrasoft.ru/articles/1-realnyy-primer-po-razvertyvaniyu-servisa-exchange-listener-s-ispolzovaniem-kubernetes.

 

На этот раз поделился подробной инструкцией с нами пользователь Еремеев Игорь Юрьевич (ссылка на профиль - https://community.terrasoft.ru/user/196420). Данная инструкция полезна тем, что в ней предоставлены наглядные скриншоты и решение по ошибкам, которые могут возникнуть в процессе развертывания.

(!) Данная инструкция процитирована и зафиксирована в таком виде, в каком нам передали с небольшими изменениями.

 

Задача поднять Кластер (Cluster) Kubernetes

 

Kubernetes — нишевое решение под конкретные проекты.

Kubernetes средство оркестрации (управления) контейнерами Docker. Это инструмент для их автоматического запуска, выделения ресурсов, контроля состояния, обновления.

 

Системные требования

Устанавливаем на виртуальных машинах:

  • мастер нода – 1 виртуальная машина - 2 cpu и 4 gb ram
  • рабочие ноды – 2 виртуальные машины - 2 cpu и 4 gb ram

 

Структура кластера

 

 

 

 

 

 

 

 

Примечание:

  • Виртуальная машина 1 Поколение;
  • Образ CentOS-7-x86_64-NetInstall-2003;
  • Пользователь root, 123456qQ;

Необходимые условия:

  • Установлена ВМ (прим. виртуальная машина) Centos 8;
  • Отключён Firewall, своппинг, SELinux;
  • Для дальнейших шагов необходим неограниченный доступ в Интернет.

Подготовим 1 образа, далее просто его скопируем под 3 ВМ (см инструкцию 0. Kubernetes  преднастройка VM CentOS)

 

Далее делаем на всех нодах

  1. Приведем имена в порядок
hostnamectl set-hostname master-node
hostnamectl set-hostname node-1
hostnamectl set-hostname node-2
  1. Пропишем внутренний DNS

задайте имя хоста системы и обновите DNS в файле / etc / hosts

cat <<EOF>> /etc/hosts
192.168.25.182 master-node
192.168.25.30 node-1 worker-node-1
192.168.25.170 node-2 worker-node-2
EOF
  1. Установите Docker-CE на CentOS 8
  • Сначала необходимо добавить репозиторий Docker.
  • Также установите пакет containerd.io , который доступен в качестве демона, который управляет полным жизненным циклом контейнера его хост-системы, от передачи и хранения образа до выполнения и контроля контейнера, до низкоуровневого хранилища, сетевых вложений и далее.
  • Команды под учетной записью root запускаю сразу весь пакет,  Ставим на всех ВМ
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm -y
dnf install docker-ce -y
systemctl enable docker
systemctl start docker

4. Установите Kubernetes (Kubeadm)

4.1. Необходимо добавить репозитории Kubernetes вручную

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

 

4.2. Установить пакет kubeadm

 

dnf install kubeadm -y
systemctl enable kubelet
systemctl start kubelet 

 

Все что выше делаем на всех ВМ.

 

5. на мастере выполняем команды:

5.1.

 

kubeadm init --pod-network-cidr=10.244.0.0/16

 

(!) Важно сохраняем результат

 

kubeadm join 192.168.25.182:6443 --token z86i8r.u6mmy6adnkmp4iad \    --discovery-token-ca-cert-hash sha256:8104a99fe76b167b65d5d450467ec14fd60b973db9f97a40e81c90cc7ade73b8

 

если потеряли токен то можно запросить

 

kubeadm token list
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ 5.2
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

 

5.3. Устанавливаем Flannel:
 

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml

 

 

5.4. . Вводим команду для возможности запуска контейнеров на текущей машине:

 

kubectl taint nodes --all node-role.kubernetes.io/master-

 

Делаем reboot – много всего поставлено

 

 6. Проверяю состояние подов:

 

kubectl -n kube-system get pods

Все работает

 

7. Устанавливаем Helm:

wget https://get.helm.sh/helm-v3.3.0-rc.1-linux-amd64.tar.gz
tar xzvf helm-v3.3.0-rc.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm

 

И подключаем репозиторий (возьмем самый популярный) и делаем update

 

helm repo add stable https://kubernetes-charts.storage.googleapis.com/
 
helm repo update

 

Делаем бэкап своих виртуальных машин.

Результат у нас создан кластер из 1 ВМ, созданы ВМ на которой установлен только Докер.

 

8. Устанавливаем Redis:

 

helm repo update
 
helm install --namespace default --set usePassword=false --set=slave.persistence.enabled=false --set master.persistence.enabled=false --set cluster.enabled=false redis bitnami/redis

 

используем --namespace default

 

Получили:

 

To connect to your Redis server:

1. Run a Redis pod that you can use as a client:

   kubectl run --namespace default redis-client --rm --tty -i --restart='Never' \

   --image docker.io/bitnami/redis:5.0.7-debian-10-r32 -- bash

2. Connect using the Redis CLI:

   redis-cli -h redis-master

To connect to your database from outside the cluster execute the following commands:

    kubectl port-forward --namespace default svc/redis-master 6379:6379 &

    redis-cli -h 127.0.0.1 -p 6379

 

Результат.

 

 

 

 

9. Устанавливаем Exchange Listener.

 

Нам потребуется  ip-адрес redis-master: XX.XXX.233.155 (см. скриншоты)

 

Качаем последний актуальный дистрибутив (на данный момент 0.6.9):

wget http://ftp.bpmonline.com/support/downloads/Exchangelistener/exchangelistener-0.6.9.tgz
 
helm install --set env.host=XX.XXX.233.155 --set service.type=NodePort --set service.nodePort=30001 --set apiVersion=apps/v1 --namespace default elistener exchangelistener-0.6.9.tgz

 

 

--set env.host - указать IP мастер Redis

default - namespace, который использовался в пункте 11.

elistener - произвольное название нашего сервиса.

exchangelistener-0.6.9.tgz - путь к скачанному дистрибутиву.

Порт не обязательно должен быть 30001. Допустимый диапазон 30000-32767.

На этом минимальная настройка сервиса на стороне сервера завершена.

 

10. Проверяем поды сервиса

kubectl get pods

 

Проверяем доступность сервиса Exchange Listener.

telnet: -

telnet 192.168.25.182 30001

 

Где:

192.168.25.182 - ip-адрес нашей linux-машины,

30001 - порт сервиса Exchange Listener, выбранный при установке на 12 шаге.

Если соединение проходит - открываем веб-браузер (желательно сразу на машине с Creatio) и вводим в адресную строку http://192.168.25.182:30001/api/listeners/status

 

 

Включим в кластер еще 2 ВМ

 

(команду kubeadm init --pod-network-cidr=10.244.0.0/16 не вводим)

- Node-1

Вводим ключ-команду

 

kubeadm join 192.168.25.182:6443 --token z86i8r.u6mmy6adnkmp4iad     --discovery-token-ca-cert-hash sha256:8104a99fe76b167b65d5d450467ec14fd60b973db9f97a40e81c90cc7ade73b8

 

если потеряли токен то можно запросить

 

kubeadm token list

 

- Проверяем поды на master-машине (их должно стать больше):

 

kubectl -n kube-system get pods

 

- Node-2

Вводим ключ-команду

kubeadm join 192.168.25.182:6443 --token z86i8r.u6mmy6adnkmp4iad     --discovery-token-ca-cert-hash sha256:8104a99fe76b167b65d5d450467ec14fd60b973db9f97a40e81c90cc7ade73b8

 

- На мастере проверяем

 

kubectl get node

 

kubectl get svc

 

 

kubectl get pods

 

 

Какие команды могут помочь при решении проблем:

 

Почему-то не было доступа из внешнего IP к порту 30001, где развернут сервис. и были выполнены следующие команды:

ufw allow 30001 - команда конкретно firewall ubuntu. К другим дистрибутивам вероятнее всего не подойдет (возможно только если к Mint, т.к. ядро тоже самое). 

iptables -I INPUT -p tcp --dport 30001 -j ACCEPT - уже более распространенный вариант. 

 

Команды для просмотра логов. Примеры:

 

kubectl logs POD_NAME

kubectl logs REDIS_NAME-api-0

 

kubectl logs  elistener-api-0

kubectl logs  elistener-api-1

kubectl logs redis-master-0

 

log4net:ERROR Could not create Appender [ExchangeListenerGelfAmqpAppender] of type [Gelf4Net.Appender.GelfAmqpAppender, Gelf4Net.AmqpAppender]. Reported error follows.
RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable ---> RabbitMQ.Client.Exceptions.ConnectFailureException: Connection failed --->

Означает, что он не может Rabbit не может достучаться до Graylog (мониторинг логов). В данном случае у вас не настроен Graylog. Но это не должно блокировать работу. Можно ориентировать на вот это Gelf4Net (он пишет в Rabbit).

Но ниже по логу должно быть видно следующее:
Hosting environment: Production Content root path: /app Now listening on:
http://[::]:80 Application started. Press Ctrl+C to shut down.

Если это так, то значить сервис запущен и теперь вам нужно проверить доступность и статус сервиса.
А после провести настройку на стороне Creatio.

Нравится

Поделиться

1 комментарий

Теперь k8s наша общая боль) 

Показать все комментарии

Всем привет! 

    В данной статье описан один из возможных сценариев как можно развернуть сервис в On-Site, с которым поделился наш партнер "Baso-IT" в лице Александра Горчакова. Данная инструкция процитирована и зафиксирована в таком виде, в каком партнер нам передал.

     

    Характеристики (из расчета ~70 почтовых ящиков):

    • одна виртуальная машина  (Ubuntu без предустановленных настроек с root-доступ)
    • 2 ядра по 2 Гц
    • с оперативной памятью 4gb

    Шаги, которые были предприняты для разворачивания сервиса (текущую машину будем считать master-машиной):

     

    (!) за основу брать инструкцию по разворачиванию сервиса на Академии - https://academy.terrasoft.ru/documents?product=administration&ver=7&id=2075

     

    1. На "чистой" Ubuntu (версия 20.04) создаем нового пользователя

    adduser username

    и добавляем его в группу sudo:

    usermod -a -G sudo username

    ssh-доступ он получит по умолчанию.

    (!) Далее если система где-то будет ругаться на root-доступ или отсутствие прав - просто добавляем в начале команды sudo

     

    2. Логинимся под созданным пользователем и устанавливаем Midnight Commander, для более удобного пользования каталогами:

    apt install mc

    При установке система может задать вопрос - выбираем Y

     

    3. Обновляемся и ставим Docker:

    apt-get update
    apt-get install -y docker.io

     

    Стоит его так же сразу перезапустить:

    service docker restart

     

    4. Устанавливаем kubeadm, kubelet и kubectl:

    apt-get update && apt-get install -y apt-transport-https
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb http://apt.kubernetes.io/ kubernetes-xenial main
    EOF

    ИЛИ (нужно знать как работать в редакторе VIM (https://help.ubuntu.ru/wiki/vim)

    apt-get update && apt-get install -y apt-transport-http
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    sudo vim /etc/apt/sources.list.d/kubernetes.list
    deb http://apt.kubernetes.io/ kubernetes-xenial main

    Здесь может оказаться так, что система не даст создать файл kubernetes.list ввиду отсутствующего каталога sources.list.d

    Если так случится - сначала используем mkdir и создаем каталог:

    mkdir /etc/apt/sources.list.d

    Далее повторяем последние 3 команды из пункта 4:

    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb http://apt.kubernetes.io/ kubernetes-xenial main
    EOF

    Устанавливаем Kubernetes:

    apt-get update
    apt-get install -y kubelet kubeadm kubectl kubernetes-cni

     

    5. Далее выполняем команду:

    kubeadm init --pod-network-cidr=10.244.0.0/16

    Именно 10.244.0.0/16! Вводим ровно то что написано.

     

    Процесс может занять минуту или более в зависимости от вашего интернет-соединения.

     

    Результат выполнения команды

     

    В процессе установки могут быть Warning и Error. Последние сначала придется устранить.

     

    Самый популярный Error - жалоба на swap. Замечу что банальной команды отключения swap (swapoff -a) недостаточно, т.к. даже в случае успешной установки - после перезагрузки системы придется повторно ее вводить каждый раз, что не очень удобно (иначе просто ничего не будет работать).

     

    Рекомендую запустить тот же MobyXTerm или Midnight Commander (mc), найти файл fstab ("/etc/fstab"), расположенный в каталоге etc и просто закомментировать (поставить в начале строки #) строку, в которой содержится слово swap и перезагрузить машину.

    Так же можно просто не создавать swap-раздел при установке ubuntu.

     

    В случае успешного выполнения система предоставит команду для подключения других машин к текущей для создания кластера (выдуманный пример):

    kubeadm join 192.168.101.199:6443 --token selist.zho8rggai807dtsr \
     
        --discovery-token-ca-cert-hash sha256:8250d1a19e1c9bc7ab32ef43811f143f1c658ccc476383e9260d133a2988666c

    Сохраните полученную команду и используйте при необходимости собрать кластер.

     

    Так же в процессе выполнения могут быть Warning'и вида:

    docker service is not enabled, please run 'systemctl enable docker.service'

    Собственно вводим то что написано:

    #Как вылечить сообщение [WARNING Service-Docker]: docker service is not enabled, please run 'systemctl enable docker.service'
     
    systemctl enable docker.service

    Или же такие:

    detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd"

     

    В таком случае создаем\редактируем файл daemon.json, расположенный по пути etc/docker (можно вручную отредактировать через cat или vim):

    {
     
      "exec-opts": ["native.cgroupdriver=systemd"]
     
    }

    Но можно и командой, которая все делает:

    #Как вылечить [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
     
    cat > /etc/docker/daemon.json <<EOF
    {
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m"
      },
      "storage-driver": "overlay2"
    }
    EOF

    И перезапускаем Docker:

    service docker restart

    Но в целом это скорее просто рекомендация. Работать будет и так.

     

    6. Вводим команды:

    sudo mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config

     

    7. Вводим команду для возможности запуска контейнеров на текущей машине:

    kubectl taint nodes --all node-role.kubernetes.io/master-

     

    8. Устанавливаем Flannel:

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
     
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml

     

    9. Проверяем состояние подов:

    kubectl -n kube-system get pods

    Должны быть статусы Running
     

    10. Устанавливаем Helm:

    wget https://get.helm.sh/helm-v3.3.0-rc.1-linux-amd64.tar.gz
    tar xzvf helm-v3.3.0-rc.1-linux-amd64.tar.gz
    mv linux-amd64/helm /usr/local/bin/helm

    Название дистрибутива может меняться. В данный момент это текущая актуальная версия.

    И подключаем репозиторий (возьмем самый популярный):

    helm repo add stable https://kubernetes-charts.storage.googleapis.com/

     

    11. Устанавливаем Redis:

    helm repo update
     
    helm install --namespace default --set usePassword=false --set=slave.persistence.enabled=false --set master.persistence.enabled=false --set cluster.enabled=false redis bitnami/redis

    Я использовал namespace k8s по умолчанию (default). Как и название Redis'а (redis).

     

    12. Устанавливаем Exchange Listener.

    Качаем последний актуальный дистрибутив (на данный момент 0.6.9):

    wget http://ftp.bpmonline.com/support/downloads/Exchangelistener/exchangelistener-0.6.9.tgz

     

    Находим ip-адрес redis-master:

    kubectl get service

    В выводе в столбце ClusterIP будут ip-адреса. Нас интересует redis-master

    Допустим это 10.104.17.189

    В таком случае следующая команда будет выглядеть:

    helm install --set env.host=10.104.17.189 --set service.type=NodePort --set service.nodePort=30001 --set apiVersion=apps/v1 --namespace default elistener exchangelistener-0.6.9.tgz

     

    Где:

    --set env.host - указать IP мастер Redis

    default - namespace, который использовался в пункте 11.

    elistener - произвольное название нашего сервиса.

    exchangelistener-0.6.9.tgz - путь к скачанному дистрибутиву.

     

     

    Порт не обязательно должен быть 30001. Допустимый диапазон 30000-32767.

     

    На этом минимальная настройка сервиса на стороне сервера завершена.

    Пункты 1 и 2 тоже не могу назвать обязательными. Это скорее рекомендация для личного удобства.

     

    Проверяем состояние сервисов:

    kubectl get pods

    Должны быть состоянии Running.

     

    Проверяем доступность сервиса Exchange Listener.

    Сначала можно через telnet:

    telnet 192.168.101.199 30001

    Где 192.168.101.199 - ip-адрес нашей linux-машины, а 30001 - порт сервиса Exchange Listener, выбранный при установке на 12 шаге.

    Если соединение проходит - открываем веб-браузер (желательно сразу на машине с Creatio) и вводим в адресную строку http://192.168.101.199:30001/api/listeners/status

    Вывод должен быть вида "ServiceStatus": "Started", и т.д.

     

    Дополнительно:

    При желании собрать кластер, на всех дополнительных машинах проделываем:

    Вводим команды, описанные в Error'ах и Warning'ах шага 5 (саму команду kubeadm init --pod-network-cidr=10.244.0.0/16 не вводим)

    Вводим ключ-команду полученную на на шаге 5. Замечу что нужно стереть символ если он присутствует.

    Проверяем поды на master-машине (их должно стать больше):

    kubectl -n kube-system get pods

     

    Какие команды могут помочь при решении проблем

    Почему-то не было доступа из внешнего IP к порту 30001, где развернут сервис. и были выполнены следующие команды:

     

    ufw allow 30001 - команда конкретно firewall ubuntu. К другим дистрибутивам вероятнее всего не подойдет (возможно только если к Mint, т.к. ядро тоже самое). 

     

    iptables -I INPUT -p tcp --dport 30001 -j ACCEPT - уже более распространенный вариант. 

     

    Команды для просмотра логов. Примеры:

    kubectl logs POD_NAME

    kubectl logs REDIS_NAME-api-0

     

    Спасибо!

    Нравится

    Поделиться

    13 комментариев

    Подскажите команду 

    7. Вводим команду для возможности запуска контейнеров на текущей машине:

    kubectl taint nodes --all node-role.kubernetes.io/master-

    необходимо вводить только на мастер ноде или на всех нодах

    Еремеев Игорь Юрьевич,

     

    Здравствуйте, Игорь! 

     

    Данная команда нужна если у вас развернут К8S не в кластере - https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

    Добрый день.
    При выполнении п. 7, 8 и т.д. получаю ошибку: 
    The connection to the server localhost:8080 was refused - did you specify the right host or port?
    Проверил права для пользователя на папку $HOME/.kube/config
    Команда: ls -l $HOME/.kube/config
    Вывод:
    -rw------- 1 username username 5454 Aug  6 05:55 /home/username/.kube/config
    Чего не хватает?

     

    UPD: Получил config куба:
    Команда: sudo kubectl config view
    Ответ:
    apiVersion: v1
    clusters: null
    contexts: null
    current-context: ""
    kind: Config
    preferences: {}
    users: null
    Смущает, что здесь пусто.

    Коллеги, опубликовали второй пример по развертыванию сервиса - https://community.terrasoft.ru/articles/2-realnyy-primer-po-razvertyvaniyu-servisa-exchange-listener-s-ispolzovaniem-kubernetes

    Коновалов Игорь,

    Предположу что дело во включенном свопе.

    Добрый день! Подскажите пожалуйста можно ли развернуть сервис без неограниченного доступа в Инернет?

    Сергей, в статье ничего не указано о неограниченности интернет-доступа, только о скорости. Если оплата будет помегабайтной, то при установке и использовании трафик, естественно будет потребляться.

     

    Или речь о работе в локалке без Интернета вообще? Тогда нужно, как минимум, позаботится о локальных репозиториях для установки по apt-get упомянутого софта. А по поводу работы Kubernetes в таких условиях лучше будет уточнить у них.

    Спасибо за развернутое описание. Пришлось немного поиграться с правами доступа к папкам, но в целом все сработало

    Добрый день, подскажите пожалуйста: как это лечиться?

     

    root@l-creatio-lel:/home/adminka# kubectl get pods
    NAME               READY   STATUS             RESTARTS   AGE
    elistener-api-0    0/1     CrashLoopBackOff   4          4m5s

     

      Warning  Unhealthy  13m (x4 over 15m)   kubelet            Readiness probe failed: Get "http://10.244.0.5:80/healthcheck": dial tcp 10.244.0.5:80: connect: connection refused
      Warning  BackOff    86s (x57 over 15m)  kubelet            Back-off restarting failed container

     

    $ kubectl logs elistener-api-0

    Unhandled exception. StackExchange.Redis.RedisConnectionException: It was not possible to connect to the redis server(s). There was an authentication failure; check that passwords (or client certificates) are configured correctly. AuthenticationFailure (None, last-recv: 310) on 10.96.133.113:6379/Interactive, Flushed/ComputeResult, last: ECHO, origin: SetResult, outstanding: 0, last-read: 0s ago, last-write: 0s ago, keep-alive: 60s, state: ConnectedEstablishing, mgr: 8 of 10 available, last-heartbeat: never, global: 14s ago, v: 2.1.58.34321

     

     

    $ kubectl get pods -o wide
    NAME               READY   STATUS             RESTARTS   AGE     IP           NODE            NOMINATED NODE   READINESS GATES
    elistener-api-0    0/1     CrashLoopBackOff   5          5m46s   10.244.0.5   r-creatio-lel   <none>           <none>
    redis-master-0     1/1     Running            0          6m32s   10.244.0.4   r-creatio-lel   <none>           <none>
    redis-replicas-0   0/1     Pending            0          6m32s   <none>       <none>          <none>           <none>

     

     

    $  kubectl get service
    NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
    elistener-api    NodePort    10.109.70.15    <none>        80:30001/TCP   6m14s
    kubernetes       ClusterIP   10.96.0.1       <none>        443/TCP        11m
    redis-headless   ClusterIP   None            <none>        6379/TCP       7m
    redis-master     ClusterIP   10.96.133.113   <none>        6379/TCP       7m
    redis-replicas   ClusterIP   10.102.18.199   <none>        6379/TCP       7m

     

     

     

     

     

     

    Екатерина Валерьевна,
    Попробуйте при установке редиса вместо ключа "--set usePassword=false" указать "--set auth.enabled=false".

    Dima Avdoshin,

    спасибо большое - помогло

    Добрый день,

     

    что может быть?

     

     

    adminka@r-creatio-lel-st:~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k…
    unable to recognize "https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k…": no matches for kind "ClusterRole" in version "rbac.authorization.k8s.io/v1beta1"
    unable to recognize "https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k…": no matches for kind "ClusterRoleBinding" in version "rbac.authorization.k8s.io/v1beta1"

     

    Екатерина Валерьевна,

    Возможно для решения вам помогут статьи на общедоступных ресурсах:
    https://github.com/GoogleCloudPlatform/gke-monitoring-tutorial/issues/14
    https://github.com/rook/rook/issues/2681

    Показать все комментарии

    Почему не опубликовали публичный образ, что мешает сделать и опубликовать соответствующий docker-compose.yml файл? 

    Нравится

    3 комментария

    Здравствуйте, Богдан!

     

    Docker мы поддерживаем только для .NET Core приложения.

    Задача создания (и публикации) образов при сборке .NET Core приложения — в roadmap разработки системы.

     

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

     

    Файл docker-compose.yaml делаться не будет, будет только 1 поставка через helm v 3.0.

     

    helm хорошо, но не у всех есть k8s. 
    Все равно людям придется писать docker-compose.yaml

    Отказаться от  docker-compose в пользу helm решено по причине необходимости отказоустойчивости.

     

    PS: Планируется публикация  helm v 3.0 пакета для продуктов на платформе .NET Core в сентябре-ноябре.

    Показать все комментарии