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 butuhkanDockerfile
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-samplekind: 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.MaterialMenginstal Minishiftuntuk belajar tentang OpenShift, saya sarankan mulai dengan Minishift