paint-brush
Xây dựng quy trình CI/CD với AWS, K8S, Docker, Ansible, Git, Github, Apache Maven và Jenkinstừ tác giả@zufarexplained
36,072 lượt đọc
36,072 lượt đọc

Xây dựng quy trình CI/CD với AWS, K8S, Docker, Ansible, Git, Github, Apache Maven và Jenkins

từ tác giả Zufar Sunagatov46m2023/09/07
Read on Terminal Reader

dài quá đọc không nổi

Tìm hiểu cách tạo quy trình CI/CD nâng cao với AWS, K8S, Docker, Ansible, Apache Maven, Git, Github và Jenkins với Zufar Sunagatov. Đến cuối hướng dẫn này, bạn sẽ sẵn sàng sử dụng quy trình CI/CD hiện đại có thể áp dụng cho bất kỳ dự án nào của bạn trên Github.
featured image - Xây dựng quy trình CI/CD với AWS, K8S, Docker, Ansible, Git, Github, Apache Maven và Jenkins
Zufar Sunagatov HackerNoon profile picture
0-item
1-item




Trong bài viết trước, tôi đã đi sâu vào thế giới hấp dẫn của microservice - Các mẫu kiến trúc microservice Phần 1: Các mẫu phân rã . Đây là phần mở đầu của loạt bài viết toàn diện của tôi về microservice và các mẫu của chúng.


Mặc dù bước hợp lý là tiếp tục với Phần 2 của loạt bài này, nhưng tôi đã quyết định rằng điều tiếp theo mà tôi muốn khám phá và kể cho bạn nghe là quy trình quan trọng trong việc cung cấp các dịch vụ vi mô này đến người dùng cuối một cách liền mạch.


Tổng quan về nội dung

  • Động lực
  • [Học phần 1]: Máy chủ ảo AWS EC2
  • [Học phần 2]: Máy chủ Jenkins
  • [Học phần 3]: Git và Github
  • [Học phần 4]: Apache Maven
  • [Học phần 5]: Docker
  • [Học phần 6]: Ansible
  • [Học phần 7]: Kubernetes
  • Phần kết luận
  • Giới thiệu về tác giả



Động lực

CI/CD là một kỹ thuật phân phối ứng dụng cho khách hàng, đạt được bằng cách thêm tính năng tự động hóa vào các giai đoạn phát triển ứng dụng khác nhau. Tôi tin rằng việc nắm bắt CI/CD (Tích hợp liên tục và Triển khai liên tục) có thể giúp các nhà phát triển hiểu rõ hơn về cách các tạo phẩm của dự án phụ trợ tồn tại ngoài ranh giới của kho lưu trữ dự án. Sự hiểu biết này cũng có thể tạo ra sự thay đổi cơ bản trong quan điểm của nhà phát triển. Thay vì chỉ xem công việc của mình như những dòng mã, họ có thể bắt đầu nắm bắt bối cảnh rộng hơn của dự án như một sản phẩm có giá trị.


Trong bài viết này, chúng tôi mong muốn làm sáng tỏ quy trình CI/CD thông qua ứng dụng thực tế. Chúng tôi sẽ hướng dẫn bạn từng bước, chia nhỏ từng mô-đun, trong đó bạn sẽ xây dựng quy trình CI/CD theo cách thủ công. Để làm được điều này, chúng tôi sẽ khai thác sức mạnh của các công cụ DevOps hiện đại như AWS, Docker, Kubernetes, Ansible, Git, Apache MavenJenkins . Vì vậy, hãy bắt đầu cuộc hành trình này!


[Học phần 1]: Máy chủ ảo AWS EC2

Mô-đun này được dành riêng cho việc tạo phiên bản Máy chủ ảo AWS EC2. Là một phần của bài viết này, bạn sẽ thiết lập ba phiên bản EC2 cho Jenkins, Ansible và Kubernetes. Hiện tại, bạn có thể tiếp tục với các mô-đun tiếp theo và truy cập lại mô-đun này trong các phần "[mô-đun 2]: Jenkins", “[mô-đun 6]: Ansible" và "[mô-đun 7]: Kubernetes".


Bước 1: Tạo tài khoản AWS

Truy cập https://aws.amazon.com.

Nhấp vào nút Tạo tài khoản AWS .


Ảnh chụp màn hình trang web chính AWS với con trỏ tới nút "Tạo tài khoản AWS"


Làm theo hướng dẫn trên trang web tạo tài khoản.


Bước 2: Đăng nhập vào tài khoản AWS của bạn

Truy cập https://console.aws.amazon.com/console/home. Nhấp vào nút Đăng nhập .

Ảnh chụp màn hình trang web chính AWS với con trỏ tới nút "Đăng nhập"


Nhập tất cả các thông tin cần thiết trên trang web này.


Bước 3: Tìm máy chủ ảo EC2

Tìm EC2 trong hộp tìm kiếm.

Ảnh chụp màn hình trang web AWS với con trỏ tới hộp tìm kiếm


Chọn Máy chủ ảo EC2 bằng cách nhấp vào Dịch vụ EC2 .

Ảnh chụp màn hình trang web AWS với con trỏ tới dịch vụ AWS "EC2"


Nhấp vào nút Khởi chạy phiên bản .

Ảnh chụp màn hình trang web AWS với con trỏ tới nút "Khởi chạy phiên bản"


Bước 4: Cấu hình phần “Tên và thẻ“

Đi tới phần “Tên và thẻ” .

Ảnh chụp màn hình trang web AWS với con trỏ tới phần "Tên và thẻ"


Cung cấp tên cho phiên bản Máy chủ ảo AWS EC2 mới trong phần “Tên” .

Ảnh chụp màn hình trang web AWS với con trỏ tới hộp nhập "Tên" trong phần "Tên và thẻ"


Bạn cũng có thể thêm các thẻ bổ sung cho máy chủ ảo của mình bằng cách nhấp vào ”Thêm thẻ bổ sung” .


Bước 5: Định cấu hình phần “Hình ảnh ứng dụng và hệ điều hành (Hình ảnh máy Amazon)“


Đi tới phần "Hình ảnh ứng dụng và hệ điều hành (Hình ảnh máy của Amazon)" .

Ảnh chụp màn hình trang web AWS với con trỏ tới phần "Hình ảnh ứng dụng và hệ điều hành (Hình ảnh máy Amazon)"


Để chơi MIỄN PHÍ với máy chủ ảo:

  1. Chọn hệ điều hành cho máy chủ ảo của bạn - Amazon Linux .
  2. Trong phần Hình ảnh máy Amazon (AMI) , chọn máy có thẻ đủ điều kiện Bậc miễn phí .



Ảnh chụp màn hình trang web AWS với con trỏ tới nút "OS" và "Loại máy" trong phần "Hình ảnh ứng dụng và hệ điều hành (Hình ảnh máy của Amazon)"


Bước 6: Cấu hình phần “Instance type”

Đi tới phần "Loại phiên bản" .

Ảnh chụp màn hình trang web AWS với con trỏ tới phần "Loại phiên bản"


Để chơi MIỄN PHÍ với máy chủ ảo:

Chọn một loại có thẻ đủ điều kiện Bậc miễn phí trong phần Loại phiên bản .

Đối với tôi đó là t2.micro (Gia đình: t2 1cCPU 1 GiB Bộ nhớ Thế hệ hiện tại:true) .



Ảnh chụp màn hình trang web AWS với con trỏ tới danh sách thả xuống "Loại phiên bản" trong phần "Loại phiên bản"


Bước 7: Cấu hình phần “Cấu hình bộ nhớ”

Đi tới phần "Cấu hình bộ nhớ" .

Ảnh chụp màn hình trang web AWS với con trỏ tới phần "Cấu hình bộ nhớ"


Để chơi MIỄN PHÍ với máy chủ ảo:

Không thay đổi cài đặt mặc định. Khách hàng đủ điều kiện sử dụng bậc miễn phí có thể nhận được 30 GB bộ lưu trữ EBS Mục đích chung (SSD) hoặc Từ tính .



Ảnh chụp màn hình trang web AWS với con trỏ tới các cấu hình có thể có trong bộ nhớ trong phần "Cấu hình bộ nhớ"


Bước 8: Cấu hình phần “Cài đặt mạng“

Chuyển đến phần “Cài đặt mạng“ .

Ảnh chụp màn hình trang web AWS với con trỏ tới phần "Cài đặt mạng"


Bạn cần thiết lập bảo mật cho máy chủ ảo của mình. Để làm điều này,

  1. Nhấp vào nút “Tạo nhóm bảo mật” .
  2. Thêm tên nhóm bảo mật mới của bạn vào phần “Tên nhóm bảo mật” .
  3. Thêm mô tả về nhóm bảo mật mới của bạn trong phần “Mô tả” .

Theo mặc định, máy chủ ảo của bạn có thể truy cập được thông qua ( Type - SSH, Protocol - TCP, Port - 22 ). Nếu bạn cần các loại kết nối bổ sung, hãy thêm chúng bằng cách thêm các quy tắc nhóm bảo mật gửi đến bổ sung.



Ảnh chụp màn hình trang web AWS với con trỏ tới "Nhóm bảo mật" trong phần "Cài đặt mạng"


Bước 9: Cấu hình phần “Cặp khóa (đăng nhập)”

Vào phần “Cặp khóa (Đăng nhập)” .

Ảnh chụp màn hình trang web AWS với con trỏ tới phần "Ket pair (đăng nhập)"


Tạo một cặp khóa mới nếu bạn chưa tạo.

Ảnh chụp màn hình trang web AWS với con trỏ tới "Tên cặp khóa", "Loại cặp khóa", "Định dạng tệp khóa riêng" trong phần "Ket pair (đăng nhập)"


Nếu bạn chưa tạo “cặp khóa” :

  1. Nhấp vào nút “Tạo cặp khóa mới” .
  2. Đặt tên cho cặp khóa mới của bạn trong phần “Tên cặp khóa” .
  3. Chọn loại cặp khóa RSA hoặc ED25519 . Tôi chọn loại RSA .
  4. Chọn định dạng tệp khóa riêng. Lựa chọn .pem.ppk . Tôi chọn định dạng .pem .
  5. Nhấp vào nút “Tạo cặp khóa” .
  6. Bạn sẽ nhận được một cửa sổ bật lên nhắc bạn tải xuống tệp Khóa riêng. Đồng ý và tải file về máy tính của bạn.

Bước 10: Khởi chạy Phiên bản máy chủ ảo EC2


Khởi chạy phiên bản Máy chủ ảo EC2 bằng cách nhấp vào nút “Khởi chạy phiên bản” .

Ảnh chụp màn hình trang web AWS với con trỏ tới nút "Khởi chạy phiên bản"


Sau khi hoàn tất quá trình tạo phiên bản Máy chủ ảo EC2, bạn sẽ thấy như sau.


Ảnh chụp màn hình trang web AWS hiển thị thông báo 'Thành công', cho biết quá trình tạo phiên bản Máy chủ ảo EC2 đã hoàn tất thành công


Sau đó, bạn nên đi tới phần “Phiên bản” bằng cách nhấp vào nút “Xem tất cả các phiên bản” .


Ảnh chụp màn hình trang web AWS với con trỏ tới phiên bản EC2 đang chạy

