[JAVA] J'ai mis l'application Quarkus sur GKE (Google Kubernetes Engine).

thème

Supersonic Subatomic Java A Kubernetes Native Java stack tailored for GraalVM & OpenJDK HotSpot, crafted from the best of breed Java libraries and standards

J'ai essayé Quarkus avec le slogan. Comme indiqué dans ↓, il y a divers articles que j'ai introduits ou essayés, donc la différence est GKE (Google Kubernetes Engine). J'ai essayé de le mettre.

Environnement de travail

OS

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"

Java

$ java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4, mixed mode)

Docker

$ sudo docker version
  〜〜〜
Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 03:42:13 2019
  OS/Arch:          linux/amd64
  Experimental:     false

Maven

$ mvn -version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T03:41:47+09:00)

gcloud

$ gcloud version
Google Cloud SDK 240.0.0
 〜〜〜
kubectl 2019.03.22

Entraine toi

Création d'applications Quarkus

Créez un projet Maven selon le tutoriel ci-dessous, puis appuyez simplement sur la commande mvnw incluse dans le projet créé. https://quarkus.io/guides/getting-started-guide

Un extrait partiel de la source donne un code API Web de type Spring comme ↓. Lorsque j'ai essayé d'utiliser GCP Cloud Endpoints, le code était toujours similaire.

java:[org.acme.quickstart.GreetingResource]


@Path("/hello")
public class GreetingResource {

    @Inject
    GreetingService service;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return "hello";
    }

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Path("/greeting/{name}")
    public String greeting(@PathParam("name") String name) {
        return service.greeting(name);
    }
}

Conteneur Docker

C'est également la même chose que le didacticiel, mais créez le Dockerfile suivant sous le projet.

[Dockerfile]


