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.
$ cat /etc/os-release NAME="Ubuntu" VERSION="18.04.2 LTS (Bionic Beaver)"
$ 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)
$ 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
$ mvn -version Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T03:41:47+09:00)
$ gcloud version Google Cloud SDK 240.0.0 〜〜〜 kubectl 2019.03.22
Gcloud auth
est terminé.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);
}
}
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"]
, mais je l'ai élevé à "11" car il ne démarrait pas bien quand j'ai essayé
docker run` à cause d'un problème avec la version de Quarkus quand je l'ai essayé.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.
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")
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éé.
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
$ 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.
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.
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)
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 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