Deploy ứng dụng trong OpenShift sử dụng client tool oc

Sau khi đã tạo một project trong OpenShift xong, việc chúng ta cần làm để làm việc với OpenShift là deploy một ứng dụng lên nó. Chúng ta có thể sử dụng web console hoặc client tool oc để tạo mới một ứng dụng trong OpenShift. Trong bài viết này, mình hướng dẫn các bạn tạo mới ứng dụng bằng client tool oc các bạn nhé!

Đầu tiên, các bạn cần login vào OpenShift rồi chọn project mà mình muốn làm việc trước:

Deploy ứng dụng trong OpenShift sử dụng client tool oc

Cú pháp cơ bản để tạo mới ứng dụng với client tool oc là:

Trong đó:

  • <application_name> là tên của ứng dụng mà các bạn muốn đặt. Tên của ứng dụng phải ở dạng chữ thường, chấp nhận các ký tự từ a đến z, 0 đến 9 và ký tự “-“. Độ dài của name tối đa là 58 ký tự, ký tự đầu tiên phải là một ký tự từ a đến z. Ký tự “-” không được nằm ở đầu hoặc cuối của name.
  • <location_to_the_source_code> là đường dẫn tới Git repository của source code ứng dụng.

Nếu Git repository của các bạn cần authentication thì các bạn có thể thêm tham số –source-secret để trỏ tới thông tin authentication.

Nếu source code của ứng dụng nằm trong thư mục con của Git repository thì các bạn có thể thêm tham số –context-dir để trỏ đường dẫn tới thư mục này.

Nếu source code của ứng dụng nằm ở branch khác branch master mặc định của Git repository thì các bạn có thể thêm #<branch_name> theo sau đường dẫn tới Git repository.

Ví dụ bây giờ mình muốn deploy một ứng dụng sử dụng project ví dụ trong bài viết https://huongdanjava.com/vi/deploy-ung-dung-spring-boot-len-docker.html trong Huong Dan Java repository trên Github của mình https://github.com/huongdanjavacom/huongdanjava.com, thì mình sẽ chạy câu lệnh như sau:

Khi chạy câu lệnh trên, OpenShift sẽ tự động detect build strategy nào cần được sử dụng. Điều này có nghĩa, dựa vào source code trong Git repository mà chúng ta truyền vào ở trên, OpenShift sẽ tự động deploy cho phù hợp. Có 3 build strategy mà OpenShift hỗ trợ đó là Docker, Pipeline và Source.

Đối với Pipeline thì OpenShift sẽ dựa vào tập tin Jenkinsfile, nếu tập tin Jenkinsfile này có trong source code của chúng ta, strategy này sẽ được sử dụng. Jenkinsfile là tập tin định nghĩa cho Jenkins Build Pipeline đó các bạn!

Nếu không có tập tin Jenkinsfile thì OpenShift sẽ kiểm tra tập tin Dockerfile, tương tự như Jenkinsfile, nếu tập tin Dockerfile có tồn tại, strategy này sẽ được sử dụng. Dockerfile thì các bạn biết rồi, nó định nghĩa Image để chạy các container. Xem thêm ở đây các bạn nhé!

Strategy cuối cùng và cũng là strategy mặc định nếu source code của chúng ta không có Jenkinsfile hay Dockerfile, đó là Source strategy. Strategy này sử dụng framework Source To Image để build Docker Image từ source code của ứng dụng.

project ví dụ mà mình định sử dụng để deploy ứng dụng có chứa Dockerfile nên các bạn sẽ thấy kết quả khi chạy câu lệnh trên như sau:

Deploy ứng dụng trong OpenShift sử dụng client tool oc

Như các bạn thấy, một Deployment Config đã được tạo cho ứng dụng “spring-boot-docker”, điều này có nghĩa ứng dụng của chúng ta đã được deploy lên một Pod trong hệ thống Kubernetes đó các bạn.

Chạy câu lệnh:

để xem log, các bạn sẽ thấy kết quả như sau:

Deploy ứng dụng trong OpenShift sử dụng client tool oc

Cùng với việc deploy ứng dụng của chúng ta lên một Pod, một Docker Image cũng đã được build và push lên OpenShift Docker Registry ở địa chỉ 172.30.1.1!

Thế nhưng lúc này, chúng ta không thể access vào ứng dụng của chúng ta được. Chúng ta cần expose một service tới deployment “spring-boot-docker”:

Deploy ứng dụng trong OpenShift sử dụng client tool oc

rồi expose một Route từ service này:

Deploy ứng dụng trong OpenShift sử dụng client tool oc

Kiểm tra thông tin của Route vừa mới tạo:

Deploy ứng dụng trong OpenShift sử dụng client tool oc

Như các bạn thấy, “http://spring-boot-docker-huongdanjava.127.0.0.1.nip.io/” chính là địa chỉ URL được expose ra bên ngoài của ứng dụng spring-boot-docker mà chúng ta vừa deploy lên OpenShift ở trên.

Request tới địa chỉ http://spring-boot-docker-huongdanjava.127.0.0.1.nip.io/hello, các bạn sẽ thấy kết quả như sau:

Deploy ứng dụng trong OpenShift sử dụng client tool oc

Như vậy là chúng ta đã deploy thành công một ứng dụng lên OpenShift rồi đó các bạn!

5/5 - (1 bình chọn)

Add Comment