Skip to content
Open

k8s #28

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 34 additions & 3 deletions payment-service-app/docker-compose.yml → docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ services:
payment-service-app:
image: payment-service-app
build:
context: .
context: payment-service-app
dockerfile: Dockerfile
ports:
- "8082:8082"
Expand All @@ -17,6 +17,18 @@ services:
KEYCLOAK_HOST: keycloak:8080
restart: unless-stopped

xpayment-adapter-app:
image: xpayment-adapter-app
build:
context: xpayment-adapter-app
dockerfile: xpayment-adapter-app/Dockerfile
ports:
- "8088:8080"
depends_on:
postgres:
condition: service_healthy
restart: unless-stopped

postgres:
image: postgres:16
container_name: postgres-db
Expand Down Expand Up @@ -57,11 +69,11 @@ services:
- --import-realm
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
KEYCLOAK_ADMIN_PASSWORD: password
ports:
- "8085:8080"
volumes:
- ./src/main/resources/keycloak/realm-export.json:/opt/keycloak/data/import/realm-export.json
- ./payment-service-app/src/main/resources/keycloak/realm-export.json:/opt/keycloak/data/import/realm-export.json
restart: unless-stopped

kafka:
Expand Down Expand Up @@ -98,6 +110,25 @@ services:
depends_on:
- kafka

rabbitmq:
image: rabbitmq:4.2.3-management-alpine
container_name: rabbitmq
ports:
- "5672:5672" # для подключения клиентов к брокеру
- "15672:15672" # для доступа к админке
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: admin
volumes:
- rabbitmq_data:/var/lib/rabbitmq
# делаем доступным в контейнере файл плагина
- ./rabbitmq_delayed_message_exchange-4.2.0.ez:/opt/rabbitmq/plugins/rabbitmq_delayed_message_exchange-4.2.0.ez
command: >
bash -c "rabbitmq-plugins enable --offline rabbitmq_delayed_message_exchange && rabbitmq-server"
restart: unless-stopped

volumes:
postgres_data:
pgdata:
kafka_data:
rabbitmq_data:
38 changes: 38 additions & 0 deletions k8s/k8s-nginx-values.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment # имя Deployment
spec:
replicas: 3 # количество реплик (Pod’ов)
selector: # селектор для идентификации Pod’ов
matchLabels:
app: nginx # выбираем Pod’ы с меткой app=nginx
template: # шаблон для создания Pod’ов
metadata:
labels:
app: nginx # метка, чтобы Pod соответствовал селектору
spec: # спецификация Pod’а
containers: # список контейнеров внутри Pod’а
- name: nginx # имя контейнера
image: nginx:1.25 # образ контейнера (nginx версии 1.25)
ports:
- containerPort: 80 # порт, который будет слушать контейнер (внутри Pod)
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx # выбираем Pod’ы с меткой app=nginx
ports: # список портов
- protocol: TCP # протокол (TCP по умолчанию)
port: 80 # порт Service
targetPort: 80 # порт внутри Pod’а
type: ClusterIP # тип Service:

# ClusterIP (по умолчанию) -- доступ только изнутри кластера

# NodePort -- открывает порт на нодах для внешнего доступа

# LoadBalancer -- для облачных провайдеров, создаёт балансировщик
12 changes: 12 additions & 0 deletions k8s/kafka-values.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
kraft:
enabled: true # режим KRaft (по умолчанию true в новых релизах)

controller:
replicaCount: 1 # один контроллер для стенда

broker:
replicaCount: 1 # один брокер

listeners:
client:
protocol: PLAINTEXT # для простоты: без TLS/SASL на учебном стенде
30 changes: 30 additions & 0 deletions k8s/keycloak-values.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
image:
registry: quay.io
repository: keycloak/keycloak
tag: 24.0.3

extraEnvVars:
- name: KEYCLOAK_ADMIN
value: admin
- name: KEYCLOAK_ADMIN_PASSWORD
value: admin

command:
- start-dev
- --http-port=8080
- --import-realm
- --log-level=DEBUG

service:
ports:
http: 8085

extraVolumes:
- name: realm-import
configMap:
name: keycloak-realm