Bây giờ bạn có thể thấy phiên bản Máy chủ ảo AWS EC2 của bạn đang chạy.



[Học phần 2]: Máy chủ Jenkins

Bây giờ, hãy cấu hình JenkinsServer trên phiên bản Máy chủ ảo EC2.

Bước 1: Tạo phiên bản Máy chủ ảo AWS EC2

Bạn cần một máy chủ ảo để chạy Jenkins.

Làm theo hướng dẫn từ [Mô-đun 1]: Phần Máy chủ ảo AWS EC2 của hướng dẫn này để hoàn thành bước này và tạo một phiên bản máy chủ ảo EC2 có tên JenkinsServer.

Đừng quên thêm thiết lập nhóm bảo mật. Nó cho phép JenkinsSSH hoạt động tương ứng trên cổng 808022 .


Sử dụng tên “JenkinsServer” để phân biệt phiên bản Máy chủ ảo EC2 của bạn.

Tạo nhóm bảo mật “CI_CD_Pipeline”“CI_CD_Pipeline_Key_Pair“ cho phiên bản AWS EC2 “JenkinsServer” mới. Bạn có thể tái sử dụng chúng thêm trong bài viết.


Bước 2: Kết nối với phiên bản Máy chủ ảo AWS EC2

Đi tới trang chủ Bảng điều khiển AWSBảng thông tin Bảng điều khiển quản lý EC2Phiên bản.

Sau đó, bạn nên chọn JenkinsServer và sau đó nhấp vào nút “Kết nối” .

Ảnh chụp màn hình trang web "Phiên bản" AWS với con trỏ tới nút "Kết nối"


Sau đó bạn sẽ thấy trang web này. Bạn nên nhấp lại vào nút “Kết nối” .

Ảnh chụp màn hình trang web "Kết nối với phiên bản" của AWS với con trỏ tới nút "Kết nối"


Bây giờ bạn có thể thấy thiết bị đầu cuối trực tuyến phiên bản máy chủ ảo EC2.

Ảnh chụp màn hình thiết bị đầu cuối trực tuyến của phiên bản Máy chủ ảo AWS EC2


Bước 3: Tải xuống kho Jenkins

Bây giờ bạn cần tải xuống Jenkins trên phiên bản máy chủ ảo EC2 của mình.

Làm theo các hướng dẫn này:


  1. Truy cập trang web tải xuống Jenkins.

  2. Bạn có thể thấy các tùy chọn Bản phát hành ổn định (LTS) và Bản phát hành thường xuyên (Hàng tuần). Chọn tùy chọn Red Hat/Fedora/Alma/Rocky/CentOS LTS.


Bạn sẽ thấy trang web này.

Ảnh chụp màn hình trang web tải xuống Jenkins


  1. Sao chép lệnh “sudo get..” và thực thi lệnh đó để tải xuống các tệp Jenkins từ kho lưu trữ Jenkins trên Internet và lưu chúng vào vị trí được chỉ định trên phiên bản máy chủ ảo EC2 của bạn.
 sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

Bây giờ Jenkins đã được tải xuống.


Bước 4: Nhập khóa Jenkins

Để hoàn tất quá trình cài đặt Jenkins, chúng ta cần nhập khóa Jenkins.

Để nhập khóa Jenkins, chúng ta cần sao chép lệnh “sudo vòng/phút..” và thực thi nó.


 sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

Bằng cách này, trình quản lý gói “rpm” có thể xác minh rằng các gói Jenkins bạn cài đặt chính xác là những gói do dự án Jenkins xuất bản và chúng không bị giả mạo hoặc bị hỏng.


Bước 5: Cài đặt Java

Để chạy Jenkins, chúng ta cần cài đặt Java trên phiên bản máy chủ ảo EC2 của mình.

Để cài đặt Java , hãy sử dụng lệnh này.


 sudo amazon-linux-extras install java-openjdk11 -y


Xác minh xem Java đã được cài đặt đúng hay chưa bằng lệnh này:

 java -version


Bạn sẽ thấy một cái gì đó như thế.

Ảnh chụp màn hình thiết bị đầu cuối trực tuyến phiên bản Máy chủ ảo AWS EC2 đã cài đặt JDK 11


Bước 6: Cài đặt fontconfig

Để chạy Jenkins, bạn cần cài đặt fontconfig trên phiên bản máy chủ ảo EC2 của chúng tôi.

Sử dụng lệnh này.

 sudo yum install fontconfig java-11-openjdk -y


Fontconfig là một thư viện được thiết kế để cung cấp cấu hình phông chữ, tùy chỉnh và truy cập ứng dụng trên toàn hệ thống. Nó được Jenkins yêu cầu vì Jenkins có tính năng hiển thị phông chữ.


Bước 7: Cài đặt Jenkins

Trong các bước trước, bạn đã định cấu hình phiên bản máy chủ ảo EC2 để sử dụng kho lưu trữ Jenkins cụ thể, sau đó nhập khóa GPG được liên kết với kho lưu trữ này. Bây giờ, bạn cần chạy lệnh sẽ tìm kiếm tất cả các kho lưu trữ mà nó biết, bao gồm cả kho Jenkins mà bạn đã thêm, để tìm gói Jenkins. Sau khi tìm thấy gói Jenkins trong kho Jenkins, nó sẽ tải xuống và cài đặt gói đó.


Hãy chạy lệnh này.

 sudo yum install jenkins -y


Bước 8: Bắt đầu Jenkins

Bạn có thể khởi động Jenkins bằng lệnh này.

 sudo systemctl start jenkins


Để kiểm tra xem Jenkins có đang chạy hay không, hãy sử dụng lệnh này.

 sudo systemctl status jenkins


Bạn sẽ thấy kết quả như trên ảnh chụp màn hình bên dưới:

Ảnh chụp màn hình thiết bị đầu cuối trực tuyến của phiên bản Máy chủ ảo AWS EC2 đã cài đặt Jenkins


Jenkins bây giờ đã sẵn sàng và đang chạy.

Bước 9: Truy cập Jenkins

Để truy cập ứng dụng Jenkins, hãy mở bất kỳ trình duyệt web nào và nhập địa chỉ IP công cộng hoặc tên miền của phiên bản EC2 của bạn, sau đó là cổng 8080.


 http://<your-ec2-ip>:8080


Lần đầu tiên bạn truy cập Jenkins, nó sẽ bị khóa bằng mật khẩu được tạo tự động.

Ảnh chụp màn hình Jenkins được cài đặt trên Máy chủ ảo AWS EC2 với con trỏ tới mật khẩu Quản trị viên


Bạn cần hiển thị mật khẩu này bằng lệnh sau.

 sudo cat /var/lib/jenkins/secrets/initialAdminPassword


Sao chép mật khẩu này, quay lại trình duyệt của bạn, dán nó vào trường Mật khẩu quản trị viên và nhấp vào "Tiếp tục".


Sau đó bạn sẽ có thể nhìn thấy trang web này.


Ảnh chụp màn hình Jenkins được cài đặt trên Máy chủ ảo AWS EC2 với con trỏ tới trang web "Tùy chỉnh Jenkins"


Bây giờ, bạn có thể sử dụng Máy chủ Jenkins của mình.


Bước 10: Tạo đường dẫn Jenkins mới

Bây giờ, vì Jenkins đang hoạt động tốt nên bạn có thể bắt đầu tạo quy trình Jenkins. Để tạo quy trình Jenkins, bạn cần tạo một “dự án Freestyle” mới. Để tạo một “dự án Freestyle” mới, bạn cần truy cập bảng điều khiển Jenkins và nhấp vào nút “Mục mới” .


Ảnh chụp màn hình trang web Bảng điều khiển Jenkins với con trỏ tới nút "Mục mới"


Nhập tên của Github “Dự án Freestyle” (“tên đường ống” sẽ được sử dụng thêm) và sau đó nhấp vào nút “OK” .


Ảnh chụp màn hình trang web Mục mới của Jenkins với con trỏ tới hộp mục "Tên mục"


Sau đó cung cấp Mô tả của đường dẫn.

Ảnh chụp màn hình trang web cấu hình Công việc của Jenkins với con trỏ tới hộp nhập "Mô tả"


Sau đó nhấp vào nút “Áp dụng” và “Lưu”. Sau đó, điều đó có nghĩa là bạn đã tạo nền tảng của quy trình sẽ được xây dựng trong hướng dẫn này.



[Học phần 3]: Git và Github

Bây giờ, vì Jenkins đang chạy trên phiên bản Máy chủ ảo AWS EC2 nên bạn có thể định cấu hình Git bằng quy trình.

Git là một hệ thống kiểm soát phiên bản phân tán (VCS) mã nguồn mở và miễn phí được thiết kế để giúp các nhóm phần mềm theo dõi mọi sửa đổi đối với mã trong một loại cơ sở dữ liệu đặc biệt. Nếu xảy ra lỗi, nhà phát triển có thể quay ngược thời gian và so sánh các phiên bản mã trước đó để giúp sửa lỗi đồng thời giảm thiểu sự gián đoạn cho tất cả các thành viên trong nhóm. VCS đặc biệt hữu ích cho DevOps các nhóm vì chúng giúp họ giảm thời gian phát triển và tăng khả năng triển khai thành công [1].

Git là hệ thống kiểm soát phiên bản phổ biến nhất cho phép chúng tôi lấy mã mới nhất từ kho lưu trữ Github dự án của bạn sang phiên bản máy chủ ảo EC2 nơi Jenkins của bạn được cài đặt.


Bước 1: Cài đặt Git

Sử dụng lệnh này để cài đặt Git.

 sudo yum install git -y


Bây giờ hãy xác minh Git đang hoạt động bằng lệnh này.

 git --version

Hiện tại Git đang hoạt động tốt trên phiên bản Máy chủ ảo EC2.


Bước 2: Mở bảng điều khiển Jenkins

Vì Git đang hoạt động tốt trên phiên bản Máy chủ ảo EC2 nên chúng tôi có thể tích hợp Jenkins với Git ngay bây giờ.

Để bắt đầu tích hợp này, hãy cài đặt plugin Jenkins Github.

Chuyển đến phần bảng điều khiển của Jenkins.


Ảnh chụp màn hình bảng điều khiển Jenkins


Bước 3: Mở Trình quản lý plugin Jenkins

Nhấp vào nút “Quản lý Jenkins” và sau đó nhấp vào nút “Quản lý plugin” .

Ảnh chụp màn hình bảng điều khiển Jenkins với con trỏ tới nút "Quản lý plugin"


Bước 4: Tìm plugin Github Jenkins

Nhấp vào nút “Các plugin có sẵn” .

Ảnh chụp màn hình trang web Trình quản lý plugin Jenkins với con trỏ tới nút "Các plugin có sẵn"


Tìm hộp Tìm kiếm plugin Github .


Ảnh chụp màn hình trang web Trình quản lý plugin Jenkins với con trỏ tới plugin "Github"


Chọn plugin Github .


Bước 5: Cài đặt plugin Github Jenkins

Chọn plugin Github . Và sau đó nhấp vào nút “Cài đặt mà không cần khởi động lại” .


Ảnh chụp màn hình trang web Trình quản lý plugin Jenkins với con trỏ tới nút "Cài đặt mà không cần khởi động lại"


