Supersonic Subatomic Java A Kubernetes Native Java stack tailored for GraalVM & OpenJDK HotSpot, crafted from the best of breed Java libraries and standards
Ich habe Quarkus mit dem Slogan ausprobiert. Wie in ↓ gezeigt, gibt es verschiedene Artikel, die ich vorgestellt oder ausprobiert habe. Der Unterschied ist also GKE (Google Kubernetes Engine). Ich habe versucht, es anzuziehen.
$ 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
wurde abgeschlossen.Erstellen Sie ein Maven-Projekt gemäß dem folgenden Tutorial und drücken Sie dann einfach den Befehl mvnw
, der im erstellten Projekt enthalten ist.
https://quarkus.io/guides/getting-started-guide
Ein Teilauszug der Quelle führt zu einem Spring-ähnlichen Web-API-Code wie ↓. Als ich versuchte, GCP Cloud Endpoints zu verwenden, war der Code immer noch ähnlich.
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);
}
}
Dies entspricht auch dem Lernprogramm, erstellt jedoch die folgende Docker-Datei unter dem Projekt.
[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"]
Erstellen Sie eine Yaml-Datei unter dem Projekt, um Cloud Build wie unten gezeigt zu verwenden.
[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'
Führen Sie dann den Build aus. Anschließend wird das fertige Container-Image in GCR (Google Container Registry) hochgeladen.
$ 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://[GCP-Projekt-ID]_cloudbuild/source/1553878212.23-a25ba1029b4a4979b2a049769da45570.tgz]
Created [https://cloudbuild.googleapis.com/v1/projects/[GCP-Projekt-ID]/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://[GCP-Projekt-ID]_cloudbuild/source/1553878212.23-a25ba1029b4a4979b2a049769da45570.tgz gcr.io/[GCP-Projekt-ID]/quarkus-microservice (+1 more) SUCCESS
Bestätigen Sie mit der GCP-Konsole, dass der Build tatsächlich erfolgreich war und das Container-Image gespeichert wurde.
Dieses Verfahren basiert übrigens auf den folgenden früheren Artikeln. GKE-Test (Teil 2: "GitHub-> CSR. Und zu GCR von GCB")
Erstellen Sie zunächst einen Cluster, um den verwalteten Dienst von k8s in GCP zu verwenden. Es kann über die GCP-Konsole erstellt werden, wird jedoch erstellt und gelöscht (um Geld zu sparen), sodass ich es als Befehl belasse. Präventiv erstellt, da es sich nicht um eine Serviceversion, sondern nur um einen Testartikel handelt.
$ 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/[GCP-Projekt-ID]/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=[GCP-Projekt-ID]
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
Bestätigen Sie, dass der Cluster tatsächlich erstellt wurde.
Dieses Verfahren basiert übrigens auf den folgenden früheren Artikeln. GKE-Test (3: "Cluster erstellen") Darüber hinaus ist das Folgende hilfreich, um Cluster zu erstellen, um Geld zu sparen. Erstellen Sie einen kostengünstigen GKE (k8s) -Cluster und verwenden Sie ihn für die Hobbyentwicklung
$ kubectl run quarkus-microservice --image gcr.io/[GCP-Projekt-ID]/quarkus-microservice@sha256:18a20d4307785a7aec3b19738a849430e2181720cb357d8a7ea6f8fe4ed1f850 --port 80
deployment.apps/quarkus-microservice created
Ja. Sie können es bereitstellen.
Wenn Sie es nur bereitstellen können, gibt es keinen Zugriff von außen. Erstellen Sie daher einen Dienst zur Veröffentlichung.
$ kubectl expose deployment quarkus-microservice --type "LoadBalancer"
service/quarkus-microservice exposed
Ja. Der Service ist bereit.
Ich weiß es nicht, weil es zu einfach ist, aber es ist ein Erfolg.
Dieses Verfahren basiert übrigens auf den folgenden früheren Artikeln. [GKE-Testversion (Teil 4: "GKE-Bereitstellung-> Service-Version"](https://qiita.com/sky0621/items/aadeb53a5be2800066de#4 Anwendung veröffentlicht)
Dieses Mal habe ich gerade die erste Anwendung zur automatischen Generierung auf Tutorial-Ebene auf GKE gestellt. Es gibt verschiedene Beispielcodes für GitHub wie JSON-REST, WebSocket, ORM und Validierung. https://github.com/quarkusio/quarkus-quickstarts#getting-started-guides Als ich über die App nachdachte, die k8s aufsetzen soll, "Golang "Lass uns schreiben.", Aber dank des Auftretens von Quarkus könnte Java, das reichlich vorhandene Assets nutzen kann, in Zukunft ein Kandidat sein.
Recommended Posts