extraVolumeMounts:
- name: realm-import
mountPath: /opt/keycloak/data/import/realm-export.json
subPath: realm-export.json
48 changes: 48 additions & 0 deletions k8s/payment-service-values.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: payment-service-app
labels:
app: payment-service-app
spec:
replicas: 1 # одно приложение (можно увеличить)
selector:
matchLabels:
app: payment-service-app
template:
metadata:
labels:
app: payment-service-app
spec:
containers:
- name: payment-service-app
image: payment-service:latest # докер образ
ports:
- containerPort: 8080 # порт внутри Pod’а
env:
- name: SPRING_DATASOURCE_URL
value: jdbc:postgresql://my-pg-postgresql.db.svc.cluster.local:5432/payment-db
- name: SPRING_DATASOURCE_USERNAME
value: postgres
- name: SPRING_DATASOURCE_PASSWORD
value: secret
- name: SPRING_KAFKA_BOOTSTRAP_SERVERS
value: my-kafka.kafka.svc.cluster.local:9092
- name: SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI
value: http://keycloak.keycloak.svc.cluster.local:8080/realms/iprody-lms
---
apiVersion: v1
kind: Service
metadata:
name: payment-service-app
labels:
app: payment-service-app
spec:
selector:
app: payment-service-app
ports:
- protocol: TCP
port: 8080 # порт внутри кластера
targetPort: 8080 # порт контейнера
nodePort: 30080 # внешний порт (только если type=NodePort)
type: NodePort # вариант для доступа снаружи (Minikube, DockerDesktop)
43 changes: 43 additions & 0 deletions k8s/xpayment-adapter-values.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: xpayment-adapter-app
spec:
replicas: 1
selector:
matchLabels:
app: xpayment-adapter-app
template:
metadata:
labels:
app: xpayment-adapter-app
spec:
containers:
- name: xpayment-adapter-app
image: xpayment-adapter-app:latest
ports:
- containerPort: 8080
env:
- name: SPRING_KAFKA_BOOTSTRAP_SERVERS
value: "my-kafka.kafka.svc.cluster.local:9093"
- name: SPRING_KAFKA_CONSUMER_GROUP_ID
value: "xpayment-adapter-result-consumers"
- name: APP_KAFKA_TOPIC_REQUEST
value: "xpayment-adapter.requests"
- name: APP_KAFKA_TOPIC_RESPONSE
value: "xpayment-adapter.responses"
- name: RABBITMQ_URL
value: "amqp://rabbitmq.rabbitmq.svc.cluster.local:5672"
---
apiVersion: v1
kind: Service
metadata:
name: xpayment-adapter-app
spec:
selector:
app: xpayment-adapter-app
ports:
- protocol: TCP
port: 8080
targetPort: 8080
type: ClusterIP
2 changes: 1 addition & 1 deletion payment-service-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.iprody</groupId>
<artifactId>PaymentService</artifactId>
<artifactId>Payment-Service-Main</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
Expand Down
5 changes: 2 additions & 3 deletions payment-service-app/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.iprody</groupId>
<artifactId>PaymentService</artifactId>
<artifactId>Payment-Service-Main</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

<artifactId>payment-service-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Payment Service App</name>
<name>payment-service-app</name>
<description>Payment Service application</description>

<packaging>jar</packaging>
Expand Down Expand Up @@ -127,7 +127,6 @@
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>

</annotationProcessorPaths>
</configuration>
</plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;

import java.net.URI;
import java.util.List;
import java.util.UUID;

Expand Down Expand Up @@ -58,12 +56,8 @@ public ResponseEntity<List<PaymentDto>> fetchAll() {
public ResponseEntity<PaymentDto> addPayment(@RequestBody PaymentDto paymentDto) {
log.info("POST: save one payment: \n\n {} \n", paymentDto.toString());
final PaymentDto savedPayment = this.paymentService.createAsync(paymentDto);
final URI location = ServletUriComponentsBuilder.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(savedPayment.getGuid())
.toUri();
log.debug("Payment saved: {}", savedPayment);
return ResponseEntity.created(location).body(savedPayment);
log.debug("Payment saved in status: {}", savedPayment.getStatus());
return ResponseEntity.status(HttpStatus.CREATED).body(savedPayment);
}

@GetMapping(path = "/{id}")
Expand Down
4 changes: 2 additions & 2 deletions payment-service-app/src/main/resources/application-db.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
spring:

datasource:
url: jdbc:postgresql://localhost:5432/payment-db # URL подключения к БД
#url: jdbc:postgresql://postgres-db:5432/payment-db
#url: jdbc:postgresql://localhost:5432/payment-db # URL подключения к БД
url: jdbc:postgresql://postgres-db:5432/payment-db
username: user # Имя пользователя
password: secret # Пароль
driver-class-name: org.postgresql.Driver # класс jdbc драйвера
Expand Down
18 changes: 10 additions & 8 deletions payment-service-app/src/main/resources/application.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
server:
port: 8082
error:
include-message: always

spring:

Expand All @@ -13,14 +15,14 @@ spring:
jwt:
issuer-uri: http://localhost:8085/realms/iprody-lms

# logging:
# level:
# root: INFO
# org.hibernate: ERROR
# # com.iprody.payment: ERROR
# org.springframework.web: WARN
# org.springframework.data: WARN
# org.springframework.security: WARN
logging:
level:
root: INFO
org.hibernate: ERROR
com.iprody: INFO
org.springframework.web: WARN
org.springframework.data: WARN
org.springframework.security: WARN

management:
endpoints:
Expand Down
3 changes: 2 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</parent>

<groupId>com.iprody</groupId>
<artifactId>PaymentService</artifactId>
<artifactId>Payment-Service-Main</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

Expand All @@ -36,6 +36,7 @@
<checkstyle.version>3.6.0</checkstyle.version>
<mapstruct.version>1.6.3</mapstruct.version>
<test-containers.version>1.21.4</test-containers.version>
<amqp.version>3.5.8</amqp.version>
<payment-service-api.version>0.0.1-SNAPSHOT</payment-service-api.version>
</properties>

Expand Down
Binary file added rabbitmq_delayed_message_exchange-4.2.0.ez
Binary file not shown.
2 changes: 1 addition & 1 deletion simple-http-server/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.iprody</groupId>
<artifactId>PaymentService</artifactId>
<artifactId>Payment-Service-Main</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

Expand Down
Loading