[JAVA] Ich habe die Quarkus-App auf GKE (Google Kubernetes Engine) gestellt.

Thema

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.

Arbeitsumgebung

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

Trainieren

Erstellung der Quarkus-App

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);
    }
}

Docker-Container

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"]

Build von Cloud Build

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. 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

Dieses Verfahren basiert übrigens auf den folgenden früheren Artikeln. GKE-Test (Teil 2: "GitHub-> CSR. Und zu GCR von GCB")

GKE-Clustererstellung

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. screenshot-console.cloud.google.com-2019-03-30-02-07-20-951.png

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

GKE (Kubernetes Engine) für das Container-Image in GCR (Container Registry) Bereitstellen auf kubernetes-engine /? Hl = ja)

$ 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. screenshot-console.cloud.google.com-2019-03-30-02-21-46-308.png

Veröffentlichen Sie die App

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. screenshot-console.cloud.google.com-2019-03-30-02-25-48-306.png

Zugriffsbestätigung

screenshot-34.85.95.35-8080-2019-03-30-02-48-08-274.png 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)

Zusammenfassung

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 screenshot-github.com-2019.03.30-01-31-12.png 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

Ich habe die Quarkus-App auf GKE (Google Kubernetes Engine) gestellt.
1. Führen Sie schnell Java-Webmodule in Google Kubernetes Engine (GKE) aus.
Ich möchte das JDK auf meinem Mac-PC installieren
Setzen Sie ein Abzeichen auf das Symbol
Ich habe das Java-Framework "Quarkus" ausprobiert.
Ich habe versucht, die Reflexmessanwendung im Google Play Store zu veröffentlichen
Ich habe eine Taschenrechner-App für Android erstellt