010
1) Установка MyBPM на кластере
011 Kubernetes.
012
013
Перед установкой необходимо получить доступы к следующим
014 сервисам:
015
016
017 - Apache Zookeeper
018
019 - Apache Kafka
020
021 - MongoDB
022
023 - ElasticSearch
024
025 - PostgreSQL
026
027 - Кластер Kubernetes
028
029
030
1.1) Образы платформы
031
032
Предварительно нужно получить актуальные на данный момент версии
033 платформы - это имена образов docker. На данный момент актуальными
034 являются следующие образы:
035
036
037 - out.mybpm.kz/mybpm-api-dev:4.5.1215 - API-сервис платформы
038 MyBPM
039
040 - out.mybpm.kz/mybpm-web-dev:4.5.1111 - Web-представление
041 платформы MyBPM
042
043
044
В вашем случае имена образов могут поменяться. Не забудьте в
045 дальнейшем заменять эти названия на ваши.
046
047
1.2) Подготовка пространства имён
048
049
В этом руководстве используется пространство имён:
050
051
052 mybpm-platform-test
053
054
055
056
057
058
У вас оно должно быть другим и отражать суть кластера,
059 например:
060
061
062 mybpm-prod-stone
063
064
065
066
067
068
Которое может обозначать платформу MyBPM на рабочей среде в
069 проекте Stone - выберите понятное вам название. В дальнейшем в этом
070 руководстве везде заменяйте mybpm-platform-test на ваше.
071
072
Создать можно это пространство имён выполнив команду:
073
074
075 kubectl apply -f kube-yaml-files/010-prepare/10-ns.yaml
076
077
078
079
080
081
1.3) Подготовка секретного ключа для загрузки образа
082 из репозитория
083
084
Образы платформы MyBPM загружаются из репозитория
085 dockerhub.mybpm.kz и доступ к нему должен быть предоставлен. Вам
086 предоставят файл, с ключом доступа. Пример такого файла находиться
087 здесь:
088
089
090 kube-yaml-files/020-MyBPM-in-kube/05-auth-out-mybpm-kz.json
091
092
093
094
095
096
В файле:
097
098
099 kube-yaml-files/020-MyBPM-in-kube/06-create-docker-secret.bash
100
101
102
103
104
105
Находиться скрипт, чтобы его применить. В нём указано
106 пространство имен: mybpm-platform-test - поменяйте его на ваше и
107 потом запустите его:
108
109
110 bash kube-yaml-files/020-MyBPM-in-kube/06-create-docker-secret.bash
111
112
113
114
115
116
Данный скрипт создаст в Kubernetes объект
117
118
119 secret/out-mybpm-kz
120
121
122
123
124
125
Через который Kubernetes будет обращаться к репозиторию
126 out.mybpm.kz для скачивания образов. Этот kube-объект в дальнейшем
127 будет указываться в yaml-файлах.
128
129
1.4) Распределение по хостам кластера
130 Kubernetes
131
132
Для того чтобы контролировать, на каких хостах кластера
133 Kubernetes будут запускаться сервисы платформы MyBPM нужно создать
134 соответствующие метки на хостах, и потом запускаемые контейнеры
135 привязать к этим меткам.
136
137
Для настройки соответствующих меток имеется скрипт:
138
139
140 bash kube-yaml-files/020-MyBPM-in-kube/07-distribute-node-labels.bash
141
142
143
144
145
146
В нём есть текст:
147
148
149 setup_node master1 +api -web
150 setup_node master2 +api -web
151 setup_node master3 -api -web
152 setup_node worker4 -api -web
153 setup_node worker5 -api +web
154 setup_node worker6 -api +web
155
156
157
158
159
160
Который добавляет метку api=ok на хосты master1 и master2, а
161 метку web=ok на хосты: worker5 и worker6. В вашем случае может быть
162 по другому - откорректируйте данный кусок скрипта, как вам нужно.
163 Теперь его нужно запустить.
164
165
Проверить распределение меток можно с помощью команды:
166
167
168 kubectl get node --show-labels
169
170
171
172
173
174
1.5) API-сервис платформы MyBPM
175
176
Теперь нужно развернуть API-сервис платформы MyBPM
177
178
179
at kz.greetgo.md_reader.util.MdUtil.xmlTextToDoc(MdUtil.java:80)
at kz.greetgo.md_reader.core.MdConverter.prepareHtmlFileFrom(MdConverter.java:136)
at kz.greetgo.md_reader.core.MdConverter.convert(MdConverter.java:208)
at kz.greetgo.md_reader.controller.RenderController.downloadToc(RenderController.java:360)
at kz.greetgo.md_reader.controller.RenderController.request(RenderController.java:108)
at jdk.internal.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at kz.greetgo.md_reader.interceptors.TextReplaceFilter.doFilter(TextReplaceFilter.java:36)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:166)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:341)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:894)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.io.IOException: Server returned HTTP response code: 429 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:2000)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1397)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1333)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.startPE(XMLDTDScannerImpl.java:732)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.skipSeparator(XMLDTDScannerImpl.java:2101)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDecls(XMLDTDScannerImpl.java:2064)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDTDExternalSubset(XMLDTDScannerImpl.java:299)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1165)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1040)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:943)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:247)
at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:342)
at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122)
at kz.greetgo.md_reader.util.MdUtil.xmlTextToDoc(MdUtil.java:71)
... 48 more