자습서: Kubernetes, Minikube 및 Dockerhub에 Quarkus 애플리케이션 게시

메모



This is my first English post, then please give me your feedback, and suggestion to correct any mistakes.



소개



이 문서의 목적은 Quakus에서 간단한 애플리케이션을 만들고 Minikube(로컬 테스트용 Kubernetes)에 게시하고 마지막으로 Docker 이미지를 Dockerhub에 게시하는 것입니다.

Kubernetes(K8S), Docker, Minikube, Kubectl 및 Quarkus 기술에 대한 자세한 내용은 다음 사이트를 방문하십시오.

도커: https://www.docker.com/

쿠버네티스: https://kubernetes.io/pt/

미니큐브: https://minikube.sigs.k8s.io/docs/start/

Minikube(Kubernetes): https://kubernetes.io/pt/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/

쿼커스: https://quarkus.io/

Minikube is local Kubernetes, focusing on making it easy to learn and develop for Kubernetes. It is not recommending to production environment.



전제 조건


  • Docker 설치: https://docs.docker.com/engine/install/
  • Kubernetes 설치: https://kubernetes.io/pt/docs/setup/
  • Kubeclt 설치: https://kubernetes.io/docs/tasks/tools/
  • Minikube 설치: https://minikube.sigs.k8s.io/docs/start/
  • Open JDK 11+ 설치: https://openjdk.java.net/install/

  • 갑시다! 새로운 간단한 Quarkus 애플리케이션을 만들 것입니다.

    명령줄로 간단한 Quarkus 애플리케이션 만들기




    mvn io.quarkus:quarkus-maven-plugin:1.13.0.Final:create \\\\    -DprojectGroupId=br.com.mp \\\\    -DprojectArtifactId=kubernetes-quarkus \\\\    -DclassName="br.com.mp.kubernetes.quarkus.rest.GreetingResource" \\\\    -Dpath="/hello" \\\\    -Dextensions="resteasy,kubernetes,jib"
    


    프로젝트 폴더에 액세스




    cd kubernetes-quarkus
    


    다음 단계에서는 프로젝트를 테스트해 보겠습니다.




    mvn quarkus:dev
    


    터미널 결과(콘솔)





    명령줄로 Quarkus 애플리케이션 실행

    mvn quarkus:add-extension -Dextensions="quarkus-minikube"
    


    또는 pom.xml에 삽입할 수 있습니다.

    <dependency>  <groupId>io.quarkus</groupId>  <artifactId>quarkus-minikube</artifactId></dependency>
    


    It is possible to create Quarkus application by command line, adding Minikube extensions.



    Minikube에서 로컬 Container Registry 생성



    환경 변수는 “eval” 명령으로 설정해야 합니다.

    eval $(minikube -p minikube docker-env)
    


    명령줄에서 Quarkus로 Docker 이미지 만들기



    다음 단계에서는 Quarkus 매개변수로 maven 패키지를 생성하여 컨테이너 이미지를 빌드합니다.

    mvn package -Dquarkus.container-image.build=true
    


    Kubernetes 및 Minikube 매니페스트 생성



    마지막 명령을 실행한 후 maven과 Quarkus는 아래 이미지와 같이 "/target/kubernetes"폴더에 매니페스트 파일을 생성합니다.



    모든 도커 이미지 목록




    //List all docker imagesdocker image ls
    



    [output]REPOSITORY                        TAG              IMAGE ID       CREATED         SIZEmarcus/kubernetes-quarkus-teste   1.0.0-SNAPSHOT   e574987218c4   3 minutes ago   199MB
    


    다음 단계에서는 Minikube 매니페스트를 적용하여 Minikube Kubernetes에 게시해야 합니다.




    kubectl apply -f target/kubernetes/minikube.yml
    



    [output]service/kubernetes-quarkus-teste createddeployment.apps/kubernetes-quarkus-teste created
    


    몇 초 또는 몇 분 후 Minikube에서 애플리케이션을 사용할 수 있습니다.

    Pods are the smallest, most basic deployable objects in Kubernetes (https://cloud.google.com/kubernetes-engine/docs/concepts/pod)



    모든 포드 목록




    kubectl get po
    



    [output]NAME                                        READY   STATUS    RESTARTS   AGEkubernetes-quarkus-teste-54db4f8df8-gf7nf   1/1     Running   0          6m52s
    


    로컬 컴퓨터에서 애플리케이션에 액세스



    로컬 컴퓨터에서 액세스하려면 Minikube 주소를 localhost로 리디렉션해야 합니다. 이 명령을 입력합니다. (각 포드에는 고유한 이름이 있습니다.)

    kubectl port-forward pod/kubernetes-quarkus-teste-54db4f8df8-gf7nf 8080:8080
    



    [output]Forwarding from 127.0.0.1:8080 -> 8080Forwarding from [::1]:8080 -> 8080Handling connection for 8080
    


    브라우저에서 애플리케이션에 액세스



    브라우저를 열고 다음 주소를 입력하세요: [http://localhost:8080](http://localhost:8080)


    Dockerhub에 이미지 게시



    지금부터 Maven 명령과 Quarkus 매개변수(컨테이너 이미지)를 사용하여 도커 이미지를 Dockerhub로 보냅니다.

    mvn clean package -Dquarkus.container-image.push=true
    


    내 경우에는이 오류가 발생했습니다.




    Caused by: com.google.cloud.tools.jib.api.RegistryUnauthorizedException:Unauthorized for registry-1.docker.io/marcus/kubernetes-quarkus-teste[ERROR]         at com.google.cloud.tools.jib.registry.RegistryEndpointCaller.call(RegistryEndpointCaller.java:164)[ERROR]
    


    이 문제를 해결하려면 다음 단계를 따르십시오.

    1 — Dockerhub 서비스에 로그인하려면 이 명령을 입력합니다.

    docker login
    


    2 — 로컬 Docker 이미지는 사용자 이름 machine으로 생성되었습니다. 제 경우에는 marcus/kubernetes-quarkus이지만 올바른 Dockerhub 사용자 이름은 marcuspaulo입니다.

    Quarkus 프로젝트 내에서 application.properties 파일을 검색하고 위 줄을 삽입합니다(Dockerhub 사용자 이름 사용).

    quarkus.container-image.group=marcuspaulo
    


    Dockerhub에 게시




    mvn clean package -Dquarkus.container-image.push=true
    


    이제 브라우저를 열고 다음 주소에 액세스하십시오: https://hub.docker.com/repositories



    이 튜토리얼을 즐기시기 바랍니다. 주목 해 주셔서 감사합니다. 본 게시물을 좋아요와 공유 부탁드립니다. 곧 봐요.

    소스 코드



    https://github.com/marcuspaulo/kubernetes-quarkus

    참조



    https://quarkus.io/guides/container-image#quarkus-container-image_quarkus.container-image.registry

    https://quarkus.io/guides/deploying-to-kubernetes

    https://quarkus.io/guides/kubernetes-client

    https://minikube.sigs.k8s.io/docs/handbook/registry/

    https://haralduebele.blog/2020/04/03/deploy-your-quarkus-applications-on-kubernetes-almost-automatically/

    https://cloud.google.com/kubernetes-engine/docs/concepts/pod

    좋은 웹페이지 즐겨찾기