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.
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 Maven và Jenkins . 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 //aws.amazon.com.
Nhấp vào 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 //console.aws.amazon.com/console/home. Nhấp vào 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.
Chọn Máy chủ ảo EC2 bằng cách nhấp vào Dịch vụ EC2 .
Nhấp vào 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ẻ” .
Cung cấp tên cho phiên bản Máy chủ ảo AWS EC2 mới trong phần “Tên” .
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)" .
Để chơi MIỄN PHÍ với máy chủ ảo:
Chọn hệ điều hành cho máy chủ ảo của bạn - Amazon Linux .
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í .
Bước 6: Cấu hình phần “Instance type”
Đi 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) .
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ớ" .
Để 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 .
Bước 8: Cấu hình phần “Cài đặt mạng“
Chuyển đến 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,
Nhấp vào nút “Tạo nhóm bảo mật” .
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” .
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.
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)” .
Tạo một cặp khóa mới nếu bạn chưa tạo.
Nếu bạn chưa tạo “cặp khóa” :
Nhấp vào nút “Tạo cặp khóa mới” .
Đặt tên cho cặp khóa mới của bạn trong phần “Tên cặp khóa” .
Chọn loại cặp khóa RSA hoặc ED25519 . Tôi chọn loại RSA .
Chọn định dạng tệp khóa riêng. Lựa chọn .pem và .ppk . Tôi chọn định dạng .pem .
Nhấp vào nút “Tạo cặp khóa” .
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” .
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.
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” .
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 Jenkins và SSH hoạt động tương ứng trên cổng 8080 và 22 .
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” và “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 AWS → Bảng thông tin Bảng điều khiển quản lý EC2 → Phiên bản.
Sau đó, bạn nên chọn JenkinsServer và sau đó nhấp vào 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” .
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.
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:
Truy cập tải xuống Jenkins.
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 LTS.
Bạn sẽ thấy trang web này.
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.
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.
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ế.
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:
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.
//<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.
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.
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ậ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” .
Sau đó cung cấp Mô tả của đường dẫn.
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ã đượ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 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.
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” .
Bước 4: Tìm plugin Github Jenkins
Nhấp vào nút “Các plugin có sẵn” .
Tìm hộp Tìm kiếm 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” .
Đợi quá trình tải xuống plugin Github kết thúc.
Đú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”.
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” .
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.
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” và “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.
Bạn có thể sử dụng dự án của tôi với URL Kho lưu trữ tiếp theo: .
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” và “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.
Mở bản dựng đầu tiên từ lịch sử bản dự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.
[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” .
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 .
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
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.
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:
Điều hướng đến “Bảng điều khiển“→ “Quản lý Jenkins“ → “Quản lý plugin“ → “Có sẵn”.
Trong hộp tìm kiếm, nhập “Maven” .
Chọn plugin “Tích hợp 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” .
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:
Đ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”
Nhấp vào nút “Thêm JDK”.
Bỏ chọn “Cài đặt tự động”.
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ấp vào nút “Áp dụng” và “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:
Đ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”.
Nhấp vào nút “Thêm bước xây dựng” .
Chọn tùy chọn “Gọi các mục tiêu Maven cấp cao nhất” .
Chọn “Apache-Maven” làm “Phiên bản Maven”.
Thêm lệnh “gói sạch” vào đầu vào “Mục tiêu” .
Nhấp vào nút “Nâng cao“ .
Thêm “pom.xml” vào đầu vào “POM” .
Cuối cùng, bạn nên nhấp vào nút “Áp dụng” và “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”.
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.
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.
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.
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.
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.
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.
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 Ansible và SSH hoạt động tương ứng trên cổng 8080 và 22 .
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” và “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” .
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” .
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.
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:
Thay thế tên máy chủ này bằng “ansible-server”. Sau đó, khởi động lại nó.
sudo init 6
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.
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:
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:
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:
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ấ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.
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ậ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ó).
Sau đó nhấp vào nút “Áp dụng” và “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.
Ở 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” .
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:
Đ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”.
Nhấp vào nút “Thêm hành động sau khi xây dựng” .
Chọn tùy chọn “Gửi tạo phẩm xây dựng qua SSH” .
Thêm “AnsibleServer” vào mục nhập “Name” trong phần “SSH Server” **.**
Thêm “target/*.jar” vào đầu vào “Tệp nguồn” trong phần “Bộ chuyển” **.**
Thêm “target/” vào mục nhập “Xóa tiền tố” trong phần “Bộ chuyển” **.**
Thêm “//opt/docker/” vào đầu vào “Thư mục từ xa” trong phần “Bộ chuyển” **.**
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'.
Cuối cùng, bạn nên nhấp vào nút “Áp dụng” và “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.
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:
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ủ.
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
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
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}
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 đó:
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
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.
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.
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.
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:
Đ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” .
Thêm lệnh “sudo -u ansible-admin ansible-playbook /opt/docker/hello-app.yml” vào đầu vào “Lệnh Exec” .
Cuối cùng, hãy nhấp vào nút “Áp dụng” và “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.
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ụ và SSH hoạt động tương ứng trên cổng 8080 và 22 .
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” và “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”.
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.
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.
Thay thế tên máy chủ này bằng “kubernetes-server” rồi khởi động lại nó.
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.
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.
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.
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.
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 AWS → Tài liệu → AmazonEKS → Hướng dẫnsử dụng → Cài đặt hoặc cập nhậtkubectl → Linux .
Hoặc chỉ cần nhấp vào liên kết .
Đầu tiên, thực hiện lệnh này để tải xuống kubectl.
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 "//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
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 .
Đi tới Bảng điều khiểnIAM → Vai trò .
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” .
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” .
Sau đó nhập “Eksctl_Role” vào ô nhập “Tên vai trò” .
Và nhấp vào nút “Tạo vai trò” .
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”.
Chọn “Eksctl_Role” rồi nhấp vào nút “Cập nhật vai trò IAM” .
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.
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.
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.
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.
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.
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.
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.
Á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.
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.
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.
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.
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:
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:
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}
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
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
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 đó:
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
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
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.
Đi tới JenkinsServer → bảng điều khiển Jenkins → Mục mới.
Đ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”.
Nhấp vào nút “Thêm hành động sau khi xây dựng”.
Chọn tùy chọn “Xây dựng các dự án khác”.
Đi tới phần “Xây dựng các dự án khác”.
Chọn tùy chọn “Chỉ kích hoạt nếu bản dựng ổn định”.
Thêm “CD-Job” vào đầu vào “Dự án xây dựng”.
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.
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.
Đã phát triển các hệ thống phân tán hiệu suất cao sử dụng Java, Kotlin, AWS, Docker và Kubernetes cho các công ty như Citi (London), MTS (Moscow) và các công ty khác ( ).
Thành lập Ice Latte, một thị trường trực tuyến mã nguồn mở ngay từ đầu (bạn có thể tham gia nhóm của Zufar và đóng góp cho dự án của anh ấy trên GitHub: ).
Thành lập cộng đồng ZufarExplainedIT để chia sẻ kiến thức và kinh nghiệm của anh ấy với những người khác (bạn có thể theo dõi cộng đồng IT Telegram của Zufar: ).
Được hướng dẫn trong hơn 3000 phút và thực hiện 60 buổi trên ADPlist, nuôi dưỡng những tài năng đầy tham vọng ( ).
Thu hút khán giả với tư cách là diễn giả tại các hội nghị và kênh YouTube CNTT, chia sẻ những hiểu biết sâu sắc có giá trị (ví dụ về các video YouTube của anh ấy bao gồm: , .