Đợi quá trình tải xuống plugin Github kết thúc.


Ảnh chụp màn hình trang web Jenkins Plugin Manager với plugin Github đang tải xuống


Đúng! Plugin Jenkins Github đã được cài đặt.


Bước 6: Định cấu hình Plugin Github Jenkins

Bây giờ khi plugin GitHub Jenkins đã được cài đặt, cuối cùng bạn có thể định cấu hình plugin này để tích hợp Jenkins với Git. Để làm điều đó, bạn cần quay lại trang chính bằng cách nhấp vào nút “Quay lại trang đầu”.


Ảnh chụp màn hình trang web Jenkins Plugin Manager với con trỏ tới nút "Quay lại trang đầu"


Sau đó, trên trang chính, bạn cần nhấp vào nút “Quản lý Jenkins” và sau đó nhấp vào nút “Cấu hình công cụ toàn cầu” .


Ảnh chụp màn hình trang web Trình quản lý plugin Jenkins với con trỏ tới nút "Cấu hình công cụ chung"


Sau đó, trên trang web Cấu hình Công cụ Toàn cầu, bạn nên chuyển đến phần Git.


Ảnh chụp màn hình trang web Cấu hình công cụ toàn cầu của Jenkins với con trỏ tới hộp nhập "Tên" và "Đường dẫn đến tệp thực thi Git"


Trong phần Git, bạn cần cấu hình Git bằng cách cung cấp tên và đường dẫn tới Git trên máy tính.


Sau đó nhấp vào nút “Áp dụng”“Lưu” **.**


Đến đây, bạn đã cấu hình xong plugin Jenkins Github.


Bước 7: Tích hợp Git vào quy trình

Bây giờ, khi plugin Jenkins Github đã được cài đặt và định cấu hình, giờ đây bạn có thể sử dụng plugin này trong quy trình của mình. Điều này sẽ cho phép quy trình mà bạn đã tạo trong mô-đun 2 lấy mã dự án của bạn từ kho lưu trữ GitHub được chỉ định.


Chà, để tích hợp plugin này vào quy trình của bạn, bạn cần đi tới phần Quản lý mã nguồn và chọn Git trong quy trình của bạn. Sau đó, bạn cần cung cấp URL kho lưu trữ dự án của mình. Nếu kho lưu trữ dự án của bạn được công khai trên Github, bạn không cần cung cấp thông tin xác thực. Nếu kho lưu trữ dự án ở chế độ riêng tư trên Github, bạn cần cung cấp thông tin xác thực.


Ảnh chụp màn hình trang web cấu hình Jenkins Job với cài đặt "Quản lý mã nguồn"


Bạn có thể sử dụng dự án của tôi với URL Kho lưu trữ tiếp theo: https://github.com/Sunagatov/Hello.git .

Chỉ cần sao chép và dán nó vào đầu vào “ URL kho lưu trữ” . Sau đó nhấp vào nút “Áp dụng”“Lưu” để hoàn tất quá trình tích hợp Git với quy trình.


Bước 8: Kiểm tra Git được tích hợp vào quy trình

Bây giờ bạn có thể sử dụng quy trình đã cập nhật của mình để lấy dự án từ Github. Để làm điều đó, bạn cần nhấp vào nút **“Xây dựng ngay”**. Kết quả là bạn sẽ thấy quá trình xây dựng thành công trong lịch sử xây dựng.


Ảnh chụp màn hình trang web Jenkins với các con trỏ tới nút "Xây dựng ngay" và phần "Lịch sử xây dựng"



Mở bản dựng đầu tiên từ lịch sử bản dựng.

Ảnh chụp màn hình Jenkins Pull_Code_From_Github_Job với kết quả công việc thành công


Bây giờ bạn có thể thấy kết quả công việc thành công của bản dựng đầu tiên. Nếu bạn mở thiết bị đầu cuối AWS EC2 của mình. Bạn có thể kiểm tra xem đường ống có hoạt động tốt không.


Chỉ cần sử dụng lệnh này.

 cd /var/lib/jenkins/workspace/{your pipeline name}


Bằng cách này, bạn có thể thấy rằng dự án của mình từ Github đã được kéo sang phiên bản máy chủ ảo AWS EC2 của bạn.


Ảnh chụp màn hình dự án Github được tải xuống thiết bị đầu cuối phiên bản EC2



[Học phần 4]: Apache Maven

Apache Maven là một công cụ quản lý dự án và tự động hóa xây dựng được sử dụng rộng rãi trong phát triển phần mềm. Nó hợp lý hóa quá trình biên dịch, kiểm tra và đóng gói mã bằng cách quản lý các phần phụ thuộc của dự án và cung cấp vòng đời xây dựng nhất quán. Maven sử dụng các tệp cấu hình dựa trên XML (tệp POM) để xác định cấu trúc, các phần phụ thuộc và tác vụ của dự án, cho phép các nhà phát triển quản lý và triển khai hiệu quả các dự án phần mềm phức tạp.


Bây giờ bạn đã tích hợp Git vào quy trình, bạn có thể nâng cao hơn nữa quy trình bằng cách kết hợp Apache Maven cho phép bạn xây dựng, thử nghiệm và đóng gói dự án của mình. Để làm được điều đó, bạn cần cài đặt Apache Maven trên phiên bản Máy chủ ảo AWS EC2 đã cài đặt Jenkins và Git.


Bước 1: Tải xuống Apache Maven

Để tải xuống Apache Maven, hãy vào thư mục “/opt” .

 cd /opt


Và sau đó sử dụng lệnh này.

 sudo wget https://dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz


Lệnh này sẽ tải xuống Apache Maven chính thức mới nhất (kiểm tra phiên bản mới nhất trên trang web chính thức của Apache Maven). Để tìm bản phát hành Apache Maven chính thức mới nhất, hãy sử dụng liên kết https://maven.apache.org/download.cgi .


Bước 2: Trích xuất Apache Maven từ kho lưu trữ

Sử dụng lệnh này để trích xuất Apache Maven từ kho lưu trữ đã tải xuống:

 sudo tar -xvzf apache-maven-*.tar.gz


Bước 3: Thêm JAVA_HOME và M2_HOME

Di chuyển đến thư mục gốc bằng lệnh này.

 cd ~


Chỉnh sửa tệp .bash_profile bằng lệnh này.

 vi .bash_profile


Thêm các biến JAVA_HOME và M2_HOME.


Gán đường dẫn tới JDK11 cho JAVA_HOME và đường dẫn đến thư mục maven cho biến M2_HOME .


Để tìm đường dẫn JDK, hãy sử dụng lệnh này.

 sudo find / -name java 



Ảnh chụp màn hình trang web thiết bị đầu cuối phiên bản Máy chủ ảo AWS EC2 với tệp .bash_profile


Cách sử dụng VIM

  • Để chỉnh sửa tập tin nhấn nút bàn phím “I” để chèn dữ liệu.
  • Để lưu tập tin, nhấn nút bàn phím “ esc “ và nhập “:w“.
  • Để thoát khỏi tập tin, nhấn nút bàn phím “ esc “ và nhập “:q” .

Lưu các thay đổi.


Sau đó, thực hiện lệnh này để làm mới các biến hệ thống.

 source .bash_profile


Để xác minh $PATH , hãy sử dụng lệnh này.

 echo $PATH


Để xác minh Apache Maven , hãy sử dụng lệnh này.

 mvn -v


Nếu bạn đã làm mọi thứ chính xác, bạn sẽ có thể xem phiên bản Apache Maven.

Ảnh chụp màn hình trang web thiết bị đầu cuối phiên bản Máy chủ ảo AWS EC2 với phiên bản Apache Maven


Bước 4: Cài đặt plugin Apache Maven Jenkins

Vì Apache Maven có thể được sử dụng trên phiên bản EC2 nên bạn có thể cài đặt plugin Apache Maven để tích hợp nó với quy trình.


Để đạt được điều này, hãy làm theo các bước sau:

  1. Điều hướng đến “Bảng điều khiển“ → “Quản lý Jenkins“ → “Quản lý plugin“ → “Có sẵn”.
  2. Trong hộp tìm kiếm, nhập “Maven” .
  3. Chọn plugin “Tích hợp Maven” .


Ảnh chụp màn hình Jenkins được cài đặt trên Máy chủ ảo AWS EC2 với con trỏ tới plugin Maven


Chờ cho đến khi kết thúc quá trình tải xuống.


Và sau đó nhấp vào nút “Quay lại trang đầu” .

Ảnh chụp màn hình Jenkins được cài đặt trên Máy chủ ảo AWS EC2 với con trỏ tới quá trình tải xuống plugin Maven


Bước 5: Định cấu hình plugin Apache Maven Jenkins

Với việc cài đặt thành công plugin Apache Maven Jenkins, giờ đây bạn có thể sử dụng plugin này trong quy trình mà bạn đã tạo và cập nhật trong mô-đun 2 và 3.


Để làm đươc như vậy, hãy tuân theo những bước sau:

  1. Đi tới “Bảng điều khiển“ → “Quản lý Jenkins“ → “Cấu hình công cụ toàn cầu“ → “JDK”
  2. Nhấp vào nút “Thêm JDK”.
  3. Bỏ chọn “Cài đặt tự động”.



Ảnh chụp màn hình Jenkins được cài đặt trên Máy chủ ảo AWS EC2 với con trỏ tới cấu hình JDK



Sau đó đi đến phần “Maven” . Nhấp vào nút Thêm Thêm Maven . Bỏ chọn “Cài đặt tự động”.

Sau đó thêm tên và đường dẫn MAVEN_HOME .



Ảnh chụp màn hình Jenkins được cài đặt trên Máy chủ ảo AWS EC2 với con trỏ tới cấu hình Apache Maven



Nhấp vào nút “Áp dụng”“Lưu” .

Đến đây bạn đã cấu hình xong plugin Apache Maven Jenkins.


Bước 6: Tích hợp Apache Maven vào quy trình

Bây giờ, khi plugin Apache Maven GitHub đã được cài đặt và định cấu hình, giờ đây bạn có thể sử dụng Apache Maven trong quy trình của mình. Điều này sẽ cho phép quy trình mà bạn đã tạo trong “[mô-đun 2]: Máy chủ Jenkins” xây dựng mã dự án của bạn để tạo một tạo phẩm jar.


Để tích hợp Apache Maven vào quy trình, bạn cần làm theo các bước sau:

  1. Điều hướng đến “Bảng điều khiển“ → “CI_CD_Pipeline“ → “Cấu hình“ → “Các bước xây dựng”.
  2. Nhấp vào nút “Thêm bước xây dựng” .
  3. Chọn tùy chọn “Gọi các mục tiêu Maven cấp cao nhất” .
  4. Chọn “Apache-Maven” làm “Phiên bản Maven”.
  5. Thêm lệnh “gói sạch” vào đầu vào “Mục tiêu” .
  6. Nhấp vào nút “Nâng cao“ .
  7. Thêm “pom.xml” vào đầu vào “POM” .



Ảnh chụp màn hình phần "Các bước xây dựng" trong cấu hình quy trình với các con trỏ tới nút "Áp dụng" và "Lưu"



Cuối cùng, bạn nên nhấp vào nút “Áp dụng”“Lưu” để hoàn tất quá trình tích hợp Apache Maven với quy trình.

