Nội dung chương này bao gồm:

  • Truy cập vào cụm (cluster OpenShift) và đăng nhập OpenShift
  • Tạo project OpenShift và triển khai ứng dụng trên OpenShift
  • Truy cập ứng dụng của bạn bằng cách tạo route OpenShift
  • Tìm hiểu các thành phần của ứng dụng OpenShift
  • So sánh luồng công việc trên dòng lệnh (oc CLI) và trên giao diện web OpenShift

    Có ba cách để tương tác với OpenShift: dòng lệnh, giao diện web, và API RESTful. Chương này tập trung vào việc triển khai ứng dụng bằng dòng lệnh, vì dòng lệnh cho thấy rõ hơn quá trình được sử dụng để tạo ra các ứng dụng được container hóa trong OpenShift. Trong các chương khác, các ví dụ có thể sử dụng giao diện web hoặc thậm chí là API. Mục đích của chúng tôi là cung cấp cho bạn những ví dụ thực tế nhất về việc sử dụng OpenShift. Chúng tôi muốn chỉ cho bạn những công cụ tốt nhất để hoàn thành các công việc khác nhau.

2.1. Các lựa chọn về cụm (Cluster OpenShift)

Trước khi bạn có thể bắt đầu sử dụng OpenShift, bạn phải triển khai nó. Phần sau tôi sẽ hướng dẫn bạn qua một quá trình triển khai OpenShift đầy đủ trên nhiều máy chủ. Một số ví dụ trong các chương yêu cầu nhiều node để hoạt động đúng hoặc để có đủ tài nguyên hoạt động. Nhưng có một trình cài đặt khác cho OpenShift mà chúng tôi muốn đề cập ở đây: Minishift.

