자습서: 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.
전제 조건
갑시다! 새로운 간단한 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
Reference
이 문제에 관하여(자습서: Kubernetes, Minikube 및 Dockerhub에 Quarkus 애플리케이션 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/marcuspaulo/tutorial-publish-a-quarkus-application-in-kubernetes-minikube-and-dockerhub-36nd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)