Bước 7: Kiểm tra Apache Maven được tích hợp vào quy trình

Bây giờ bạn có thể sử dụng quy trình đã cập nhật để xây dựng dự án Github của mình. Để làm điều đó, bạn cần nhấp vào nút **“Xây dựng ngay”**. Kết quả là bạn sẽ thấy kết quả công việc thành công trong lịch sử xây dựng.

Nếu bạn mở thiết bị đầu cuối AWS EC2 của mình. Bạn có thể kiểm tra xem đường ống có hoạt động tốt không.


Chỉ cần sử dụng lệnh này.

 cd /var/lib/jenkins/workspace/{your pipeline name}/target


Bằng cách này, bạn có thể thấy tạo phẩm JAR, cho biết quá trình xây dựng dự án của bạn thành công từ GitHub.



[Học phần 5]: Docker

Bây giờ, hãy tạo một phiên bản EC2 mới với tên "Ansible Server" nơi bạn sẽ cài đặt Docker và Ansible.


Bước 1: Khởi chạy phiên bản Máy chủ ảo AWS EC2

Sử dụng hướng dẫn từ phần “ Khởi chạy phiên bản Máy chủ ảo AWS EC2” của hướng dẫn này để hoàn thành bước này. Đừng quên thêm thiết lập nhóm bảo mật. Nó cho phép Docker và SSH hoạt động tương ứng trên các cổng 8080 và 22.


Bước 2: Kết nối với phiên bản Máy chủ ảo AWS EC2

Nhấp vào nút “Kết nối”.

Ảnh chụp màn hình trang web AWS với con trỏ tới nút "Kết nối"


Bây giờ bạn có thể thấy thiết bị đầu cuối trực tuyến của phiên bản Máy chủ ảo EC2.

Ảnh chụp màn hình thiết bị đầu cuối trực tuyến của phiên bản Máy chủ ảo AWS EC2


 sudo chown ansible-admin:ansible-admin /opt/docker


Bước 3: Cài đặt Docker trên máy chủ ảo Ansible EC2.

Bây giờ bạn cần cài đặt docker trên phiên bản Ansible EC2 của mình. Để làm điều đó bạn cần tạo một thư mục docker mới.

 sudo mkdir /opt/docker


Sau đó, cài đặt docker bằng cách thực hiện lệnh tiếp theo.

 sudo yum install docker -y


Bước 4: Thêm người dùng hiện tại vào nhóm Docker trên máy chủ ảo Ansible EC2

Bạn cần thêm người dùng hiện tại “ansible-admin” vào nhóm Docker trên máy chủ ảo “AnsibleServer” EC2 để cấp đặc quyền quản trị viên Docker.


 sudo usermod -a -G docker ansible-admin


Bạn sẽ cần phải đăng xuất và đăng nhập lại để những thay đổi này có hiệu lực.


Sau đó, bạn có thể thực hiện lệnh tiếp theo

 id ansible-admin


để thấy rằng người dùng docker mới tồn tại.


Ảnh chụp màn hình phiên bản Ansible EC2 với con trỏ tới người dùng docker


Bước 5: Khởi chạy Docker

Bây giờ, khi Docker được cài đặt trên phiên bản Ansible EC2, bạn có thể khởi chạy nó bằng cách thực hiện lệnh tiếp theo.

 sudo systemctl start docker


Khi Docker được khởi động, bạn có thể thực hiện lệnh tiếp theo

 sudo systemctl status docker


để xem docker đó đang hoạt động và đang chạy.

Ảnh chụp màn hình phiên bản Ansible EC2 với trạng thái docker đang hoạt động


Bước 6: Tạo Dockerfile

Trong phiên bản cuối cùng của quy trình, quy trình này sẽ bao gồm việc tạo hình ảnh Docker mới từ dự án GitHub của bạn và đẩy nó lên Docker Hub. Để thực hiện điều này, dự án GitHub của bạn phải chứa Dockerfile.


Nếu bạn đã sử dụng dự án “Xin chào” được cung cấp trong mô-đun “ [Mô-đun 3]: Git và Github” , thì bạn không cần tạo Dockerfile mới vì kho lưu trữ dự án này đã chứa Dockerfile.


 FROM eclipse-temurin:17-jre-jammy ENV HOME=/opt/app WORKDIR $HOME ADD hello-0.0.1-SNAPSHOT.jar $HOME ENTRYPOINT ["java", "-jar", "/opt/app/hello-0.0.1-SNAPSHOT.jar" ]


Nếu bạn đã sử dụng kho lưu trữ dự án của riêng mình và nó không chứa Dockerfile, bạn sẽ cần tạo một Dockerfile mới.


Để tạo một Dockerfile mới, hãy thực hiện lệnh sau để tạo tệp mới.

 sudo touch Dockerfile


Sau đó, bạn có thể điền vào tệp này một chuỗi lệnh mô tả cách xây dựng môi trường ứng dụng được chứa trong vùng chứa. Các lệnh này bao gồm các hành động như sao chép tệp vào hình ảnh, cài đặt phần mềm, đặt biến môi trường và định cấu hình vùng chứa.


Để điền vào Dockerfile bằng các lệnh này, hãy thực hiện lệnh sau.

 vim Dockerfile

Dockerfile đã sẵn sàng để sử dụng.


Bước 7: Đăng nhập Docker

Bây giờ, Dockerfile của bạn đã sẵn sàng để sử dụng, hãy tiếp tục bằng cách sao chép tạo phẩm JAR của dự án của bạn từ phiên bản **"JenkinsServer"**EC2 và dán nó vào phiên bản EC2 "AnsibleServer" . Điều quan trọng cần lưu ý là việc chuyển tiền này sẽ được tự động hóa hơn nữa thông qua đường ống.

Bằng cách hoàn thành bước này, bạn sẽ sẵn sàng kiểm tra Dockerfile của mình cùng với môi trường Docker mà bạn đã thiết lập.


Trước khi bắt đầu thử nghiệm, hãy đảm bảo bạn xác thực chính mình trên Dockerhub. Thực hiện lệnh sau.

 docker login


Lệnh này sẽ nhắc bạn cung cấp thông tin đăng nhập Dockerhub, bao gồm tên người dùng và mật khẩu của bạn.

Ảnh chụp màn hình đăng nhập docker thành công trong phiên bản EC2 "AnsibleServer"


Với điều này, bạn đã hoàn tất quá trình đăng nhập vào Docker và hiện đã sẵn sàng tiến hành thử nghiệm.

Bước 8: Kiểm tra môi trường Docker và Dockerfile

Sau khi hoàn tất đăng nhập thành công vào Dockerhub, bạn đã sẵn sàng bắt đầu thử nghiệm Dockerfile mà bạn đã chuẩn bị.


Thực hiện lệnh này để tạo hình ảnh docker.

 docker build -t hello:latest .


Tiếp theo, thực hiện lệnh tiếp theo để thiết lập thẻ hỗ trợ tải hình ảnh lên Dockerhub:

 docker tag hello:latest zufarexplainedit/hello:latest


Cuối cùng, tiến hành đẩy hình ảnh Docker lên Dockerhub thông qua việc thực hiện lệnh này.

 docker push zufarexplainedit/hello:latest


Làm theo các bước sau, điều hướng đến tài khoản Dockerhub của bạn để xác minh xem bạn có thể nhìn thấy hình ảnh mới hay không.

Ảnh chụp màn hình tài khoản Dockerhub có thêm hình ảnh mới


Bây giờ bạn sẽ thấy rằng hình ảnh đã được thêm vào một cách hiệu quả. Kết quả này xác nhận việc cài đặt thành công môi trường Docker và Dockerfile của bạn là chính xác.



[Học phần 6]: Ansible

Bây giờ chúng ta hãy định cấu hình Máy chủ Ansible trên phiên bản Máy chủ ảo EC2.


Bước 1: Tạo phiên bản Máy chủ ảo AWS EC2

Bạn cần một máy chủ ảo để chạy Ansible.


Làm theo hướng dẫn từ [Mô-đun 1]: Phần Máy chủ ảo AWS EC2 của hướng dẫn này để hoàn thành bước này và tạo phiên bản máy chủ ảo EC2 cho Ansible.

Đừng quên thêm thiết lập nhóm bảo mật. Nó cho phép AnsibleSSH hoạt động tương ứng trên cổng 808022 .


Sử dụng tên “AnsibleServer” để phân biệt phiên bản Máy chủ ảo EC2 của bạn.

Bạn có thể sử dụng lại nhóm bảo mật “CI_CD_Pipeline”“CI_CD_Pipeline_Key_Pair“ cho phiên bản EC2 “AnsibleServer” mới.


Bước 2: Kết nối với phiên bản Máy chủ ảo AWS EC2

Đi tới trang chủ Bảng điều khiển AWS → Bảng thông tin Bảng điều khiển quản lý EC2 → Phiên bản → AnsibleServer.


Sau đó nhấp vào nút “Kết nối” .

Ảnh chụp màn hình trang web AWS với con trỏ tới nút "Kết nối"


Sau đó bạn sẽ thấy trang web này. Bạn nên nhấp lại vào nút “Kết nối” .


Ảnh chụp màn hình trang web "Kết nối với phiên bản" của AWS với con trỏ tới nút "Kết nối"


Bây giờ bạn có thể thấy thiết bị đầu cuối trực tuyến phiên bản máy chủ ảo EC2.

Ảnh chụp màn hình thiết bị đầu cuối trực tuyến của phiên bản Máy chủ ảo AWS EC2


Bây giờ hãy cấu hình Ansible Server trên phiên bản máy chủ ảo EC2.

Bước 3: Thay đổi tên máy chủ của phiên bản Máy chủ ảo AWS EC2 “AnsibleServer”

Điều đầu tiên bạn cần làm khi muốn định cấu hình AnsibleServer trên phiên bản máy chủ ảo EC2 là thay đổi tên máy chủ của nó.


Hãy làm nó. Thực hiện lệnh này để mở tệp tên máy chủ:

 sudo vi /etc/hostname


Bạn sẽ thấy một cái gì đó như thế này:

Ảnh chụp màn hình phiên bản Máy chủ ảo AWS EC2 với tệp tên máy chủ


Thay thế tên máy chủ này bằng “ansible-server”. Sau đó, khởi động lại nó.

 sudo init 6 



Ảnh chụp màn hình thiết bị đầu cuối của phiên bản Máy chủ ảo AWS EC2 với con trỏ tới tên máy chủ


Bước 4: Thêm và định cấu hình người dùng mới trong phiên bản Máy chủ ảo AWS EC2 “AnsibleServer”

Bây giờ, hãy thêm người dùng ansible-admin mới vào phiên bản Máy chủ ảo AWS EC2.

Để làm điều đó sử dụng lệnh này:


 sudo useradd ansible-admin


Sau đó, đặt mật khẩu cho người dùng ansible-admin .

 sudo passwd ansible-admin


Ngoài ra, bạn cần định cấu hình đặc quyền của người dùng bằng cách chỉnh sửa tệp sudoers .

 sudo visudo


Thêm “ansible-admin ALL=(ALL) ALL” vào tệp sudoers này.

