๋กœ์ปฌ์—์„œ minikube๋กœ k8s ๋ง›๋ณด๊ธฐ

2024-10-23
๐Ÿ“‚ infra > kubernetes
๐Ÿงถ #devops #k8s #ingress

ํ•™์Šต ๋ฐฐ๊ฒฝ

  • ์ด๋ฏธ ํšŒ์‚ฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ k8s๋กœ ๋Œ์•„๊ฐ€๊ณ  ์žˆ์ง€๋งŒ ์‚ฌ์šฉ๋งŒ ํ•˜๊ณ  ์ž์„ธํ•˜๊ฒŒ๋Š” ๋ชฐ๋ผ์„œ ๋กœ์ปฌ์—์„œ ๊ฐ„๋‹จํ•œ ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ๋กœํ•จ
  • ๋กœ์ปฌ์—์„œ url path๋กœ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ํ•˜๋Š” ingress ๊ตฌ์กฐ

๋ฏธ๋ฆฌ ์ค€๋น„ํ•  ๊ฒƒ

1. linux ์šด์˜์ฒด์ œ ํ™˜๊ฒฝ

ํ˜„์žฌ ํšŒ์‚ฌ์—์„œ Azure ์‚ฌ์šฉ ์ค‘์ด๋ผ azure vm ์„ ์‚ฌ์šฉํ–ˆ๋‹ค

  • Ubuntu Server 24.04 LTS x64
  • ๋จธ์‹ ์€ Standard B2s ์‚ฌ์šฉ : 2 vcpu, 4GiB ๋ฉ”๋ชจ๋ฆฌ

2. ๊ฐ„๋‹จํ•œ Spring Boot application