FROM openjdk:11-jre-slim
RUN mkdir /app
COPY target/lib /app/lib
COPY target/*-runner.jar /app/application.jar
EXPOSE 8080
CMD ["java", "-jar", "/app/application.jar"]

Construit par Cloud Build

Créez un fichier Yaml sous le projet pour utiliser Cloud Build comme indiqué ci-dessous.

[cloudbuild.yaml]


steps:
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/quarkus-microservice', '.' ]
images:
- 'gcr.io/$PROJECT_ID/quarkus-microservice'

Ensuite, exécutez la compilation. Ensuite, l'image de conteneur terminée sera téléchargée dans GCR (Google Container Registry).

$ gcloud builds submit --config cloudbuild.yaml .
Creating temporary tarball archive of 137 file(s) totalling 9.6 MiB before compression.
Uploading tarball of [.] to [gs://[ID du projet GCP]_cloudbuild/source/1553878212.23-a25ba1029b4a4979b2a049769da45570.tgz]
Created [https://cloudbuild.googleapis.com/v1/projects/[ID du projet GCP]/builds/1bff9b28-a9da-4113-9c41-c9de7f9af1d7].
   〜〜〜
DONE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ID                                    CREATE_TIME                DURATION  SOURCE                                                                                  IMAGES                                              STATUS
1bff9b28-a9da-4113-9c41-c9de7f9af1d7  2019-03-29T16:50:16+00:00  46S       gs://[ID du projet GCP]_cloudbuild/source/1553878212.23-a25ba1029b4a4979b2a049769da45570.tgz  gcr.io/[ID du projet GCP]/quarkus-microservice (+1 more)  SUCCESS

Confirmez avec la console GCP que la compilation a réussi et que l'image du conteneur a été stockée. screenshot-console.cloud.google.com-2019-03-30-01-54-34-080.png screenshot-console.cloud.google.com-2019-03-30-01-57-09-002.png

En passant, cette procédure est basée sur les articles précédents suivants. Essai GKE (Partie 2: "GitHub-> CSR. Et vers GCR par GCB")

Création de cluster GKE

Tout d'abord, créez un cluster pour utiliser le service géré de k8s dans GCP. Il peut être créé à partir de la console GCP, mais il sera créé et supprimé (pour économiser de l'argent), je vais donc le laisser en tant que commande. Créé de manière préventive car il ne s'agit pas d'une version de service, mais simplement d'un article d'essai

$ gcloud container clusters create clst-pe-01 --preemptible --machine-type=f1-micro --num-nodes=3 --disk-size=10
WARNING: In June 2019, node auto-upgrade will be enabled by default for newly created clusters and node pools. To disable it, use the `--no-enable-autoupgrade` flag.
   〜〜〜
Creating cluster clst-pe-01 in asia-northeast1-c... Cluster is being health-checked (master is healthy)...done.                                                                                              
Created [https://container.googleapis.com/v1/projects/[ID du projet GCP]/zones/asia-northeast1-c/clusters/clst-pe-01].
To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/asia-northeast1-c/clst-pe-01?project=[ID du projet GCP]
kubeconfig entry generated for clst-pe-01.
NAME        LOCATION           MASTER_VERSION  MASTER_IP       MACHINE_TYPE  NODE_VERSION   NUM_NODES  STATUS
clst-pe-01  asia-northeast1-c  1.11.7-gke.12   xx.xxx.xxx.xxx  f1-micro      1.11.7-gke.12  3          RUNNING

Confirmez que le cluster est réellement créé. screenshot-console.cloud.google.com-2019-03-30-02-07-20-951.png

En passant, cette procédure est basée sur les articles précédents suivants. Essai GKE (3: "Créer un cluster") En outre, ce qui suit sera utile pour créer des clusters afin d'économiser de l'argent. Créez un cluster GKE (k8s) bon marché et utilisez-le pour le développement de loisirs

GKE (Kubernetes Engine) pour l'image du conteneur dans GCR (Container Registry) Déployer sur kubernetes-engine /? Hl = ja)

$ kubectl run quarkus-microservice --image gcr.io/[ID du projet GCP]/quarkus-microservice@sha256:18a20d4307785a7aec3b19738a849430e2181720cb357d8a7ea6f8fe4ed1f850 --port 80
deployment.apps/quarkus-microservice created

Oui. Vous pouvez le déployer. screenshot-console.cloud.google.com-2019-03-30-02-21-46-308.png

Publiez l'application

Si vous ne pouvez le déployer que, il n'y a pas d'accès de l'extérieur, alors créez un service pour la publication.

$ kubectl expose deployment quarkus-microservice --type "LoadBalancer"
service/quarkus-microservice exposed

Oui. Le service est prêt. screenshot-console.cloud.google.com-2019-03-30-02-25-48-306.png

Confirmation d'accès

screenshot-34.85.95.35-8080-2019-03-30-02-48-08-274.png Je ne sais pas parce que c'est trop simple, mais c'est un succès.

En passant, cette procédure est basée sur les articles précédents suivants. [Version d'essai de GKE (Partie 4: «GKE deployment-> service release») (https://qiita.com/sky0621/items/aadeb53a5be2800066de#4 application)

Résumé

Cette fois, je viens de mettre la première application de génération automatique de niveau tutoriel sur GKE. Il existe différents exemples de code de GitHub tels que JSON-REST, WebSocket, ORM et validation. https://github.com/quarkusio/quarkus-quickstarts#getting-started-guides screenshot-github.com-2019.03.30-01-31-12.png Quand j'ai pensé à l'application à mettre sur k8s, jusqu'à présent, "Golang "Écrivons." Mais grâce à l'apparition de Quarkus, Java qui peut utiliser d'abondantes ressources existantes pourrait être candidat à l'avenir.

Recommended Posts

J'ai mis l'application Quarkus sur GKE (Google Kubernetes Engine).
1. Exécutez rapidement des modules Web Java sur Google Kubernetes Engine (GKE)
Je veux mettre le JDK sur mon PC Mac
Mettre un badge sur l'icône
J'ai essayé le framework Java "Quarkus"
J'ai essayé de publier l'application de mesure réflexe sur le Google Play Store
J'ai créé une application de calculatrice sur Android