Барои идоракунии самараноки кластер бо истифода аз Helm 3 диаграмма эҷод кунед
Калидвожаҳо: Helm 3, ҷойгиркунии диаграмма
Насб кардани Ҷенкинс ва қубур барои интиқоли автоматии код ба кластер
Калидвожаҳо: Конфигуратсияи Ҷенкинс, плагинҳо, анбори конфигуратсияҳои алоҳида
Ман нақша дорам, ки ба ҳар як қадам як мақолаи алоҳида ҷудо кунам.
Мақсади ин силсила мақолаҳо нест, ки чӣ тавр навиштани хидматҳои хурд, балки чӣ гуна кор кардани онҳо дар як система аст. Гарчанде ки ҳамаи ин чизҳо одатан берун аз масъулияти таҳиякунанда ҳастанд, ман фикр мекунам, ки ҳадди аққал 20% бо онҳо шинос шудан муфид аст (ки маълум аст, ки 80% натиҷаро ташкил медиҳад). Баъзе мавзӯъҳои комилан муҳим, аз қабили амният, аз ин лоиҳа берун хоҳанд монд, зеро муаллиф дар ин бора каме дарк мекунад; система танҳо барои истифодаи шахсӣ сохта шудааст. Ман ҳама гуна андешаҳо ва танқиди созандаро истиқбол мекунам.
Эҷоди хидматҳои микро
Хидматҳо дар Java 11 бо истифода аз Spring Boot навишта шудаанд. Муоширати байнихизматрасонӣ бо истифода аз REST ташкил карда мешавад. Лоиҳа шумораи ҳадди ақали санҷишҳоро дар бар мегирад (то он ки баъдтар дар Ҷенкинс чизе санҷида шавад). Рамзи сарчашмаи хидматҳо дар GitHub дастрас аст: пушти сар и Дарвоза.
Барои санҷидани ҳолати ҳар як хидмат, ба вобастагии онҳо як Actuator Spring илова карда шуд. Он нуқтаи ниҳоӣ / фаъолкунанда / саломатиро эҷод мекунад ва ҳолати 200-ро бармегардонад, агар хидмат барои қабули трафик омода бошад ё дар ҳолати мушкилот 504. Дар ин ҳолат, ин санҷиши хеле сохта аст, зеро хидматҳо хеле соддаанд ва дар баъзе ҳолатҳои форс-мажор онҳо эҳтимолан комилан дастнорас мешаванд, то ки қисман фаъол бошанд. Аммо дар системаҳои воқеӣ, Actuator метавонад пеш аз он ки корбарон ба он зарба зананд, ташхис диҳанд. Масалан, агар мушкилот бо дастрасӣ ба пойгоҳи додаҳо ба миён ояд, мо метавонем ба таври худкор ба ин тавассути қатъ кардани коркарди дархостҳо бо намунаи шикастаи хидмат ҷавоб диҳем.
Хидмати пушти сар
Хидмати пуштибонӣ танҳо шумораи дархостҳои қабулшударо ҳисоб мекунад ва бармегардонад.
Рамзи назораткунанда:
@RestController
public class RequestsCounterController {
private final AtomicLong counter = new AtomicLong();
@GetMapping("/requests")
public Long getRequestsCount() {
return counter.incrementAndGet();
}
}
Санҷиши назораткунанда:
@WebMvcTest(RequestsCounterController.class)
public class RequestsCounterControllerTests {
@Autowired
private MockMvc mockMvc;
@Test
public void firstRequest_one() throws Exception {
mockMvc.perform(get("/requests"))
.andExpect(status().isOk())
.andExpect(MockMvcResultMatchers.content().string("1"));
}
}
FROM adoptopenjdk/openjdk11:jdk-11.0.5_10-alpine as builder
ADD . /src
WORKDIR /src
RUN ./mvnw package -DskipTests
FROM alpine:3.10.3 as packager
RUN apk --no-cache add openjdk11-jdk openjdk11-jmods
ENV JAVA_MINIMAL="/opt/java-minimal"
RUN /usr/lib/jvm/java-11-openjdk/bin/jlink
--verbose
--add-modules
java.base,java.sql,java.naming,java.desktop,java.management,java.security.jgss,java.instrument
--compress 2 --strip-debug --no-header-files --no-man-pages
--release-info="add:IMPLEMENTOR=radistao:IMPLEMENTOR_VERSION=radistao_JRE"
--output "$JAVA_MINIMAL"
FROM alpine:3.10.3
LABEL maintainer="Anton Shelenkov [email protected]"
ENV JAVA_HOME=/opt/java-minimal
ENV PATH="$PATH:$JAVA_HOME/bin"
COPY --from=packager "$JAVA_HOME" "$JAVA_HOME"
COPY --from=builder /src/target/microservices-backend-*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
Мо тасвирро аз нав офаридем ва дар ниҳоят он 6 маротиба борик шуд, ки 77 МБ-ро ташкил дод. Бад не. Пас аз он, тасвирҳои тайёрро ба феҳристи тасвирҳо бор кардан мумкин аст, то тасвирҳои шумо барои зеркашӣ аз Интернет дастрас бошанд.