1@RestController
2@Slf4j
3public class KubeController {
4
5    @GetMapping("/domain")
6    public String domain(){
7        log.info("===== domain service =====");
8        log.info("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
9        log.info("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
10        log.info("==========================");
11        return "domain";
12    }
13
14    @GetMapping("/non-domain")
15    public String nonDomain(){
16        log.info("===== non domain =====");
17        log.info("        BLANK");
18        log.info("======================");
19        return "non domain";
20    }
21}

bootJar ์‹คํ–‰ํ•ด์„œ jar ํŒŒ์ผ ์ƒ์„ฑํ•ด๋‘ 

3. Docker image ์ค€๋น„

  • Dockerfile
1FROM openjdk:17-jdk-alpine
2
3WORKDIR /app
4
5COPY target/spring-app.jar /app/spring-app.jar
6# target/ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” Spring Boot JAR ํŒŒ์ผ์„ Docker ์ปจํ…Œ์ด๋„ˆ์˜ /app ๋””๋ ‰ํ† ๋ฆฌ์— ๋ณต์‚ฌ
7
8EXPOSE 8080
9
10ENTRYPOINT ["java", "-jar", "spring-app.jar"]
  • image build
1C:\> docker build -t spring-app .
2# ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ (.)์— ์žˆ๋Š” Dockerfile๋กœ spring-app ์ด๋ฏธ์ง€ ์ƒ์„ฑ
3# docker images๋กœ ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€ ํ™•์ธ ๊ฐ€๋Šฅ
  • docker hub๋กœ ์—…๋กœ๋“œ
1docker login -u username
2
3docker tag spring-app <username>/spring-app
4docker push <username>/spring-app

ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜

1. docker

1# ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜
2azureuser@m3rri17:~$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
3# docker ๊ณต์‹ gpg ํ‚ค ์ถ”๊ฐ€
4azureuser@m3rri17:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
5# docker ๊ณต์‹ apt ์ €์žฅ์†Œ ์ถ”๊ฐ€
6azureuser@m3rri17:~$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
7# docker ์„ค์น˜
8azureuser@m3rri17:~$ sudo apt-get install docker-ce docker-ce-cli containerd.io

minikube driver๋ฅผ docker๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ถ”๊ฐ€๋กœ ์‹คํ–‰ํ•ด์ค˜์•ผ ํ•œ๋‹ค

1azureuser@m3rri17:~$ sudo usermod -aG docker $USER && newgrp docker

โš ์œ„ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  minikube๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ

1azureuser@m3rri17:~$ minikube start --driver=docker --memory 200
2๐Ÿ˜„  minikube v1.34.0 on Ubuntu 24.04
3โœจ  Using the docker driver based on user configuration
4
5๐Ÿ’ฃ  Exiting due to PROVIDER_DOCKER_NEWGRP: "docker version --format <no value>-<no value>:<no value>" exit status 1: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.47/version": dial unix /var/run/docker.sock: connect: permission denied
6๐Ÿ’ก  Suggestion: Add your user to the 'docker' group: 'sudo usermod -aG docker $USER && newgrp docker'
7๐Ÿ“˜  Documentation: https://docs.docker.com/engine/install/linux-postinstall/

๐Ÿ’ก Suggestion ๋ถ€๋ถ„์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰

2. minikube

1azureuser@m3rri17:~$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
2azureuser@m3rri17:~$ sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64

์ถœ์ฒ˜ : minikube ๊ณต์‹๋ฌธ์„œ

3. kubectl

1# download the lastes release
2azureuser@m3rri17:~$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl
1# install kubectl
2azureuser@m3rri17:~$ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
3# version check
4azureuser@m3rri17:~$ kubectl version --client

์ถœ์ฒ˜ : kubernetes ๊ณต์‹๋ฌธ์„œ

4. ingress-controller

1azureuser@m3rri17:~$ minikube addons enable ingress
2๐Ÿ’ก  ingress is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.
3You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS
4    โ–ช Using image registry.k8s.io/ingress-nginx/controller:v1.11.2
5    โ–ช Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.3
6    โ–ช Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.3
7๐Ÿ”Ž  Verifying ingress addon...
8๐ŸŒŸ  The 'ingress' addon is enabled
9
10azureuser@m3rri17:~$ kubectl get all -n ingress-nginx
11NAME                                           READY   STATUS      RESTARTS   AGE
12pod/ingress-nginx-admission-create-p7mcn       0/1     Completed   0          89s
13pod/ingress-nginx-admission-patch-p5bf4        0/1     Completed   1          89s
14pod/ingress-nginx-controller-bc57996ff-p9488   1/1     Running     0          89s
15
16NAME                                         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
17service/ingress-nginx-controller             NodePort    10.107.25.163    <none>        80:31473/TCP,443:30846/TCP   89s
18service/ingress-nginx-controller-admission   ClusterIP   10.101.131.201   <none>        443/TCP                      89s
19
20NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE
21deployment.apps/ingress-nginx-controller   1/1     1            1           89s
22
23NAME                                                 DESIRED   CURRENT   READY   AGE
24replicaset.apps/ingress-nginx-controller-bc57996ff   1         1         1       89s
25
26NAME                                       STATUS     COMPLETIONS   DURATION   AGE
27job.batch/ingress-nginx-admission-create   Complete   1/1           8s         89s
28job.batch/ingress-nginx-admission-patch    Complete   1/1           9s         89s

k8s ๊ตฌ๋™

1. minikube ์‹œ์ž‘

1azureuser@m3rri17:~$ minikube start --driver=docker --memory 2048
2# --driver=docker : driver ๊ฒน์ณ์„œ ์—๋Ÿฌ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ
3# --memory 2048 : ram ์— ์—ฌ์œ ๊ฐ€ ์—†์–ด์„œ ๋”ฐ๋กœ ์ง€์ •ํ•จ
4
5azureuser@m3rri17:~$ minikube status
6# ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์˜ค๋ฉด ์ •์ƒ
7minikube
8type: Control Plane
9host: Running
10kubelet: Running
11apiserver: Running
12kubeconfig: Configured
13
14azureuser@m3rri17:~$ minikube ip
15# ip ํ™•์ธํ•˜์—ฌ ์ดํ›„ Ingress ํŒŒ์ผ ์ž‘์„ฑ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ

2. Deployment

  • file ์ƒ์„ฑ
    • spring-deployment-1.yaml
      1apiVersion: apps/v1
      2kind: Deployment
      3metadata:
      4    name: spring-boot-deployment-1 # deployment์˜ ์ด๋ฆ„
      5spec:
      6    replicas: 1 # ์ƒ์„ฑํ•  pod ์ˆ˜
      7    selector:
      8        matchLabels:
      9            app: spring-boot-app-1 # app ์ด๋ฆ„ service ํŒŒ์ผ์˜ spec.selector.app ์—์„œ ๋™์ผํ•œ ์ด๋ฆ„ ์‚ฌ์šฉํ•˜๋ฉด ๋งคํ•‘๋จ
      10    template:
      11        metadata:
      12            labels:
      13                app: spring-boot-app-1
      14        spec:
      15            containers:
      16                - name: spring-boot-container-1
      17                  image: <dockerhub-username>/spring-app # Docker Hub์—์„œ ๊ฐ€์ ธ์˜ฌ ์ด๋ฏธ์ง€
      18                  ports:
      19                      - containerPort: 8080 # Spring Boot ๊ธฐ๋ณธ ํฌํŠธ
    • spring-deployment-2.yaml
      1apiVersion: apps/v1
      2kind: Deployment
      3metadata:
      4    name: spring-boot-app-2
      5spec:
      6    replicas: 1
      7    selector:
      8        matchLabels:
      9            app: spring-boot-app-2
      10    template:
      11        metadata:
      12            labels:
      13                app: spring-boot-app-2
      14        spec:
      15            containers:
      16                - name: spring-boot-container-2
      17                  image: <dockerhub-username>/spring-app
      18                  ports:
      19                      - containerPort: 8080
  • ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉ
1azureuser@m3rri17:~$ kubectl apply -f spring-deployment-1.yaml
2azureuser@m3rri17:~$ kubectl apply -f spring-deployment-2.yaml
3azureuser@m3rri17:~$ kubectl get pods # pod name ํ™•์ธ
4NAME                                        READY   STATUS    RESTARTS   AGE
5spring-boot-deployment-1-5b4b9d89f8-2sjcq   1/1     Running   0          21s
6spring-boot-deployment-2-cd877558-jqw4x     1/1     Running   0          7s
7
8azureuser@m3rri17:~$ kubectl logs <pod-name> # -f๋Š” ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ํ™•์ธ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜ ๋‹ค์‹œ ์ •๋ฆฌ

3. Service

  • file ์ƒ์„ฑ
    • spring-service-1.yaml
      1apiVersion: v1
      2kind: Service
      3metadata:
      4    name: spring-boot-service-1 # service ์ด๋ฆ„. ingress ํŒŒ์ผ์˜ spec.rules.http.paths.backend.service.name์— ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ ๋งคํ•‘
      5spec:
      6    selector:
      7        app: spring-boot-app-1
      8    ports:
      9        - protocol: TCP
      10          port: 80
      11          targetPort: 8080 # 80ํฌํŠธ๋กœ ๋“ค์–ด์˜จ ์š”์ฒญ์„ 8080 ํฌํŠธ๋กœ ์—ฐ๊ฒฐ
    • spring-service-2.yaml
      1apiVersion: v1
      2kind: Service
      3metadata:
      4    name: spring-boot-service-2
      5spec:
      6    selector:
      7        app: spring-boot-app-2
      8    ports:
      9        - protocol: TCP
      10          port: 80
      11          targetPort: 8080
  • ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉ
1azureuser@m3rri17:~$ kubectl apply -f spring-service-1.yaml
2azureuser@m3rri17:~$ kubectl apply -f spring-service-2.yaml
3azureuser@m3rri17:~$ kubectl get svc
4NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
5kubernetes              ClusterIP   10.96.0.1      <none>        443/TCP        6m14s
6spring-boot-service-1   NodePort    10.98.26.57    <none>        80:32309/TCP   7s
7spring-boot-service-2   NodePort    10.99.23.101   <none>        80:32206/TCP   3s

4. Ingress

  • file ์ƒ์„ฑ ingress.yaml
    1apiVersion: networking.k8s.io/v1
    2kind: Ingress
    3metadata:
    4    name: spring-boot-ingress
    5    annotations:
    6        nginx.ingress.kubernetes.io/rewrite-target: /
    7spec:
    8    rules:
    9        - host: "<minikube-ip>.nip.io" # ๋˜๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„
    10          http:
    11              paths:
    12                  - path: /domain
    13                    pathType: Prefix
    14                    backend:
    15                        service:
    16                            name: spring-boot-service-1
    17                            port:
    18                                number: 80
    19                  - path: /non-domain
    20                    pathType: Prefix
    21                    backend:
    22                        service:
    23                            name: spring-boot-service-2
    24                            port:
    25                                number: 80
  • ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์šฉ
1azureuser@m3rri17:~$ kubectl apply -f ingress.yaml
2azureuser@m3rri17:~$ kubectl get all -n ingress-nginx
3NAME                                           READY   STATUS      RESTARTS   AGE
4pod/ingress-nginx-admission-create-p7mcn       0/1     Completed   0          9m51s
5pod/ingress-nginx-admission-patch-p5bf4        0/1     Completed   1          9m51s
6pod/ingress-nginx-controller-bc57996ff-p9488   1/1     Running     0          9m51s
7
8NAME                                         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
9service/ingress-nginx-controller             NodePort    10.107.25.163    <none>        80:31473/TCP,443:30846/TCP   9m51s
10service/ingress-nginx-controller-admission   ClusterIP   10.101.131.201   <none>        443/TCP                      9m51s
11
12NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE
13deployment.apps/ingress-nginx-controller   1/1     1            1           9m51s
14
15NAME                                                 DESIRED   CURRENT   READY   AGE
16replicaset.apps/ingress-nginx-controller-bc57996ff   1         1         1       9m51s
17
18NAME                                       STATUS     COMPLETIONS   DURATION   AGE
19job.batch/ingress-nginx-admission-create   Complete   1/1           8s         9m51s
20job.batch/ingress-nginx-admission-patch    Complete   1/1           9s         9m51s

5. ํ…Œ์ŠคํŠธ ๋ฐ ๋กœ๊ทธ ํ™•์ธ

  • /domain
1azureuser@m3rri17:~$ curl http://192.168.49.2.nip.io:80/domain
2domain
3
4azureuser@m3rri17:~$ kubectl logs spring-boot-deployment-1-5b4b9d89f8-2sjcq
5
6  .   ____          _            __ _ _
7 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
8( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
9 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
10  '  |____| .__|_| |_|_| |_\__, | / / / /
11 =========|_|==============|___/=/_/_/_/
12
13 :: Spring Boot ::                (v3.3.4)
14
152024-10-22T07:15:39.011Z  INFO 1 --- [kubetarget] [           main] c.e.kubetarget.KubetargetApplication     : Starting KubetargetApplication v0.0.1-SNAPSHOT using Java 17-ea with PID 1 (/app/spring-app.jar started by root in /app)
162024-10-22T07:15:39.016Z  INFO 1 --- [kubetarget] [           main] c.e.kubetarget.KubetargetApplication     : No active profile set, falling back to 1 default profile: "default"
172024-10-22T07:15:41.258Z  INFO 1 --- [kubetarget] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)
182024-10-22T07:15:41.297Z  INFO 1 --- [kubetarget] [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
192024-10-22T07:15:41.297Z  INFO 1 --- [kubetarget] [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.30]
202024-10-22T07:15:41.608Z  INFO 1 --- [kubetarget] [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
212024-10-22T07:15:41.614Z  INFO 1 --- [kubetarget] [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2529 ms
222024-10-22T07:15:43.224Z  INFO 1 --- [kubetarget] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path '/'
232024-10-22T07:15:43.262Z  INFO 1 --- [kubetarget] [           main] c.e.kubetarget.KubetargetApplication     : Started KubetargetApplication in 4.891 seconds (process running for 5.76)
242024-10-22T07:23:43.510Z  INFO 1 --- [kubetarget] [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
252024-10-22T07:23:43.510Z  INFO 1 --- [kubetarget] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
262024-10-22T07:23:43.512Z  INFO 1 --- [kubetarget] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 2 ms
272024-10-22T07:25:43.823Z  INFO 1 --- [kubetarget] [nio-8080-exec-5] c.e.k.d.controller.DomainController      : ===== domain service =====
282024-10-22T07:25:43.823Z  INFO 1 --- [kubetarget] [nio-8080-exec-5] c.e.k.d.controller.DomainController      : ABCDEFGHIJKLMNOPQRSTUVWXYZ
292024-10-22T07:25:43.823Z  INFO 1 --- [kubetarget] [nio-8080-exec-5] c.e.k.d.controller.DomainController      : ABCDEFGHIJKLMNOPQRSTUVWXYZ
302024-10-22T07:25:43.823Z  INFO 1 --- [kubetarget] [nio-8080-exec-5] c.e.k.d.controller.DomainController      : ==========================
  • /non-domain
1azureuser@m3rri17:~$ curl http://192.168.49.2.nip.io:80/non-domain
2non domain
3
4azureuser@m3rri17:~$ kubectl logs spring-boot-deployment-2-cd877558-jqw4x
5
6  .   ____          _            __ _ _
7 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
8( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
9 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
10  '  |____| .__|_| |_|_| |_\__, | / / / /
11 =========|_|==============|___/=/_/_/_/
12
13 :: Spring Boot ::                (v3.3.4)
14
152024-10-22T07:15:42.639Z  INFO 1 --- [kubetarget] [           main] c.e.kubetarget.KubetargetApplication     : Starting KubetargetApplication v0.0.1-SNAPSHOT using Java 17-ea with PID 1 (/app/spring-app.jar started by root in /app)
162024-10-22T07:15:42.657Z  INFO 1 --- [kubetarget] [           main] c.e.kubetarget.KubetargetApplication     : No active profile set, falling back to 1 default profile: "default"
172024-10-22T07:15:44.533Z  INFO 1 --- [kubetarget] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)
182024-10-22T07:15:44.551Z  INFO 1 --- [kubetarget] [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
192024-10-22T07:15:44.552Z  INFO 1 --- [kubetarget] [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.30]
202024-10-22T07:15:44.697Z  INFO 1 --- [kubetarget] [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
212024-10-22T07:15:44.699Z  INFO 1 --- [kubetarget] [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1821 ms
222024-10-22T07:15:45.653Z  INFO 1 --- [kubetarget] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path '/'
232024-10-22T07:15:45.706Z  INFO 1 --- [kubetarget] [           main] c.e.kubetarget.KubetargetApplication     : Started KubetargetApplication in 4.273 seconds (process running for 5.877)
242024-10-22T07:25:51.778Z  INFO 1 --- [kubetarget] [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
252024-10-22T07:25:51.778Z  INFO 1 --- [kubetarget] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
262024-10-22T07:25:51.780Z  INFO 1 --- [kubetarget] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
272024-10-22T07:25:51.822Z  INFO 1 --- [kubetarget] [nio-8080-exec-1] c.e.k.d.controller.DomainController      : ===== non domain =====
282024-10-22T07:25:51.822Z  INFO 1 --- [kubetarget] [nio-8080-exec-1] c.e.k.d.controller.DomainController      :         BLANK
292024-10-22T07:25:51.822Z  INFO 1 --- [kubetarget] [nio-8080-exec-1] c.e.k.d.controller.DomainController      : ======================

path์— ๋”ฐ๋ผ deployment1๊ณผ deployment2๋กœ ์š”์ฒญ์ด ์ž˜ ๋‚˜๋‰˜์–ด ๋“ค์–ด๊ฐ”๋‹ค

/end of ๋กœ์ปฌ์—์„œ minikube๋กœ k8s ๋ง›๋ณด๊ธฐ
CONTENT LISTMERRI๏ผ‡s DEVELOG
Spring Security - OAuth2.0 ์‚ฌ์šฉ ์‹œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„๋ฅผ ์ง€์›ํ•˜๊ธฐ
2024-12-10