Minishift (https://github.com/minishift/minishift) là một bản cài đặt OpenShift trên một node duy nhất mà bạn có thể thiết lập trong vài phút trên hầu hết mọi hệ điều hành dưới dạng một máy ảo. Là một nền tảng phát triển, nó là một công cụ rất hữu ích giúp bạn bước đầu làm quen với OpenShift.

2.2. Đăng nhập OpenShift

Trong OpenShift, mọi hành động đều yêu cầu xác thực, cấu hình ban đầu của cụm OpenShift của bạn được thiết lập để cho phép bất kỳ Kombination tên người dùng và mật khẩu nào đăng nhập. Điều này được gọi là nhà cung cấp danh tính (identity provider) Allow All.

Người dùng đầu tiên bạn sẽ tạo sẽ được gọi là dev. Người dùng này sẽ đại diện cho bất kỳ lập trình viên hoặc người dùng cuối thông thường nào trong OpenShift.

LƯU Ý: Phương pháp xác thực này phân biệt chữ hoa-thường. Mặc dù mật khẩu có thể là bất cứ thứ gì, dev và Dev là những người dùng khác nhau và sẽ không thể thấy cùng các dự án và ứng dụng. Hãy cẩn thận khi bạn đăng nhập.

2.2.1. Sử dụng ứng dụng dòng lệnh oc

Bạn cần cài đặt oc trên máy tính xách tay hoặc máy trạm của mình. Đây là công cụ bạn sẽ sử dụng để quản lý OpenShift trên dòng lệnh. Từ dòng lệnh của bạn, chạy lệnh oc login, sử dụng dev cho tên người dùng và mật khẩu và URL cho máy chủ API của master server của bạn:

#  pháp để đăng nhập vào một cụm **OpenShift**, bao gồm tên người dùng, mật khẩu, URL cho API server của master **OpenShift** của bạn
$ oc login -u dev -p dev https://ocp-1.192.168.122.100.nip.io:8443
Login successful.

You don't have any projects. You can try to create a new project, by running

  oc new-project <projectname>

2.3. Tạo project

Trong OpenShiftproject là cách cơ bản để tổ chức các ứng dụng. Project cho phép người dùng tập hợp các ứng dụng của họ vào các nhóm logic. 

Để tạo một project, bạn cần chạy lệnh oc new-project và cung cấp tên project. Đối với project đầu tiên của bạn, hãy sử dụng image-uploader làm tên project:

$ oc new-project image-uploader --display-name='Image Uploader Project'
Now using project "image-uploader" on server
"https://ocp-1.192.168.122.100.nip.io:8443".

You can add applications to this project with the 'new-app' command.
For example, try:

  oc new-app centos/ruby-22-centos7~https://github.com/openshift/ruby-ex.git

to build a new example application in Ruby.

Ngoài tên cho project, bạn có thể tùy chọn cung cấp một tên hiển thị. Tên hiển thị là một tên thân thiện hơn với người dùng cho project của bạn.

Bây giờ bạn đã tạo project đầu tiên của mình, phần 2.5 sẽ hướng dẫn bạn qua việc triển khai ứng dụng đầu tiên của mình, có tên là Image Uploader, vào project mới. Image Uploader là một ứng dụng PHP dựa trên web được sử dụng để tải lên và hiển thị các tệp đồ họa từ máy tính của bạn. Nhưng trước tiên, hãy nói về các thành phần của ứng dụng, để bạn hiểu cách tất cả các bộ phận phù hợp và hoạt động cùng nhau.

2.4. Các thành phần của ứng dụng

Các ứng dụng trong OpenShift không phải là các cấu trúc nguyên khối; chúng bao gồm một số thành phần khác nhau trong một project, tất cả đều hoạt động cùng nhau để triển khai, cập nhật và duy trì ứng dụng của bạn trong suốt vòng đời của nó. Các thành phần này như sau:

  • Image container tùy chỉnh
  • Image stream
  • Pod ứng dụng
  • Build config
  • Deployment config
  • Deployment
  • Service

Tất cả các thành phần này hoạt động cùng nhau để phục vụ các ứng dụng của bạn cho người dùng cuối, như được hiển thị trong hình 2.1.

Cách các thành phần ứng dụng hoạt động cùng nhau

Hình 2.1: Cách các thành phần ứng dụng hoạt động cùng nhau: Mỗi ứng dụng được triển khai sẽ tạo ra các thành phần này trong cụm OpenShift của bạn. Luồng công việc này hoàn toàn tự động và có thể tùy chỉnh

2.4.1. Image container tùy chỉnh

Mỗi lần triển khai ứng dụng trong OpenShift sẽ tạo ra một image container tùy chỉnh để phục vụ ứng dụng của bạn. Image này được tạo bằng cách sử dụng mã nguồn của ứng dụng và một image cơ sở tùy chỉnh được gọi là builder image. Ví dụ, builder image PHP chứa máy chủ web Apache và các thư viện ngôn ngữ PHP cốt lõi.

Quá trình build image lấy builder image bạn chọn, tích hợp mã nguồn của bạn, và tạo ra image container tùy chỉnh sẽ được sử dụng cho việc triển khai ứng dụng. Sau khi được tạo, tất cả các image container, cùng với tất cả các builder image, được lưu trữ trong registry container tích hợp của OpenShift

2.4.2. Build Configs

Một build config chứa tất cả thông tin cần thiết để xây dựng một ứng dụng từ mã nguồn của nó, bao gồm:

  • URL của kho mã nguồn ứng dụng.
  • Tên của builder image sẽ được sử dụng.
  • Tên của image container ứng dụng sẽ được tạo ra.
  • Các sự kiện có thể kích hoạt một bản build mới.

    Sau khi build config hoàn thành công việc của mình, nó sẽ kích hoạt deployment config được tạo cho ứng dụng mới của bạn.

2.4.3. Deployment Configs

Deployment config xử lý việc triển khai và nâng cấp ứng dụng. Nó theo dõi các thông tin sau:

  • Phiên bản ứng dụng đang được triển khai.
  • Số lượng bản sao (replicas) cần duy trì.
  • Các sự kiện có thể kích hoạt một lần tái triển khai (redeploy).
  • Chiến lược nâng cấp (mặc định là rolling-upgrade).
  • Các Deployment của ứng dụng.

    OpenShift sử dụng một đối tượng Kubernetes gọi là replication controller để đảm bảo số lượng bản sao mong muốn luôn chạy. Mỗi phiên bản triển khai của một ứng dụng được theo dõi bằng các đối tượng deployment.

2.4.4. Image Streams

Image stream được sử dụng để tự động hóa các hành động trong OpenShift. Chúng là các liên kết đến một hoặc nhiều image container. Bằng cách sử dụng image stream, bạn có thể theo dõi các ứng dụng và kích hoạt các lần triển khai mới khi các thành phần của chúng được cập nhật.

2.5. Triển khai một ứng dụng

Bạn triển khai ứng dụng bằng lệnh oc new-app. Lệnh này yêu cầu ba thông tin:

  1. Loại image stream: OpenShift cung cấp nhiều builder image. Ví dụ này sử dụng builder image PHP.
  2. Tên ứng dụng: Ví dụ này sử dụng app-cli (triển khai từ dòng lệnh).
  3. Vị trí mã nguồn: URL đến kho Git chứa mã nguồn của bạn.
$ oc new-app \
> --image-stream=php \
> --code=https://github.com/OpenShiftInAction/image-uploader.git \
> --name=app-cli
...
--> Success
    Build scheduled, use 'oc logs -f bc/cli-app' to track its progress.
    Run 'oc status' to view your app.

Sau khi chạy lệnh, OpenShift sẽ xây dựng tất cả các thành phần cần thiết

2.5.1. Cung cấp truy cập ứng dụng nhất quán với Services

Các pod có thể đến và đi, nhưng cần có một điểm truy cập nhất quán cho ứng dụng của bạn. Đó là công việc của một service. Một service sử dụng các nhãn (label) được áp dụng cho các pod để theo dõi tất cả các pod liên quan đến một ứng dụng. Điều này cho phép service hoạt động như một proxy nội bộ. Bạn có thể dễ hình dung hơn ở hình sau:

Các thành phần triển khai ứng dụng trong dự án OpenShift

Hình 2.2: Các thành phần triển khai ứng dụng trong dự án OpenShift

Ngoài ra bạn có thể xem thông tin về service bằng lệnh:

oc describe svc/app-cli.

chi tiết của service

2.5.2. Phơi bày (Exposing) Services ra public với Routes

Service chỉ có địa chỉ IP nội bộ trong cụm OpenShift. Để người dùng kết nối với ứng dụng của bạn, bạn cần một route. Một route sẽ tạo một bản ghi DNS trong lớp định tuyến HAProxy. Để tạo route, bạn chạy:

oc expose svc/app-cli

Thao tác này sẽ tạo một URL có thể truy cập công khai cho ứng dụng của bạn, theo định dạng:

<tên-ng-dng>-<tên-project>.<tên-min-ng-dng-ca-cm>

Khi bạn triển khai OpenShift , bạn chỉ định miền ứng dụng apps.192,168.122.101.nip.io. Theo mặc định, tất cả các ứng dụng trong OpenShift đều được phục vụ bằng giao thức HTTP. Khi bạn kết hợp tất cả những điều này lại với nhau, URL cho app-cli sẽ như sau:

[http://app-cli-image-uploader.apps.192.168.122.101.nip.io](http://app-cli-image-uploader.apps.192.168.122.101.nip.io/)

Bạn có thể lấy thông tin về tuyến đường bạn vừa tạo bằng cách chạy lệnh oc describe route/app-cli:

Thông tin route vừa khởi tạo

Thông tin port được expose

Đầu ra cho bạn biết cấu hình máy chủ được thêm vào HAProxy, dịch vụ được liên kết với tuyến đường và các điểm cuối để dịch vụ kết nối khi xử lý các yêu cầu cho tuyến đường. Bây giờ bạn đã tạo tuyến đường đến ứng dụng của mình, hãy tiếp tục và xác minh rằng tuyến đường đó hoạt động trong trình duyệt web. Bạn sẽ có thể duyệt đến ứng dụng app-cli của mình bằng URL cho tuyến đường đã tạo (xem hình 2.3).

Giao diện web của ứng dụng app-cli

Hình 2.3 Giao diện web của ứng dụng app-cli sẽ được thiết lập và chạy và khả dụng.

 Tập trung vào các thành phần triển khai và cung cấp ứng dụng app-cli, bạn có thể thấy tuyến đường được liên kết với dịch vụ app-cli và người dùng truy cập vào pod ứng dụng thông qua tuyến đường (xem hình bên dưới).

Tổng quan về định tuyến yêu cầu ứng dụng Hình 2.4 Tổng quan về định tuyến yêu cầu ứng dụng

2.6. Triển khai ứng dụng bằng giao diện web

Phần này lặp lại quy trình trên nhưng sử dụng giao diện web của OpenShift.

  1. **Đăng nhập vào giao diện web OpenShift:** Truy cập URL của master server qua HTTPS trên cổng 8443 (ví dụ: https://ocp-1.192.168.122.100.nip.io:8443). Đăng nhập với người dùng dev.

Trang đăng nhập giao diện web

Hình 2.5 Trang đăng nhập giao diện web

  2. **Thêm ứng dụng mới:** Trong project image-uploader, nhấp vào "Add to Project" -> "Browse Catalog".

Thông tin App-cli

Hình 2.6 Thông tin App-cli trong giao diện web và nút Thêm vào Dự án

  3. **Chọn builder image:** Chọn PHP từ danh mục.

Hình ảnh xây dựng cho nhiều ngôn ngữ trong danh mục hình ảnh

Hình 2.7 Hình ảnh xây dựng cho nhiều ngôn ngữ trong danh mục hình ảnh

Hình ảnh xây dựng dành riêng cho PHP

Hình 2.8 Hình ảnh xây dựng dành riêng cho PHP

  1. Cấu hình ứng dụng:
    • Name: app-gui
    • Git Repository URL: https://github.com/OpenShiftInAction/image-uploader.git

Tạo ứng dụng PHP mới bằng giao diện web

Hình 2.9 Tạo ứng dụng PHP mới bằng giao diện web.

  1. Tạo ứng dụng: Nhấp vào “Create”. Giao diện web sẽ tự động thực hiện các bước build, deploy, và tạo route.

trang tóm tắt triển khai

Hình 2.10 Sau khi triển khai ứng dụng app-gui, bạn sẽ thấy trang tóm tắt triển khai, cung cấp cho bạn liên kết đến phần tổng quan về ứng dụng.

Sau vài phút, bạn sẽ thấy cả hai ứng dụng app-cli và app-gui đều đang hoạt động trong project của mình.

Trang chi tiết dự án với app-cli và app-gui được triển khai

Hình 2.11 Trang chi tiết dự án với app-cli và app-gui được triển khai

2.8. Tóm tắt

  • Việc triển khai ứng dụng tạo ra nhiều thành phần được điều phối chặt chẽ để quản lý build, deploy, và vận hành ứng dụng.
  • Tất cả các giao dịch trong OpenShift đều yêu cầu một phiên đã được xác thực.
  • Project trong OpenShift được sử dụng để tổ chức các ứng dụng tương tự.
  • OpenShift có các luồng công việc mạnh mẽ trên cả dòng lệnh và giao diện web.
  • OpenShift có thể tự động cấu hình các bản ghi DNS để định tuyến các yêu cầu đến ứng dụng của bạn khi nó được triển khai.

Nguồn tham khảo: