Menyebarkan Aplikasi Java di OpenShift

Tampaknya ini benar? Kami menghubungkan fabric8-maven-plugin ke proyek dan pergi: membangun, menjalankan aplikasi di OpenShift. Tetapi ketika saya belajar, saya ingin lebih memahami proses ini, dan kemudian saya ingin lebih banyak kontrol dan kebebasan atas proses membangun dan menggunakan aplikasi di OpenShift. Dengan demikian, skenario berikut ternyata dengan fitur-fitur tersebut.

  • Saya membangun artefak sendiri, dengan alat saya (pakar, gradle, dll.)
  • Saya mengontrol pembuatan Gambar Docker melalui Dockerfile
  • Proses Pembangunan dan Penempatan di Openshift dikonfigurasikan dalam templat, mis. spesifikasi wadah apa pun, pod dapat disesuaikan.
  • Dengan demikian, proses itu sendiri dapat ditransfer ke perakitan eksternal, sistem penempatan

Tentu saja, untuk ini saya menggunakan fitur OpenShift yang tersedia, yang berlimpah.
Jadi saya sudah menyiapkan artefak java, lalu saya menyiapkan Dockerfile dengan karakteristik dan fungsi yang saya butuhkan

Dockerfile

FROM openjdk

MAINTAINER Rylkov Alexander <arylkov@.>

COPY demo.springboot.mvn-0.0.1-SNAPSHOT.jar /deployments/app.jar

ENV JAVA_OPTS="$JAVA_OPTS -Xms500m -Xmx1024m"

EXPOSE 8080
EXPOSE 5005

ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /deployments/app.jar" ]

Dengan demikian, akan ada dua file dalam folder: artefak dan Dockerfile.



Komposisi file tersebut bersyarat, jika misalnya dalam Dockerfile diperlukan file tambahan untuk gambar docker, kami menambahkannya di sini. Sekarang, gambar java dasar dan aplikasi boot Spring saya ditentukan dalam Dockerfile, dua port terbuka, dll.

Pada langkah ini, kita memiliki pilihan / kebebasan dalam alat untuk membangun aplikasi dan merakit gambar docker.

Selanjutnya, saya menyiapkan templat OpenShift untuk aplikasi, operasi ini bisa satu kali, hanya perlu parameterisasi. Karena dapat berisi segala yang mungkin untuk membuat, meluncurkan, dan mengoperasikan aplikasi, kami akan mengelola proses ini melaluinya. Ini akan sangat sederhana bagi saya dan terdiri dari tiga konfigurasi yang paling diperlukan

  • Imagestream
  • Buildconfig
  • DeploymentConfig

Templat java-app-sample
kind: Template
apiVersion: v1
metadata:
  labels:
    app: java-app-sample
  name: java-app-sample
  annotations:
    description: >-
      This example shows how to create a simple Java application in openshift
    tags: java
parameters:
  - name: APP_NAME
    description: application name
    value: app-sample
    required: true
objects:
  - kind: ImageStream
    apiVersion: v1
    metadata:
      name: "${APP_NAME}"
    spec:
      tags:
        - from:
            kind: DockerImage
            name: 172.30.1.1:5000/myproject/${APP_NAME}:latest
          name: latest
  - kind: BuildConfig
    apiVersion: v1
    metadata:
      name: "${APP_NAME}"
      labels:
        name: "${APP_NAME}"
    spec:
      source:
        binary: {}
        type: Binary
      strategy:
        type: Docker
      output:
        to:
          kind: DockerImage
          name: 172.30.1.1:5000/myproject/${APP_NAME}:latest
      postCommit: {}
      resources: {}
  - kind: DeploymentConfig
    apiVersion: v1
    metadata:
      name: "${APP_NAME}"
    spec:
      strategy:
        type: Rolling
        rollingParams:
          updatePeriodSeconds: 1
          intervalSeconds: 1
          timeoutSeconds: 120
        resources: {}
      replicas: 1
      selector:
        app: "${APP_NAME}"
      template:
        metadata:
          labels:
            app: "${APP_NAME}"
        spec:
          containers:
            - name: "${APP_NAME}"
              image: 172.30.1.1:5000/myproject/${APP_NAME}:latest
              ports:
                - containerPort: 8080
                  protocol: TCP
                - containerPort: 5005
                  protocol: TCP
              env:
                - name: TZ
                  value: Europe/Moscow
              resources:
                limits:
                  cpu: '0.5'
                  memory: 1000Mi
                requests:
                  cpu: '0.2'
                  memory: 500Mi
              imagePullPolicy: Always
          restartPolicy: Always
          dnsPolicy: ClusterFirst
    triggers:
      - type: ConfigChange
        imageChangeParams:
          automatic: true
          containerNames:
            - "${APP_NAME}"
          from:
            kind: ImageStreamTag
            name: 172.30.1.1:5000/myproject/${APP_NAME}:latest
      - type: ImageChange
    status: {}


Beberapa parameter wadah ditunjukkan dalam template sebagai contoh, misalnya, sumber daya / batas, variabel lingkungan TZ, satu parameter template ditentukan - nama aplikasi (APP_NAME). Alamat docker registri ditentukan untuk versi minishift (saya menggunakannya secara lokal untuk pengembangan 172.30.1.1►000 / myproject /) dan lainnya.

Tetapi untuk skenario saya, hal yang paling penting ditunjukkan di sini

  - kind: BuildConfig
    spec:
      source:
        binary: {}
        type: Binary
      strategy:
        type: Docker

BuildConfig mengatakan bahwa sumbernya adalah file biner, dan untuk mengelola strategi persiapan gambar buruh pelabuhan - Dockerfile (ketik: Docker)

Mari kita buat templat ini di OpenShift

 oc create -f template.yaml


Templat ini akan muncul di direktori templat (dimungkinkan untuk mengatur proses dari konsol UI web, tetapi tidak di sini).



Menggunakan templat ini, kami akan membuat aplikasi (pada kenyataannya, ini hanya sebuah nama dan tidak ada lagi)

oc new-app java-app-sample -p APP_NAME=app-sample

tentukan nama templat dan parameter nama aplikasi



Tiga konfigurasi saya telah dibuat.

Kami memulai proses perakitan dan penerapan aplikasi dalam wadah.

>oc start-build app-sample --from-dir . --follow

Adalah penting untuk mengeksekusi dari folder di mana file biner dan Dockerfile diindikasikan, hanya parameter --from-dir menunjukkan bahwa seluruh folder akan disiapkan untuk memuat di OpenShift untuk membangun dan menyebarkan gambar dalam registri docker. Ada parameter lain dari perintah ini, misalnya dari arsip.



Kita melihat bahwa isi folder dimuat ke OpenShift, yang meluncurkan proses Docker untuk menyiapkan Gambar untuk Dockerfile dan akhirnya menempatkan gambar dalam registri buruh pelabuhan.

Aplikasi dimulai



di konsol web OpenShift. Parameter wadah yang



ditentukan dalam konfigurasi yang ditentukan dalam variabel lingkungan konfigurasi



di log



Jadi, tanpa tambahan plug-in, dengan kontrol maksimum dan kebebasan memilih, kami berhasil menempatkan aplikasi di OpenShift.

Material

Menginstal Minishift
untuk belajar tentang OpenShift, saya sarankan mulai dengan Minishift

All Articles