OpenShift là một hệ thống phân lớp, trong đó mỗi lớp được liên kết chặt chẽ với lớp khác bằng cách sử dụng Kubernetes và cụm Docker. Kiến trúc của OpenShift được thiết kế theo cách mà nó có thể hỗ trợ và quản lý các vùng chứa Docker, được lưu trữ trên tất cả các lớp bằng cách sử dụng Kubernetes. Không giống như phiên bản OpenShift V2 trước đó, phiên bản mới của OpenShift V3 hỗ trợ cơ sở hạ tầng container. Trong mô hình này, Docker giúp tạo các vùng chứa nhẹ dựa trên Linux và Kubernetes hỗ trợ tác vụ sắp xếp và quản lý các vùng chứa trên nhiều máy chủ.
Các thành phần của OpenShift
Một trong những thành phần quan trọng của kiến trúc OpenShift là quản lý cơ sở hạ tầng container trong Kubernetes. Kubernetes chịu trách nhiệm Triển khai và Quản lý cơ sở hạ tầng. Trong bất kỳ cụm Kubernetes nào, chúng ta có thể có nhiều nút chính và nhiều nút, điều này đảm bảo không có điểm nào bị lỗi trong quá trình thiết lập.
Kubernetes Master Machine Linh kiện
Etcd – Nó lưu trữ thông tin cấu hình, có thể được sử dụng bởi từng nút trong cụm. Nó là một kho lưu trữ giá trị khóa có tính khả dụng cao có thể được phân phối giữa nhiều nút. Nó chỉ có thể được truy cập bởi máy chủ Kubernetes API vì nó có thể có thông tin nhạy cảm. Nó là một Kho lưu trữ giá trị khóa phân phối mà tất cả mọi người đều có thể truy cập được.
Máy chủ API – Kubernetes là một máy chủ API cung cấp tất cả hoạt động trên cụm bằng cách sử dụng API. Máy chủ API triển khai một giao diện có nghĩa là các công cụ và thư viện khác nhau có thể dễ dàng giao tiếp với nó. Kubeconfig là một gói cùng với các công cụ phía máy chủ có thể được sử dụng để giao tiếp. Nó làm lộ API Kubernetes ”.
Trình quản lý bộ điều khiển – Thành phần này chịu trách nhiệm cho hầu hết các bộ thu thập điều chỉnh trạng thái của cụm và thực hiện một nhiệm vụ. Nó có thể được coi là một daemon chạy trong một vòng lặp không kết thúc và chịu trách nhiệm thu thập và gửi thông tin đến máy chủ API. Nó hoạt động theo hướng nhận trạng thái được chia sẻ của cụm và sau đó thực hiện các thay đổi để đưa trạng thái hiện tại của máy chủ đến trạng thái mong muốn. Các bộ điều khiển chính là bộ điều khiển sao chép, bộ điều khiển điểm cuối, bộ điều khiển không gian tên và bộ điều khiển tài khoản dịch vụ. Trình quản lý bộ điều khiển chạy các loại bộ điều khiển khác nhau để xử lý các nút, điểm cuối, v.v.
Bộ lập lịch – Nó là một thành phần chính của Kubernetes master. Nó là một dịch vụ tổng thể chịu trách nhiệm phân phối khối lượng công việc. Nó chịu trách nhiệm theo dõi việc sử dụng tải làm việc trên các nút cụm và sau đó đặt khối lượng công việc vào tài nguyên nào có sẵn và chấp nhận khối lượng công việc. Nói cách khác, đây là cơ chế chịu trách nhiệm phân bổ nhóm cho các nút có sẵn. Bộ lập lịch chịu trách nhiệm sử dụng khối lượng công việc và phân bổ nhóm cho một nút mới.
Các thành phần nút Kubernetes
Sau đây là các thành phần chính của máy chủ Node, cần thiết để giao tiếp với Kubernetes master.
Docker – Yêu cầu đầu tiên của mỗi nút là Docker giúp chạy các vùng chứa ứng dụng được đóng gói trong một môi trường hoạt động tương đối cô lập nhưng nhẹ.
Dịch vụ Kubelet – Đây là một dịch vụ nhỏ trong mỗi nút, có nhiệm vụ chuyển tiếp thông tin đến và đi từ dịch vụ máy bay điều khiển. Nó tương tác với cửa hàng etcd để đọc chi tiết cấu hình và giá trị Wright. Điều này giao tiếp với thành phần chủ để nhận lệnh và hoạt động. Sau đó, quy trình kubelet đảm nhận trách nhiệm duy trì trạng thái công việc và máy chủ nút. Nó quản lý các quy tắc mạng, chuyển tiếp cổng, v.v.
Kubernetes Proxy Service – Đây là một dịch vụ proxy chạy trên mỗi nút và giúp cung cấp các dịch vụ cho máy chủ bên ngoài. Nó giúp chuyển tiếp yêu cầu sửa vùng chứa. Kubernetes Proxy Service có khả năng thực hiện cân bằng tải nguyên thủy. Nó đảm bảo rằng môi trường mạng có thể dự đoán được và có thể truy cập được nhưng đồng thời nó cũng bị cô lập. Nó quản lý các nhóm trên nút, khối lượng, bí mật, tạo kiểm tra sức khỏe vùng chứa mới, v.v.
Tích hợp OpenShift Container Registry
Đăng ký vùng chứa OpenShift là một đơn vị lưu trữ sẵn có của Red Hat, được sử dụng để lưu trữ hình ảnh Docker. Với phiên bản tích hợp mới nhất của OpenShift, nó đã đi kèm với giao diện người dùng để xem hình ảnh trong bộ nhớ trong của OpenShift. Các cơ quan đăng ký này có khả năng lưu giữ hình ảnh với các thẻ được chỉ định, sau này được sử dụng để xây dựng các vùng chứa từ nó.
Các điều khoản thường được sử dụng
Hình ảnh – Hình ảnh Kubernetes (Docker) là khối xây dựng chính của Cơ sở hạ tầng được chứa đựng. Hiện tại, Kubernetes chỉ hỗ trợ hình ảnh Docker. Mỗi vùng chứa trong một nhóm có hình ảnh Docker của nó chạy bên trong nó. Khi định cấu hình nhóm, thuộc tính hình ảnh trong tệp cấu hình có cùng cú pháp với lệnh Docker.
Dự án – Chúng có thể được định nghĩa là phiên bản được đổi tên của miền đã có trong phiên bản OpenShift V2 trước đó.
Vùng chứa – Chúng là những vùng được tạo sau khi hình ảnh được triển khai trên một nút cụm Kubernetes.
Node – Node là một máy làm việc trong Kubernetes cluster, còn được gọi là minion cho master. Chúng là các đơn vị làm việc có thể là một phiên bản vật lý, máy ảo hoặc đám mây.Pod – Một nhóm là một tập hợp các vùng chứa và bộ lưu trữ của nó bên trong một nút của một cụm Kubernetes. Có thể tạo một nhóm với nhiều vùng chứa bên trong nó. Ví dụ: giữ vùng chứa cơ sở dữ liệu và vùng chứa máy chủ web bên trong nhóm.
OpenShift – Thiết lập môi trường
Trong chương này, chúng ta sẽ tìm hiểu về thiết lập môi trường của OpenShift.
Yêu cầu hệ thống
Để thiết lập OpenShift doanh nghiệp, một người cần phải có tài khoản Red Hat đang hoạt động. Vì OpenShift hoạt động trên kiến trúc nút và chủ Kubernetes, chúng ta cần thiết lập cả hai trên các máy riêng biệt, trong đó một máy hoạt động như một máy chủ và các máy khác hoạt động trên nút. Để thiết lập cả hai, cần có các yêu cầu hệ thống tối thiểu.
Cấu hình máy chính
Sau đây là các yêu cầu hệ thống tối thiểu cho cấu hình máy chủ.
- Máy cơ sở được lưu trữ trên vật lý, ảo hoặc trên bất kỳ môi trường đám mây nào.
- Ít nhất là Linux 7 với các gói bắt buộc trên phiên bản đó.
- 2 nhân CPU.
- RAM ít nhất 8 GB.
- Bộ nhớ đĩa cứng bên trong 30 GB.
Cấu hình máy nút
- Hình ảnh cơ sở vật lý hoặc ảo như được cung cấp cho máy chủ.
- Ít nhất Linux 7 trên máy.
- Docker được cài đặt với phiên bản không dưới 1.6.
- 1 nhân CPU.
- RAM 8 GB.
- Đĩa cứng 15 GB để lưu trữ hình ảnh và 15 GB để lưu trữ hình ảnh.
Hướng dẫn từng bước để thiết lập OpenShift
Trong mô tả sau đây, chúng tôi sẽ thiết lập môi trường phòng thí nghiệm OpenShift, sau này có thể được mở rộng thành một cụm lớn hơn. Vì OpenShift yêu cầu thiết lập nút chính và nút, chúng tôi sẽ cần ít nhất hai máy được lưu trữ trên đám mây, máy vật lý hoặc máy ảo.
Bước 1 – Đầu tiên hãy cài đặt Linux trên cả hai máy, trong đó Linux 7 phải là phiên bản ít nhất. Điều này có thể được thực hiện bằng cách sử dụng các lệnh sau nếu một người có đăng ký Red Hat đang hoạt động.
# subscription-manager repos --disable = "*"
# subscription-manager repos --enable = "rhel-7-server-rpms"
# subscription-manager repos --enable = "rhel-7-server-extras-rpms"
# subscription-manager repos --enable = "rhel-7-server-optional-rpms"
# subscription-manager repos --enable = "rhel-7-server-ose-3.0-rpms"
# yum install wget git net-tools bind-utils iptables-services bridge-utils
# yum install wget git net-tools bind-utils iptables-services bridge-utils
# yum install python-virtualenv
# yum install gcc
# yum install httpd-tools
# yum install docker
# yum update
Khi chúng ta đã cài đặt tất cả các gói cơ sở trên trong cả hai máy, bước tiếp theo sẽ là thiết lập Docker trên các máy tương ứng.
Bước 2 – Định cấu hình Docker để nó chỉ cho phép giao tiếp không an toàn trên mạng cục bộ. Đối với điều này, hãy chỉnh sửa tệp Docker bên trong / etc / sysconfig. Nếu tệp không có thì bạn cần phải tạo nó theo cách thủ công.
# vi /etc/sysconfig/docker
OPTIONS = --selinux-enabled --insecure-registry 192.168.122.0/24
Sau khi định cấu hình Docker trên máy chủ, chúng ta cần thiết lập giao tiếp không cần mật khẩu giữa cả hai máy. Đối với điều này, chúng tôi sẽ sử dụng xác thực khóa công khai và riêng tư.
Bước 3 – Tạo khóa trên máy chủ và sau đó sao chép khóa id_rsa.pub vào tệp khóa được ủy quyền của máy nút, có thể thực hiện bằng lệnh sau.
# ssh-keygen
# ssh-copy-id -i .ssh/id_rsa.pub root@ose3-node.test.com
Khi bạn đã có tất cả các thiết lập trên, tiếp theo là thiết lập OpenShift phiên bản 3 trên máy chủ.
Bước 4 – Từ máy chủ, chạy lệnh curl sau.
# sh <(curl -s https://install.openshift.com/ose)
Lệnh trên sẽ đặt thiết lập cho OSV3. Bước tiếp theo sẽ là cấu hình OpenShift V3 trên máy.
Nếu bạn không thể tải xuống trực tiếp từ Internet, thì có thể tải xuống từ https://install.openshift.com/portable/oo-install-ose.tgz dưới dạng gói tar mà từ đó trình cài đặt có thể chạy trên máy chủ cục bộ.
Khi chúng ta đã thiết lập sẵn sàng, thì chúng ta cần bắt đầu với cấu hình thực của OSV3 trên máy. Thiết lập này rất cụ thể để kiểm tra môi trường cho quá trình sản xuất thực tế, chúng tôi có sẵn LDAP và những thứ khác.
Bước 5 – Trên máy chủ, hãy định cấu hình mã sau nằm trong /etc/openshift/master/master-config.yaml
# vi /etc/openshift/master/master-config.yaml
identityProviders:
- name: my_htpasswd_provider
challenge: true
login: true
provider:
apiVersion: v1
kind: HTPasswdPasswordIdentityProvider
file: /root/users.htpasswd
routingConfig:
subdomain: testing.com
Tiếp theo, tạo một người dùng tiêu chuẩn để quản trị mặc định.
# htpasswd -c /root/users.htpasswd admin
Bước 6 – Vì OpenShift sử dụng sổ đăng ký Docker để định cấu hình hình ảnh, chúng ta cần phải định cấu hình sổ đăng ký Docker. Điều này được sử dụng để tạo và lưu trữ các hình ảnh Docker sau khi xây dựng.
Tạo một thư mục trên máy nút OpenShift bằng lệnh sau.
# mkdir /images
Tiếp theo, đăng nhập vào máy chủ bằng thông tin đăng nhập quản trị viên mặc định, được tạo trong khi thiết lập sổ đăng ký.
# oc login
Username: system:admin
Chuyển sang dự án được tạo mặc định.
# oc project default
Bước 7 – Tạo Sổ đăng ký Docker.
#echo '{"kind":"ServiceAccount","apiVersion":"v1","metadata":{"name":"registry"}}' | oc create -f -
Chỉnh sửa các đặc quyền của người dùng.
#oc edit scc privileged
users:
- system:serviceaccount:openshift-infra:build-controller
- system:serviceaccount:default:registry
Tạo và chỉnh sửa sổ đăng ký hình ảnh.
#oadm registry --service-account = registry --
config = /etc/openshift/master/admin.kubeconfig --
credentials = /etc/openshift/master/openshift-registry.kubeconfig --
images = 'registry.access.redhat.com/openshift3/ose-${component}:${version}' --
mount-host = /images
Bước 8 – Tạo một định tuyến mặc định.
Theo mặc định, OpenShift sử dụng OpenVswitch làm mạng phần mềm. Sử dụng lệnh sau để tạo định tuyến mặc định. Điều này được sử dụng để cân bằng tải và định tuyến proxy. Bộ định tuyến tương tự như sổ đăng ký Docker và cũng chạy trong một sổ đăng ký.
# echo '{"kind":"ServiceAccount","apiVersion":"v1","metadata":{"name":"router"}}' | oc create -f -
Tiếp theo, chỉnh sửa các đặc quyền của người dùng.
#oc edit scc privileged
users:
- system:serviceaccount:openshift-infra:build-controller
- system:serviceaccount:default:registry
- system:serviceaccount:default:router
#oadm router router-1 --replicas = 1 --
credentials = '/etc/openshift/master/openshift-router.kubeconfig' --
images = 'registry.access.redhat.com/openshift3/ose-${component}:${version}'
Bước 9 – Định cấu hình DNS.
Để xử lý yêu cầu URL, OpenShift cần một môi trường DNS hoạt động. Cấu hình DNS này được yêu cầu để tạo thẻ đại diện, thẻ này được yêu cầu để tạo thẻ đại diện DNS trỏ đến bộ định tuyến.
# yum install bind-utils bind
# systemctl start named
# systemctl enable named
vi /etc/named.conf
options {listen-on port 53 { 10.123.55.111; };
forwarders {
10.38.55.13;
;
};
zone "lab.com" IN {
type master;
file "/var/named/dynamic/test.com.zone";
allow-update { none; };
};
Bước 10 – Bước cuối cùng sẽ là thiết lập máy chủ github trên máy chủ OpenShift V3, đây là tùy chọn. Điều này có thể được thực hiện dễ dàng bằng cách sử dụng chuỗi lệnh sau.
#yum install curl openssh-server
#systemctl enable sshd
# systemctl start sshd
# firewall-cmd --permanent --add-service = http
# systemctl reload firewalld
#curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-
#yum install gitlab-ce
# gitlab-ctl reconfigure
Khi quá trình thiết lập ở trên hoàn tất, bạn có thể xác minh bằng cách kiểm tra và triển khai ứng dụng, điều này chúng ta sẽ biết thêm trong các chương tiếp theo.