Ảnh chụp màn hình thiết bị đầu cuối của phiên bản Máy chủ ảo AWS EC2 với con trỏ tới đặc quyền quản trị viên


Ngoài ra, bạn cần chỉnh sửa tệp /etc/ssh/sshd_config để bật Mật khẩu xác thực.

 sudo vi /etc/ssh/sshd_config 


Ảnh chụp màn hình thiết bị đầu cuối của phiên bản Máy chủ ảo AWS EC2 với con trỏ tới cài đặt quản trị viên


Sau đó, bạn cần tải lại dịch vụ để xác nhận những thay đổi này.

 sudo service sshd reload


Kết quả của việc thực hiện lệnh này, bạn sẽ thấy:


Ảnh chụp màn hình của thiết bị đầu cuối phiên bản Máy chủ ảo AWS EC2 với con trỏ tới kết quả tải lại sshd


Bây giờ bạn có thể sử dụng lệnh này để tránh thêm sudo cho tất cả các lệnh tiếp theo.

 sudo su - ansible-admin


Bước 5: Tạo khóa trong phiên bản Máy chủ ảo AWS EC2

Bạn đang dự định quản lý thêm các máy chủ từ xa như phiên bản máy chủ ảo K8s EC2 trong bài viết này. Đó là lý do tại sao bạn cần thiết lập khóa SSH.

 ssh-keygen


Kết quả của việc thực hiện lệnh này, bạn sẽ thấy:

Ảnh chụp màn hình thiết bị đầu cuối của phiên bản Máy chủ ảo AWS EC2 có con trỏ tới kết quả ssh-keygen


Bây giờ các khóa SSH đã được tạo và sẵn sàng để sử dụng.

Bước 6: Cài đặt Ansible

Bây giờ bạn có thể cài đặt Ansible trên phiên bản máy chủ ảo EC2 “AnsibleServer” của mình.

Hãy làm nó.


Thực hiện lệnh này để cài đặt Ansible.

 sudo amazon-linux-extras install ansible2


Để xác minh Ansible, hãy sử dụng lệnh này:

 ansible --version


Kết quả của việc thực hiện lệnh này, bạn sẽ thấy:

Ảnh chụp màn hình của thiết bị đầu cuối phiên bản Máy chủ ảo AWS EC2 với con trỏ tới kết quả ansible cài đặt sudo yum


Bước 7: Cài đặt plugin “Xuất bản qua SSH” của Jenkins trên phiên bản JenkinsServer EC2

Khi Ansible được cài đặt trên phiên bản máy chủ ảo EC2 “AnsibleServer” của bạn, bạn có thể định cấu hình Jenkins để tích hợp nó với Ansible. Bạn cần cài đặt plugin “Xuất bản qua SSH” để tích hợp Jenkins với phiên bản Máy chủ ảo EC2 nơi Ansible được cài đặt và với các phiên bản Máy chủ ảo EC2 khác nơi cài đặt Kubernetes .


Đi tới “Bảng điều khiển” → “ Quản lý Jenkins”“Cấu hình hệ thống”“Các plugin có sẵn” .

Sau đó nhập “Xuất bản qua SSH” vào hộp tìm kiếm.


Ảnh chụp màn hình Jenkins được cài đặt trên Máy chủ ảo AWS EC2 với con trỏ tới trang web "Các plugin có sẵn"


Nhấp vào nút “Cài đặt mà không cần khởi động lại” . Chờ cho đến khi kết thúc quá trình tải xuống.


Ảnh chụp màn hình Jenkins được cài đặt trên Máy chủ ảo AWS EC2 với con trỏ tới trang web "Tiến trình tải xuống"



Giờ đây, plugin “Xuất bản qua SSH” đã được cài đặt trên phiên bản Máy chủ ảo Jenkins EC2.


Bước 8: Định cấu hình plugin “Xuất bản qua SSH” của Jenkins

Với việc cài đặt thành công plugin Apache Maven Jenkins, giờ đây bạn có thể sử dụng plugin này trong quy trình mà bạn đã tạo và cập nhật trong mô-đun 2 và 3.


Để làm đươc như vậy, hãy tuân theo những bước sau:


Đi tới “Bảng điều khiển““Quản lý Jenkins”“Cấu hình hệ thống”“Xuất bản qua SSH” .

Ảnh chụp màn hình thiết bị đầu cuối của phiên bản Máy chủ ảo AWS EC2 có plugin "Xuất bản qua SSH"


Nhập tất cả dữ liệu cần thiết như trên ảnh chụp màn hình, bao gồm tên máy chủ, tên người dùng và khóa riêng (hoặc mật khẩu nếu có).


Ảnh chụp màn hình thiết bị đầu cuối của phiên bản Máy chủ ảo AWS EC2 có plugin "Xuất bản qua SSH"


Sau đó nhấp vào nút “Áp dụng”“Lưu” .


Đến đây bạn đã hoàn tất việc định cấu hình plugin Jenkins “Xuất bản qua SSH” .


Tiếp theo, nhấp vào “Kiểm tra cấu hình” để xác thực rằng plugin đang hoạt động chính xác.



Ảnh chụp màn hình plugin "Xuất bản qua SSH" với nút "Kiểm tra cấu hình"


Ở phía bên trái, bạn có thể thấy trạng thái cấu hình plugin thử nghiệm là “Thành công”. Nó có nghĩa là cấu hình plugin là chính xác.


Bước 9: Tạo thư mục Docker mới trong AnsibleServer

Bạn cần tạo một thư mục mới trên phiên bản AnsibleServer EC2 nơi JAR của dự án sẽ được lưu trữ. Bình này sẽ được sử dụng để tạo hình ảnh Docker sau này.


Hãy bắt đầu.


Chuyển đến thư mục “/opt” trong phiên bản AnsibleServer EC2.

 cd /opt


Tạo một thư mục mới “docker” ở đó.

 sudo mkdir docker


Cấp đặc quyền cho thư mục “docker” này.

 sudo chown ansible-admin:ansible-admin docker


Bây giờ, hãy kiểm tra các đặc quyền của thư mục “docker” bằng cách thực hiện lệnh này.

 ll


Bạn có thể thấy rằng thư mục “docker” có thể truy cập được bằng người dùng “ansible-admin” .


Ảnh chụp màn hình thư mục "docker" trong phiên bản EC2 "AnsibleServer"


Bước 10: Tích hợp plugin Github “Xuất bản qua SSH” vào quy trình


Giờ đây, khi plugin Github “Xuất bản qua SSH” đã được cài đặt và định cấu hình, giờ đây bạn có thể tích hợp nó vào quy trình mà bạn đã tạo trong “[mô-đun 2]: Máy chủ Jenkins” để chuyển một tạo phẩm jar dự án từ “ JenkinsServer” sang “Máy chủ Ansible” .


Chà, để tích hợp plugin Github “Xuất bản qua SSH” vào quy trình, bạn cần làm theo các bước sau:


  1. Điều hướng đến “Bảng điều khiển“ → “CI_CD_Pipeline“ → “Cấu hình“ → “Hành động sau xây dựng”.
  2. Nhấp vào nút “Thêm hành động sau khi xây dựng” .
  3. Chọn tùy chọn “Gửi tạo phẩm xây dựng qua SSH” .
  4. Thêm “AnsibleServer” vào mục nhập “Name” trong phần “SSH Server” **.**
  5. Thêm “target/*.jar” vào đầu vào “Tệp nguồn” trong phần “Bộ chuyển” **.**
  6. Thêm “target/” vào mục nhập “Xóa tiền tố” trong phần “Bộ chuyển” **.**
  7. Thêm “//opt/docker/” vào đầu vào “Thư mục từ xa” trong phần “Bộ chuyển” **.**
  8. Hiện tại, chỉ cần đặt một chuỗi trống vào đầu vào 'Lệnh Exec' trong phần 'Bộ chuyển giao'.



Ảnh chụp màn hình phần "Gửi tạo phẩm xây dựng qua SSH" trong cấu hình đường dẫn


Cuối cùng, bạn nên nhấp vào nút “Áp dụng”“Lưu” để hoàn tất quá trình tích hợp plugin “Xuất bản qua SSH” với đường dẫn.


Bước 11: Kiểm tra plugin Github “Xuất bản qua SSH” được tích hợp vào quy trình

Giờ đây, bạn có thể sử dụng quy trình đã cập nhật của mình để chuyển tạo phẩm jar dự án từ “ JenkinsServer” sang “AnsibleServer” . Để làm điều đó, bạn cần nhấp vào nút “Xây dựng ngay” . Kết quả là bạn sẽ thấy kết quả công việc thành công trong lịch sử xây dựng.


Nếu bạn mở thiết bị đầu cuối AWS EC2 “AnsibleServer” của mình. Bạn có thể kiểm tra xem đường ống có hoạt động tốt không.

Chỉ cần sử dụng lệnh này.


 cd /opt/docker


Bằng cách này, bạn có thể thấy tạo phẩm JAR, cho biết quá trình xây dựng dự án của bạn thành công từ GitHub.

Ảnh chụp màn hình của thư mục /opt/docker với tạo phẩm jar dự án


Bước 12: Định cấu hình máy chủ Ansible

Khi bạn chạy Playbook Ansible, bạn chỉ định các máy chủ mà nó sẽ chạy trên đó. Bạn có thể làm điều này theo hai cách:


  1. Chỉ định máy chủ trực tiếp trong sổ tay: Trong sổ tay của mình, bạn có thể đặt tham số hosts thành danh sách địa chỉ IP hoặc tên máy chủ.
  2. Sử dụng tệp kiểm kê: Ansible cho phép bạn xác định danh sách máy chủ trong tệp kiểm kê và tham chiếu tệp này khi chạy playbook của bạn. Tệp kiểm kê mặc định là /etc/ansible/hosts .


Bằng cách chỉnh sửa /etc/ansible/hosts , bạn có thể dễ dàng quản lý các nhóm máy chủ mà không cần phải ghi địa chỉ IP của chúng mỗi khi bạn chạy playbook.


Hãy cùng tìm hiểu máy chủ lưu trữ phiên bản AnsibleServer EC2 bằng cách thực hiện lệnh sau.

 sudo ifconfig 


Ảnh chụp màn hình cài đặt giao diện mạng của phiên bản AnsibleServer EC2


Sau khi tìm ra máy chủ phiên bản AnsibleServer EC2, bạn có thể thêm nó vào tệp máy chủ Ansible bằng cách thực hiện lệnh sau.


 sudo vi /etc/ansible/hosts


Bạn cũng có thể thêm “[ansible]” làm tài liệu tham khảo

Ảnh chụp màn hình của tệp máy chủ Ansible


Nếu bạn đang quản lý một cụm máy chủ và muốn áp dụng một playbook cho tất cả chúng, thay vì chỉ định địa chỉ IP của từng máy chủ trong playbook, bạn có thể chỉ cần thêm tất cả các máy chủ vào một nhóm trong tệp kiểm kê rồi chỉ định nhóm trong vở kịch.


Bước 13: Định cấu hình xác thực SSH không mật khẩu thành localhost cho Ansible

Ansible được thiết kế để tự động hóa các tác vụ trên máy chủ từ xa. Xác thực SSH không mật khẩu cho phép Ansible kết nối với các máy chủ đó mà không cần nhập mật khẩu thủ công.

Thực hiện lệnh này để tạo kết nối an toàn từ máy tính của bạn đến một máy tính khác (như kết nối tại địa chỉ IP 172.31.34.41), sử dụng khóa SSH của người dùng ansible-admin.


 sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}


Trong trường hợp của tôi, nó trông như thế này.

 sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub [email protected] 


Ảnh chụp màn hình kết quả cài đặt xác thực ssh không mật khẩu thành công


Bây giờ bạn có thể thấy “Số khóa được thêm: 1” . Điều đó có nghĩa là quá trình cài đặt xác thực SSH không mật khẩu đã hoàn tất thành công.

Bước 14: Tạo Playbook Ansible mới cho các tác vụ Docker

Bây giờ Ansible đã được thiết lập xong và sẵn sàng hoạt động, bạn có thể tạo một Playbook Ansible mới cho quy trình của mình. Playbook này sẽ cho phép Ansible tạo và gửi hình ảnh Docker mới tới Dockerhub.

Đây là cách bạn có thể làm điều đó:


  1. Bắt đầu bằng cách tạo một tệp playbook Ansible mới. Chỉ cần sử dụng lệnh này.
 touch hello-app.yml


  1. Sau đó, chỉnh sửa tệp hello-app.yml mới tạo. Mở nó lên để chỉnh sửa bằng lệnh này.
 vi hello-app.yml


  1. Bên trong tập tin, gõ những nội dung sau đây.
 --- - hosts: ansible user: root tasks: - name: create docker image command: docker build -t hello:latest . args: chdir: /opt/docker - name: create tag to push image onto dockerhub command: docker tag hello:latest zufarexplainedit/hello:latest - name: push docker image onto dockerhub command: docker push zufarexplainedit/hello:latest

Playbook Ansible cho các tác vụ Docker đã sẵn sàng để sử dụng.

Bước 13: Kiểm tra Playbook Ansible với các tác vụ Docker

Với Ansible, Playbook Ansible, AnsibleServer và JenkinsServer đều được cấu hình đúng cách, đã đến lúc thử nghiệm playbook Ansible.


Điều hướng đến vị trí của playbook Ansible của bạn.

 cd /opt/docker


Sau đó, thực hiện lệnh sau.

 sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml


Sau khi hoàn thành, bạn sẽ thấy kết quả thực hiện thành công của Playbook Ansible của mình.

Ảnh chụp màn hình kết quả thực thi thành công của playbook ansible cho các tác vụ docker


Hơn nữa, hãy dành chút thời gian để truy cập tài khoản Dockerhub của bạn và xác minh xem hiện tại có hiển thị hình ảnh mới hay không.


Ảnh chụp màn hình tài khoản Dockerhub có thêm hình ảnh mới


Bạn sẽ thấy hình ảnh mới được thêm vào. Kết quả này xác nhận rằng Playbook Ansible của bạn là chính xác.


Bước 14: Tích hợp các tác vụ Ansible Docker vào quy trình

Giờ đây, khi plugin Github “Xuất bản qua SSH” , Ansible và Docker đã được cài đặt và định cấu hình, giờ đây bạn có thể tích hợp tất cả chúng vào quy trình mà bạn đã tạo trong “[mô-đun 2]: Máy chủ Jenkins” để chuyển tạo phẩm jar dự án từ “ JenkinsServer” đến “AnsibleServer” , sau đó xây dựng hình ảnh Docker mới từ dự án của bạn rồi đẩy hình ảnh Docker này lên Dockerhub.


Để đạt được nó, bạn cần làm theo các bước sau:

  1. Điều hướng đến “Bảng điều khiển“ → “CI_CD_Pipeline“ → “Định cấu hình“ → “Hành động sau xây dựng” → “Gửi tạo phẩm bản dựng qua SSH” .
  2. Thêm lệnh “sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml” vào đầu vào “Lệnh Exec” .


Ảnh chụp màn hình phần "Gửi tạo phẩm xây dựng qua SSH" trong cấu hình đường dẫn


Cuối cùng, hãy nhấp vào nút “Áp dụng”“Lưu” để hoàn tất việc tích hợp các tác vụ Ansible Docker với quy trình.

Bước 15: Kiểm tra “Playbook Ansible với các tác vụ Dockerđược tích hợp vào quy trình

Giờ đây, bạn có thể kiểm tra quy trình đã nâng cấp của mình để chuyển liền mạch tạo phẩm jar dự án từ “ JenkinsServer” sang “AnsibleServer” , sau đó tạo hình ảnh Docker mới từ dự án của bạn rồi đẩy hình ảnh Docker này lên Dockerhub. Để làm điều đó, bạn cần nhấp vào nút “Xây dựng ngay” . Kết quả là bạn sẽ thấy kết quả công việc thành công trong lịch sử xây dựng.


Hơn nữa, hãy dành chút thời gian để truy cập tài khoản Dockerhub của bạn và xác minh xem hiện tại có hiển thị hình ảnh mới hay không.


Ảnh chụp màn hình tài khoản Dockerhub có thêm hình ảnh mới


Bạn sẽ thấy hình ảnh mới được thêm vào. Kết quả này xác nhận rằng Playbook Ansible của bạn với các tác vụ Docker đã được tích hợp thành công vào quy trình.


[Học phần 7]: Kubernetes

Bây giờ hãy cấu hình K8 trên phiên bản EC2. Bạn sẽ tạo một phiên bản EC2 mới và cài đặt công cụ dòng lệnh kubectl để tương tác sâu hơn với cụm Kubernetes .


Bước 1: Khởi chạy phiên bản Máy chủ ảo AWS EC2

Sử dụng hướng dẫn từ phần “ Khởi chạy phiên bản Máy chủ ảo AWS EC2” của hướng dẫn này để hoàn thành bước này.


Đừng quên thêm thiết lập nhóm bảo mật. Nó cho phép tất cả các công cụSSH hoạt động tương ứng trên cổng 808022 .


Sử dụng tên “K8sServer” để phân biệt phiên bản Máy chủ ảo EC2 của bạn.

Bạn có thể sử dụng lại nhóm bảo mật “CI_CD_Pipeline”“CI_CD_Pipeline_Key_Pair“ cho phiên bản EC2 “K8sServer” mới.


Bước 2: Kết nối với phiên bản Máy chủ ảo AWS EC2

Nhấp vào nút “Kết nối”.

Ảnh chụp màn hình trang web AWS với con trỏ tới nút "Kết nối"


Bây giờ bạn có thể thấy thiết bị đầu cuối trực tuyến của phiên bản Máy chủ ảo EC2.

Ảnh chụp màn hình thiết bị đầu cuối trực tuyến của phiên bản Máy chủ ảo AWS EC2


Bước 3: Thay đổi tên máy chủ của phiên bản Máy chủ ảo AWS EC2 “KubernetesServer”

Điều đầu tiên bạn cần làm khi muốn định cấu hình KuberenetesServer trên phiên bản máy chủ ảo EC2 là thay đổi tên máy chủ của nó.


Hãy làm nó. Thực hiện lệnh này để mở tệp tên máy chủ:

 sudo vi /etc/hostname


Bạn sẽ thấy một cái gì đó như thế này.

Ảnh chụp màn hình phiên bản Máy chủ ảo AWS EC2 với tệp tên máy chủ


Thay thế tên máy chủ này bằng “kubernetes-server” rồi khởi động lại nó.

 sudo init 6


Tên máy chủ của bạn sẽ được thay đổi.

Ảnh chụp màn hình thiết bị đầu cuối của phiên bản Máy chủ ảo AWS EC2 với con trỏ tới tên máy chủ


Bước 4: Kiểm tra phiên bản AWS CLI

Sử dụng lệnh này để kiểm tra phiên bản AWS .

 aws --version


Bằng cách này, bạn có thể xem phiên bản aws-cli hiện tại của mình.

Ảnh chụp màn hình của thiết bị đầu cuối trực tuyến phiên bản Máy chủ ảo AWS EC2 với kết quả lệnh phiên bản aws


Nếu bạn có thể thấy phiên bản aws-cli/1.18 , bạn nên tải xuống phiên bản mới nhất.


Bước 5: Cập nhật AWS CLI

Bây giờ, khi bạn phát hiện ra rằng mình có phiên bản aws-cli cũ trên phiên bản EC2, bạn cần cập nhật nó. Để làm được điều đó, hãy truy cập AWS → Tài liệu → Giao diện dòng lệnh AWS → Hướng dẫn sử dụng cho Phiên bản 2.


Ảnh chụp màn hình trang web phiên bản Máy chủ ảo AWS EC2 với Hướng dẫn sử dụng dành cho Phiên bản 2


Sao chép-dán lệnh cuộn tròn .


Đầu tiên, thực hiện lệnh này để tải xuống awscli phiên bản 2.

 curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

Đợi quá trình tải xuống bắt đầu.


Bạn sẽ thấy một cái gì đó như thế này.

Ảnh chụp màn hình thiết bị đầu cuối trực tuyến phiên bản Máy chủ ảo AWS EC2 với kết quả tải xuống aws phiên bản 2


Thứ hai, bạn cần thực thi lệnh này để giải nén kho lưu trữ awscli phiên bản 2.

 unzip awscliv2.zip


Thứ ba, bạn nên thực hiện lệnh này để cài đặt awscli phiên bản 2.

 sudo ./aws/install


Sau đó, tải lại thiết bị đầu cuối trực tuyến phiên bản Máy chủ ảo Kubernetes EC2.


Tiếp theo, sử dụng lệnh này để kiểm tra phiên bản AWS

 aws --version


Bạn có thể thấy aws cli có aws-cli/2.

Ảnh chụp màn hình của thiết bị đầu cuối trực tuyến phiên bản Máy chủ ảo AWS EC2 với kết quả coommand phiên bản aws


Bước 6: Cài đặt kubectl

Kubectl là một công cụ dòng lệnh cơ bản để tương tác với bất kỳ cụm Kubernetes nào, bất kể cơ sở hạ tầng cơ bản. Nó cho phép bạn quản lý tài nguyên, triển khai ứng dụng, định cấu hình mạng, nhật ký truy cập và thực hiện nhiều tác vụ khác trong cụm Kubernetes.


Bây giờ bạn cần cài đặt công cụ dòng lệnh kubectl để tương tác thêm với cụm Kubernetes. Để làm được điều đó, bạn cần truy cập AWSTài liệuAmazon EKSHướng dẫn sử dụngCài đặt hoặc cập nhật kubectlLinux .


Hoặc chỉ cần nhấp vào liên kết https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html .


Ảnh chụp màn hình Hướng dẫn sử dụng AWS EKS



Đầu tiên, thực hiện lệnh này để tải xuống kubectl.

 curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.27.1/2023-04-19/bin/linux/amd64/kubectl


Đợi quá trình tải xuống.


Bạn sẽ thấy một cái gì đó như thế này.

Ảnh chụp màn hình thiết bị đầu cuối trực tuyến của phiên bản Máy chủ ảo AWS EC2 với kết quả tải xuống kubectl


Cấp quyền cho kubectl.

 chmod +x kubectl


Di chuyển kubectl vào thư mục /usr/local/bin.

 sudo mv kubectl /usr/local/bin


Kiểm tra phiên bản kubectl.

 kubectl version --output=yaml


Bước 7: Cài đặt eksctl

Eksctl là một công cụ dòng lệnh khác được thiết kế riêng cho dịch vụ Amazon EKS. Eksctl có thể được sử dụng để tạo cụm AWS EKS, quản lý nhóm nút và thực hiện các tác vụ dành riêng cho EKS, chẳng hạn như tích hợp với vai trò IAM và các dịch vụ AWS khác bằng cách loại bỏ phần lớn việc quản lý và thiết lập cơ sở hạ tầng AWS.


Thực hiện lệnh tải kubectl.

 curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp


Di chuyển eksctl vào thư mục /usr/local/bin.

 sudo mv /tmp/eksctl /usr/local/bin


Kiểm tra phiên bản của eksctl.

 eksctl version


Bạn nên xem phiên bản

Ảnh chụp màn hình thiết bị đầu cuối trực tuyến phiên bản Máy chủ ảo AWS EC2 với phiên bản eksctl


Bước 8: Tạo vai trò IAM cho eksctl

Bạn cần tạo một vai trò IAM và gắn nó vào phiên bản EC2 “KubernetesServer” của mình.

Để làm được điều đó bạn cần tìm EC2 trong hộp tìm kiếm.


Chọn Máy chủ ảo EC2 bằng cách nhấp vào liên kết https://us-east-1.console.aws.amazon.com/ec2/ .

Ảnh chụp màn hình trang web AWS với con trỏ tới "IAM"


Đi tới Bảng điều khiển IAMVai trò .

Ảnh chụp màn hình trang web AWS với con trỏ tới "Vai trò IAM"


Nhấp vào nút “Tạo vai trò” trên trang web vai trò IAM .


Sau đó chọn “Dịch vụ AWS”, “EC2”. Và nhấp vào nút “Tiếp theo” .

Ảnh chụp màn hình trang web AWS với con trỏ tới "Cấu hình vai trò IAM"


Sau đó, tìm “AmazonEC2FullAccess” , “AmazonEC2FullAccess“ , “IAMFullAccess“ , “AWSCloudFormationFullAccess“ trong hộp tìm kiếm rồi nhấp vào nút “Thêm quyền” .


Và sau đó nhấp vào nút “Tiếp theo” .

Ảnh chụp màn hình trang web AWS với con trỏ tới quyền AdministratorAccess

Sau đó nhập “Eksctl_Role” vào ô nhập “Tên vai trò” .

Và nhấp vào nút “Tạo vai trò” .

Ảnh chụp màn hình trang web AWS với con trỏ tới cấu hình vai trò quyền


Vai trò cuối cùng đã được tạo.


Bước 9: Kết nối vai trò IAM với eksctl

Truy cập trang web phiên bản AWS EC2. Chọn “KuberbetesServer”. Sau đó nhấp vào “Hành động”“Bảo mật”“Sửa đổi vai trò IAM”.


Ảnh chụp màn hình trang web AWS với con trỏ tới nút KubernetesServer Security



Chọn “Eksctl_Role” rồi nhấp vào nút “Cập nhật vai trò IAM” .


Ảnh chụp màn hình trang web AWS với con trỏ tới vai trò IAM Elsctl_Role


Bây giờ Vai trò IAM của bạn đã được kết nối với công cụ “EKS_Server” và eksctl của bạn.

Bước 10: Tạo cụm eksctl


Cụm Amazon EKS (Dịch vụ Kubernetes đàn hồi) là môi trường Kubernetes được quản lý trên AWS, tự động hóa các tác vụ cơ sở hạ tầng phức tạp như thiết lập, thay đổi quy mô và bảo trì. Điều này rất cần thiết vì nó cung cấp nền tảng hiệu quả, an toàn và được tối ưu hóa cho AWS để triển khai, quản lý và mở rộng quy mô các ứng dụng trong bộ chứa, hợp lý hóa các hoạt động và giúp nhà phát triển tập trung vào mã hóa thay vì quản lý cơ sở hạ tầng cơ bản.


Bây giờ là lúc thiết lập cụm EKS của bạn.


Để đạt được điều này, hãy làm theo các bước sau:


  1. Sửa đổi lệnh sau với thông tin cụ thể của bạn.
 eksctl create cluster --name cluster-name \ --region region-name \ --node-type instance-type \ --nodes-min 2 \ --nodes-max 2 \ --zones <AZ-1>,<AZ-2>


Ví dụ, trong trường hợp của tôi, nó trông như thế này.

 eksctl create cluster --name zufarexplainedit \ --region eu-north-1 \ --node-type t3.micro


  1. Thực hiện lệnh đã sửa đổi và kiên nhẫn chờ quá trình tạo cụm hoàn tất. Bạn sẽ nhận thấy trạng thái cụm EKS được biểu thị là "đang tạo" trên trang web AWS CloudFormation.


Ảnh chụp màn hình trang web AWS với con trỏ tới AWS CloudFormation nơi bạn có thể thấy trạng thái "tạo" cụm EKS


Quy trình tạo cụm thường mất khoảng 20 phút. Sau khi hoàn thành, thiết bị đầu cuối sẽ hiển thị kết quả của quá trình.


Ảnh chụp màn hình trang web AWS với con trỏ tới thiết bị đầu cuối AWS EC2 nơi bạn có thể xem kết quả tạo cụm EKS


Hơn nữa, bạn có thể xác minh trạng thái tạo cụm EKS thành công trên trang web AWS CloudFormation.


Ảnh chụp màn hình trang web AWS với con trỏ tới AWS CloudFormation nơi bạn có thể xem kết quả tạo cụm EKS


Bước 11: Tạo tệp yaml triển khai Kubernetes

Tệp YAML triển khai Kubernetes là tập lệnh cấu hình được viết ở định dạng YAML nhằm xác định cách quản lý và duy trì một ứng dụng hoặc dịch vụ cụ thể trong cụm Kubernetes. Nó gói gọn các hướng dẫn để sắp xếp việc triển khai, mở rộng quy mô, cập nhật và giám sát các vùng chứa đang chạy ứng dụng. Tệp này bao gồm các chi tiết như hình ảnh vùng chứa, số lượng bản sao mong muốn, giới hạn tài nguyên, biến môi trường, cài đặt mạng, v.v. Khi được áp dụng cho cụm Kubernetes, tệp YAML triển khai đảm bảo trạng thái mong muốn của ứng dụng, tự động quản lý việc tạo, mở rộng quy mô và khôi phục các vùng chứa để duy trì mức độ sẵn có và độ tin cậy mong muốn.


Bây giờ, khi cụm Kubernetes, eksctl, kubectl đã được cài đặt và định cấu hình, bạn có thể tạo tệp yaml Triển khai Kubernetes.


Bạn có thể làm điều đó bằng cách thực hiện lệnh sau.

 touch hello-app-deployment.yaml


Sau đó, chỉnh sửa tập tin này bằng cách thực hiện lệnh sau.

 vi hello-app-deployment.yaml


Thêm nội dung này vào hello-app-deployment.yaml.

 apiVersion: apps/v1 kind: Deployment metadata: name: zufarexplainedit-hello-app labels: app: hello-app spec: replicas: 2 selector: matchLabels: app: hello-app template: metadata: labels: app: hello-app spec: containers: - name: hello-app image: zufarexplainedit/hello imagePullPolicy: Always ports: - containerPort: 8080 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1


Bây giờ hello-app-deployment.yaml đã được tạo và sẵn sàng để sử dụng.


Bước 12: Tạo tệp yaml của Dịch vụ Kubernetes

Tệp YAML của Dịch vụ Kubernetes là tập lệnh cấu hình được viết ở định dạng YAML nhằm xác định mức độ trừu tượng hóa mạng cho một tập hợp các nhóm, cho phép chúng được truy cập nhất quán trong cụm Kubernetes. Tệp này phác thảo cách dịch vụ sẽ được phát hiện, truy cập và cân bằng tải bởi các dịch vụ khác hoặc máy khách bên ngoài. Nó bao gồm các thông số kỹ thuật như loại dịch vụ (ClusterIP, NodePort, LoadBalancer), số cổng, bộ chọn để xác định nhóm, v.v. Khi được áp dụng cho cụm Kubernetes, tệp Service YAML sẽ tạo một cổng và IP ảo định tuyến lưu lượng truy cập đến các nhóm thích hợp, trừu tượng hóa các thay đổi của nhóm cơ bản và cung cấp điểm cuối ổn định để liên lạc, cho phép kết nối liền mạch và mở rộng quy mô linh hoạt.


Khi Kubernetes cluster, eksctl, kubectl được cài đặt và cấu hình, bạn có thể tạo tệp yaml của Kubernetes Service.


Để làm điều đó, bạn cần tạo tệp yaml Dịch vụ Kubernetes bằng cách thực hiện lệnh sau.

 touch hello-app-service.yaml


Sau đó, chỉnh sửa tập tin này bằng cách thực hiện lệnh sau.

 vi hello-app-service.yaml


Thêm nội dung này vào hello-app-deployment.yaml.

 apiVersion: v1 kind: Service metadata: name: zufarexplainedit-hello-app-service labels: app: hello-app spec: selector: app: hello-app ports: - port: 8080 targetPort: 8080 type: LoadBalancer

Bây giờ hello-app-service.yaml đã được tạo và sẵn sàng để sử dụng.


Bước 13: Kiểm tra cụm Kubernetes bằng kubectl

Khi cụm Kubernetes EKS đã được cài đặt và định cấu hình thành công cũng như các tệp triển khai và dịch vụ Kubernetes của bạn đã sẵn sàng, đã đến lúc thử nghiệm mọi thứ bằng lệnh kubectl.


  1. Áp dụng triển khai.

    Sử dụng lệnh sau để áp dụng cấu hình triển khai.

 kubectl apply -f hello-app-deployment.yaml

Điều này sẽ tạo ra một quá trình triển khai với số lượng bản sao được chỉ định và chiến lược cập nhật luân phiên, đảm bảo tính khả dụng và khả năng quản lý của ứng dụng của bạn.


2. Áp dụng dịch vụ.

Tiếp theo, áp dụng cấu hình dịch vụ.

 kubectl apply -f hello-app-service.yaml

Thao tác này sẽ thiết lập dịch vụ loại LoadBalancer, hiển thị ứng dụng của bạn trên internet.

Lưu ý rằng có thể mất một chút thời gian để LoadBalancer được cấp phép và nhận địa chỉ IP bên ngoài.


  1. Kiểm tra trạng thái LoadBalancer.

    Theo dõi trạng thái dịch vụ của bạn bằng cách sử dụng.

 kubectl get service zufarexplainedit-hello-app-service

Khi một IP bên ngoài được chỉ định, bạn gần như đã sẵn sàng truy cập vào ứng dụng của mình.


  1. Truy cập ứng dụng của bạn.

    Sử dụng trình duyệt web, nhập địa chỉ IP bên ngoài được chỉ định theo sau: 8080. Sau một lát, trang sẽ tải và hiển thị thông báo "HelloWorld". Hãy nhớ rằng quá trình tải lần đầu có thể mất vài giây.


    Ảnh chụp màn hình trang web ứng dụng Hello


Dọn dẹp bằng lệnh kubectl

Khi cần dọn dẹp tài nguyên trong môi trường Kubernetes, bạn có thể sử dụng các lệnh kubectl sau để loại bỏ các hoạt động triển khai, nhóm và dịch vụ một cách hiệu quả.


1. Xóa tất cả triển khai .

Để xóa tất cả các triển khai, bạn có thể sử dụng lệnh sau.

 kubectl delete deployments --all

Hành động này đảm bảo rằng không còn phiên bản triển khai đang hoạt động nào trong cụm của bạn.


2. Xóa tất cả các nhóm .

Nếu bạn cần xóa tất cả các nhóm, cho dù chúng có được quản lý bởi quá trình triển khai hay không, bạn có thể sử dụng lệnh sau.

 kubectl delete pods --all

Việc xóa nhóm có thể giúp đặt lại trạng thái cụm của bạn hoặc chuẩn bị cho quá trình triển khai mới.


3. Xóa tất cả dịch vụ .

Để dọn dẹp các dịch vụ hiển thị ứng dụng của bạn trên mạng, bạn có thể sử dụng lệnh sau.

 kubectl delete services --all

Việc xóa dịch vụ có thể dẫn đến thời gian ngừng hoạt động, vì vậy hãy cân nhắc các tác động trước khi tiếp tục.

Xóa cụm Amazon EKS

Để xóa tất cả tài nguyên được liên kết với cụm Amazon EKS được chỉ định được tạo bằng eksctl , bao gồm nút công nhân, thành phần mạng và các tài nguyên khác, bạn có thể sử dụng lệnh sau.

 eksctl delete cluster --name {your cluster name} --region {your region name}

Đối với tôi nó là.

 eksctl delete cluster --name zufarexplainedit --region eu-north-1

Hãy đảm bảo bạn chắc chắn về việc dừng cụm vì hành động này không thể đảo ngược và sẽ dẫn đến mất dữ liệu.



Bước 14: Thêm và định cấu hình người dùng mới trong phiên bản Máy chủ ảo AWS EC2 “KubernetesServer”

Bây giờ, hãy thêm người dùng ansible-admin mới vào phiên bản Máy chủ ảo AWS EC2 “KubernetesServer” .


Để làm điều đó sử dụng lệnh này.

 sudo useradd ansible-admin


Sau đó, đặt mật khẩu cho người dùng ansible-admin .

 sudo passwd ansible-admin


Ngoài ra, bạn cần định cấu hình đặc quyền của người dùng bằng cách chỉnh sửa tệp sudoers .

 sudo visudo


Thêm “ansible-admin ALL=(ALL) ALL” vào tệp sudoers này.

Ảnh chụp màn hình thiết bị đầu cuối của phiên bản Máy chủ ảo AWS EC2 với con trỏ tới đặc quyền quản trị viên


Ngoài ra, bạn cần chỉnh sửa tệp /etc/ssh/sshd_config để bật Mật khẩu xác thực.

 sudo vi /etc/ssh/sshd_config 


Ảnh chụp màn hình thiết bị đầu cuối của phiên bản Máy chủ ảo AWS EC2 với con trỏ tới cài đặt quản trị viên


Sau đó, bạn cần tải lại dịch vụ để thực hiện những thay đổi này.

 sudo service sshd reload


Kết quả của việc thực hiện lệnh này, bạn sẽ thấy:

Ảnh chụp màn hình của thiết bị đầu cuối phiên bản Máy chủ ảo AWS EC2 với con trỏ tới kết quả tải lại sshd


Bây giờ bạn có thể sử dụng lệnh này để tránh thêm sudo cho tất cả các lệnh tiếp theo.

 sudo su - ansible-admin


Bước 15: Tạo khóa trong phiên bản Máy chủ ảo AWS EC2

Bạn đang dự định quản lý thêm các máy chủ từ xa như phiên bản máy chủ ảo K8s EC2 trong bài viết này. Đó là lý do tại sao bạn cần thiết lập khóa SSH.


 ssh-keygen


Kết quả của việc thực hiện lệnh này, bạn sẽ thấy:

Ảnh chụp màn hình thiết bị đầu cuối của phiên bản Máy chủ ảo AWS EC2 có con trỏ tới kết quả ssh-keygen


Bây giờ các khóa SSH đã được tạo và sẵn sàng để sử dụng.

Bước 16: Định cấu hình xác thực SSH không mật khẩu thành localhost cho Ansible

Ansible được thiết kế để tự động hóa các tác vụ trên máy chủ từ xa. Xác thực SSH không mật khẩu cho phép Ansible kết nối với các máy chủ đó mà không cần nhập mật khẩu thủ công.

Thực hiện lệnh này để tạo kết nối an toàn từ máy tính của bạn đến một máy tính khác (như kết nối tại địa chỉ IP 172.31.34.41), sử dụng khóa SSH của người dùng ansible-admin.


 sudo ssh-copy-id -i /home/{your user name}/.ssh/id_rsa.pub {your user name}@{your host address}


Trong trường hợp của tôi, nó trông như thế này.

 sudo ssh-copy-id -i /home/ansible-admin/.ssh/id_rsa.pub [email protected] 


Ảnh chụp màn hình kết quả cài đặt xác thực ssh không mật khẩu thành công


Bây giờ bạn có thể thấy “Số khóa được thêm: 1” . Điều đó có nghĩa là quá trình cài đặt xác thực SSH không mật khẩu đã hoàn tất thành công.


Bước 17: Định cấu hình máy chủ Ansible trong phiên bản AnsibleServer EC2

Khi bạn chạy Playbook Ansible, bạn chỉ định các máy chủ mà nó sẽ chạy trên đó. Trong bước này, bạn cần chỉ định máy chủ phiên bản KubernetesServer EC2. Để làm điều đó, bạn cần lặp lại các bước tương tự mà bạn đã thực hiện trong “ [Học phần 6]: Ansible”.


Hãy cùng tìm hiểu máy chủ phiên bản KubernetesServer EC2 bằng cách thực hiện lệnh sau.

 sudo ifconfig 


Ảnh chụp màn hình của tệp "ifconfig"


Sau khi tìm thấy máy chủ phiên bản KubernetesServer EC2, bạn có thể thêm nó vào tệp máy chủ Ansible bằng cách thực hiện lệnh sau.

 sudo vi /etc/ansible/hosts 


Ảnh chụp màn hình của tệp "máy chủ" với máy chủ ansible và kubernetes


Bạn cũng có thể thêm “[kubernetes]” làm tài liệu tham khảo

Bước 18: Tạo Playbook Ansible mới cho các tác vụ Kubernetes

Bây giờ Kubernetes đã hoàn tất thiết lập và sẵn sàng hoạt động, bạn có thể tạo cẩm nang Ansible mới với các nhiệm vụ Kubernetes cho quy trình của mình. Cẩm nang này sẽ cho phép Ansible chạy ứng dụng của bạn trên cụm Kubernetes bằng các lệnh kubectl.


Đây là cách bạn có thể làm điều đó:


  1. Bắt đầu bằng cách tạo một tệp playbook Ansible mới. Chỉ cần sử dụng lệnh này.
 touch kubernetes-hello-app.yml


  1. Sau đó, chỉnh sửa tệp hello-app.yml mới tạo. Mở nó lên để chỉnh sửa bằng lệnh này.
 vi kubernetes-hello-app.yml


  1. Bên trong tập tin, gõ như sau:
 --- - hosts: kubernetes tasks: - name: deploy regapp on kubernetes command: kubectl apply -f hello-app-deployment.yaml - name: create service for regapp command: kubectl apply -f hello-app-service.yaml - name: update deployment with new pods if image updated in docker hub command: kubectl rollout restart deployment.apps/zufarexplainedit-hello-app

Playbook Ansible cho các tác vụ Kubernetes đã sẵn sàng để sử dụng.


Bước 19: Tích hợp Playbook Ansible mới cho các tác vụ Kubernetes với Jenkins

Giờ đây, playbook Kubernetes, Ansible và Ansible cho các tác vụ Kubernetes đều đã được thiết lập và sẵn sàng hoạt động, bạn có thể tích hợp nó với Jenkins.


  1. Đi tới JenkinsServer → bảng điều khiển Jenkins → Mục mới.

  2. Tạo dự án Jenkins Freestyle mới với tên “CD-Job”.


    Ảnh chụp màn hình dự án tự do mới của Jenkins "CD-Job"


  3. Nhấp vào nút “OK”.

  4. Chuyển đến phần “Hành động sau xây dựng”.

  5. Nhấp vào nút “Thêm hành động sau khi xây dựng”.

  6. Chọn tùy chọn “Gửi tạo phẩm xây dựng qua SSH”.

  7. Chọn “AnsibleServer” làm Máy chủ SSH.

  8. Thêm lệnh này vào đầu vào “lệnh thực thi”.


 sudo -u ansible-admin ansible-playbook /opt/docker/kubernetes-hello-app.yml


  1. Nhấp vào nút “Áp dụng” và “Lưu”.

  2. Đi tới bảng điều khiển Jenkins → “CI_CD_Pipeline” → Định cấu hình → phần “Hành động sau xây dựng”.

  3. Nhấp vào nút “Thêm hành động sau khi xây dựng”.

  4. Chọn tùy chọn “Xây dựng các dự án khác”.

  5. Đi tới phần “Xây dựng các dự án khác”.

  6. Chọn tùy chọn “Chỉ kích hoạt nếu bản dựng ổn định”.

  7. Thêm “CD-Job” vào đầu vào “Dự án xây dựng”.



    Ảnh chụp màn hình phần "Xây dựng các dự án khác"


  8. Nhấp vào nút “Áp dụng” và “Lưu”.


Bây giờ bạn có thể coi như đường ống đã hoàn tất và sẵn sàng để sử dụng.


Bước 20: Kiểm tra phiên bản đường ống cuối cùng

Bây giờ là lúc đưa phiên bản quy trình cuối cùng vào thử nghiệm.


Điều hướng đến Jenkins → bảng điều khiển Jenkins → "CI_CD_Pipeline".


Nhấp vào nút "Xây dựng ngay".


Để xem kết quả, hãy xem lại nhật ký bảng điều khiển bản dựng.


Ảnh chụp màn hình nhật ký của bảng điều khiển xây dựng


Bạn sẽ nhận thấy rằng "CD-Job" đã được kích hoạt trong nhật ký bảng điều khiển bản dựng và trạng thái cuối cùng được đánh dấu là THÀNH CÔNG.

4

Hơn nữa, bạn có thể đến Dockerhub để xác nhận việc bổ sung hình ảnh Docker mới.

Và cuối cùng, bạn có thể truy cập ứng dụng của mình bằng trình duyệt web. Nhập địa chỉ IP bên ngoài được chỉ định theo sau là ":8080". Sau một lát, trang sẽ tải và hiển thị thông báo "HelloWorld".


Phần kết luận

Bạn đã hoàn thành tốt việc thiết lập quy trình CI/CD hiện đại này!

Bạn đã làm một công việc tuyệt vời và bạn là một anh hùng thực sự!


Cảm ơn tất cả nỗ lực của bạn!




Giới thiệu về tác giả

Zufar Sunagatov là một kỹ sư phần mềm cao cấp giàu kinh nghiệm, đam mê thiết kế các hệ thống phần mềm hiện đại.


Zufar Sunagatov