The Twelve Factor App - Kim Dung Truyện


The Twelve Factor App - Kim Dung Truyện
                                                                            (internet)
https://12factor.net/

 

Hồi I. Codebase

Codebase của một ứng dụng 12 factor giống như một quyển bí kíp võ công được lưu giữ cẩn thận trong mật thất của một môn phái. Nó được theo dõi chặt chẽ trong hệ thống kiểm soát phiên bản và có thể được triển khai nhiều lần.


Hồi II. Dependencies

Dependencies của một ứng dụng 12 factor giống như những thuộc tính của một cao thủ võ lâm. Chúng cần được khai báo và cô lập một cách rõ ràng để tránh những xung đột không đáng có.


Hồi III. Config 

Cấu hình của một ứng dụng 12 factor giống như những quy tắc của một môn phái võ công. Chúng cần được lưu trữ trong môi trường để tất cả các đệ tử đều có thể dễ dàng tiếp cận và tuân theo.


Hồi IV. Backing services

Backing services của một ứng dụng 12 factor giống như những tài nguyên của một môn phái võ công, chẳng hạn như binh khí, áo giáp, ngựa chiến,... Chúng cần được coi như những tài nguyên được đính kèm và có thể được sử dụng một cách linh hoạt.


Hồi V. Build, release, run

Các giai đoạn xây dựng, phát hành và chạy của một ứng dụng 12 factor giống như những giai đoạn luyện tập, thi đấu và thực chiến của một môn phái võ công. Chúng cần được tách biệt hoàn toàn để đảm bảo rằng ứng dụng luôn có thể hoạt động một cách ổn định và hiệu quả.


Hồi VI. Processes

Một ứng dụng 12 factor được thực thi dưới dạng một hoặc nhiều quy trình không trạng thái. Điều này giống như việc một cao thủ võ lâm cần phải giữ cho tinh thần của mình luôn tỉnh táo và sáng suốt trong khi chiến đấu.


Hồi VII. Port binding 

Các dịch vụ của một ứng dụng 12 factor được xuất thông qua việc liên kết cổng. Điều này giống như việc một môn phái võ công cần phải có một tấm biển hiệu để cho mọi người biết rằng họ đang mở một võ đường.


Hồi VIII. Concurrency

Một ứng dụng 12 factor có thể được mở rộng quy mô theo mô hình quy trình. Điều này giống như việc một môn phái võ công có thể đào tạo nhiều đệ tử cùng một lúc.


Hồi IX. Disposability

Một ứng dụng 12 factor phải có khả năng khởi động nhanh chóng và đóng cửa duyên dáng. Điều này giống như việc một cao thủ võ lâm cần có thể sẵn sàng chiến đấu bất cứ lúc nào và rút lui một cách an toàn khi cần thiết.


Hồi X. Dev/prod parity

Các môi trường phát triển, dàn dựng và sản xuất của một ứng dụng 12 factor phải được giữ càng giống nhau càng tốt. Điều này giống như việc một môn phái võ công cần phải có những môi trường luyện tập mô phỏng theo môi trường chiến đấu thực tế nhất có thể.


Hồi XI. Logs 

Các nhật ký của một ứng dụng 12 factor được coi như những kinh nghiệm chiến đấu của một môn phái võ công. Chúng cần được ghi chép lại một cách cẩn thận để có thể rút ra được những bài học quý giá và cải thiện sức mạnh của môn phái.


Hồi XII. Admin processes

Các tác vụ quản trị/quản lý của một ứng dụng 12 factor được chạy dưới dạng các quy trình một lần. Điều này giống như việc một môn phái võ công cần phải có những chiến thuật cụ thể để đối phó với những tình huống bất ngờ.


Tóm lại, 12 factor app giống như một quyển bí kíp võ công giúp các nhà phát triển xây dựng và triển khai các ứng dụng một cách hiệu quả và đáng tin cậy. Nó giúp các ứng dụng có thể dễ dàng mở rộng quy mô, chịu lỗi cao và dễ dàng bảo trì.


Hồi I : 

The Twelve Factor App - Kim Dung Truyện
                                                                        (internet)

Codebase giống như một bí kíp võ công được lưu giữ cẩn thận trong mật thất của một môn phái. Nó bao gồm tất cả các bí quyết võ công của môn phái, từ những chiêu thức cơ bản đến những chiêu thức cao cấp.

Bí kíp võ công này được ghi chép lại trong một quyển sách, và tất cả các đệ tử của môn phái đều có thể tham khảo quyển sách này để học tập và luyện tập. Tuy nhiên, mỗi đệ tử đều có thể có một bản sao của quyển sách này, và họ có thể tự do nghiên cứu và phát triển thêm các chiêu thức võ công mới.

Tương tự như vậy, codebase của một 12 factor app được lưu trữ trong một hệ thống kiểm soát phiên bản, chẳng hạn như Git, Mercurial hoặc Subversion. Tất cả các nhà phát triển của ứng dụng đều có thể truy cập codebase này để chỉnh sửa và phát triển ứng dụng. Tuy nhiên, mỗi nhà phát triển đều có thể có một bản sao riêng của codebase, và họ có thể tự do phát triển các tính năng mới mà không ảnh hưởng đến những người khác.

Một lợi ích quan trọng của việc có codebase duy nhất là nó giúp cho việc triển khai ứng dụng trở nên dễ dàng hơn. Các nhà phát triển có thể chỉ cần triển khai codebase mới nhất lên môi trường sản xuất, và ứng dụng sẽ được cập nhật lên phiên bản mới nhất.

Ngoài ra, việc có codebase duy nhất cũng giúp cho việc bảo trì ứng dụng trở nên dễ dàng hơn. Các nhà phát triển có thể dễ dàng theo dõi các thay đổi đã được thực hiện cho ứng dụng, và họ có thể dễ dàng khắc phục các lỗi.

Tóm lại, codebase duy nhất là một yếu tố quan trọng của 12 factor app. Nó giúp cho việc phát triển, triển khai và bảo trì ứng dụng trở nên dễ dàng hơn.

Ví dụ:

Một môn phái võ công tên là Cái Bang có một quyển bí kíp võ công có tên là Cái Bang Đả Cẩu Bổng Pháp. Quyển bí kíp này được lưu giữ cẩn thận trong mật thất của môn phái, và tất cả các đệ tử của Cái Bang đều có thể tham khảo quyển sách này để học tập và luyện tập.

Mỗi đệ tử của Cái Bang đều có một bản sao của quyển bí kíp võ công này, và họ có thể tự do nghiên cứu và phát triển thêm các chiêu thức võ công mới. Tuy nhiên, tất cả các chiêu thức võ công mới này đều phải dựa trên nền tảng cơ bản của Cái Bang Đả Cẩu Bổng Pháp.

Tương tự như vậy, codebase của một 12 factor app cũng phải được quản lý một cách cẩn thận và thống nhất. Tất cả các nhà phát triển của ứng dụng đều phải tuân theo các quy tắc nhất định khi phát triển ứng dụng, chẳng hạn như sử dụng cùng một ngôn ngữ lập trình, cùng một bộ khung phát triển và cùng một quy ước lập trình.

Việc quản lý codebase một cách cẩn thận và thống nhất sẽ giúp cho việc phát triển, triển khai và bảo trì ứng dụng trở nên dễ dàng hơn.


Hồi II : 

The Twelve Factor App - Kim Dung Truyện

                                                                        (internet)

Dependencies trong 12 factor app giống như những bí quyết võ công của một môn phái.

Mỗi môn phái võ công đều có những bí quyết võ công riêng, và những bí quyết võ công này được truyền thụ từ đời này sang đời khác. Các đệ tử của môn phái phải học tập và luyện tập những bí quyết võ công này để có thể trở thành những võ sĩ giỏi.

Tương tự như vậy, mỗi 12 factor app đều có những dependencies riêng. Dependencies là những thư viện hoặc công cụ mà ứng dụng cần để có thể hoạt động. Các nhà phát triển của ứng dụng phải khai báo rõ ràng tất cả các dependencies của ứng dụng, và họ phải sử dụng các dependency manager để quản lý các dependencies này.

Việc khai báo rõ ràng dependencies của ứng dụng có nhiều lợi ích. Đầu tiên, nó giúp cho việc thiết lập môi trường phát triển và môi trường sản xuất cho ứng dụng trở nên dễ dàng hơn. Thứ hai, nó giúp cho việc bảo trì ứng dụng trở nên dễ dàng hơn. Thứ ba, nó giúp cho ứng dụng có thể hoạt động một cách ổn định và đáng tin cậy hơn.

Ví dụ:

Môn phái Cái Bang có một bí quyết võ công gọi là Cái Bang Đả Cẩu Bổng Pháp. Bí quyết võ công này bao gồm tất cả các chiêu thức võ công của môn phái Cái Bang, từ những chiêu thức cơ bản đến những chiêu thức cao cấp.

Để học tập và luyện tập bí quyết võ công này, các đệ tử của môn phái Cái Bang phải có cây đả cẩu bổng. Cây đả cẩu bổng là một vũ khí quan trọng của môn phái Cái Bang, và nó được sử dụng trong hầu hết các chiêu thức võ công của môn phái này.

Tương tự như vậy, một 12 factor app cần phải có một dependency manager để quản lý các dependencies của nó. Dependency manager là một công cụ giúp cho các nhà phát triển có thể khai báo rõ ràng tất cả các dependencies của ứng dụng, và nó giúp cho họ có thể dễ dàng cài đặt và cập nhật các dependencies này.

Một số dependency manager phổ biến hiện nay là Maven (Java), Gradle (Java), Bundler (Ruby), Pip (Python), npm (JavaScript).

Tóm lại, dependencies là một yếu tố quan trọng của 12 factor app. Việc khai báo rõ ràng dependencies của ứng dụng và sử dụng dependency manager để quản lý các dependencies này sẽ giúp cho việc phát triển, triển khai và bảo trì ứng dụng trở nên dễ dàng hơn.


Hồi III :

The Twelve Factor App - Kim Dung Truyện
                                                                        (internet)

Config trong 12 factor app giống như những quy tắc võ công của một môn phái.

Mỗi môn phái võ công đều có những quy tắc võ công riêng, và những quy tắc võ công này được truyền thụ từ đời này sang đời khác. Các đệ tử của môn phái phải tuân theo những quy tắc võ công này để có thể trở thành những võ sĩ giỏi.

Tương tự như vậy, mỗi 12 factor app đều có những config riêng. Config là những thông tin về cách cấu hình ứng dụng, chẳng hạn như thông tin về cơ sở dữ liệu, thông tin về các dịch vụ bên ngoài và thông tin về các giá trị mặc định của ứng dụng.

Các config của ứng dụng phải được lưu trữ trong môi trường (environment). Điều này có nghĩa là các config phải được lưu trữ ở một nơi mà tất cả các bản triển khai của ứng dụng đều có thể truy cập được, chẳng hạn như trong hệ thống môi trường của máy chủ.

Việc lưu trữ config trong môi trường có nhiều lợi ích. Đầu tiên, nó giúp cho việc triển khai ứng dụng trở nên dễ dàng hơn. Thứ hai, nó giúp cho việc bảo mật các thông tin nhạy cảm của ứng dụng trở nên tốt hơn. Thứ ba, nó giúp cho việc quản lý các config của ứng dụng trở nên dễ dàng hơn.

Ví dụ:

Môn phái Cái Bang có những quy tắc võ công riêng, chẳng hạn như quy tắc về cách sử dụng đả cẩu bổng, quy tắc về cách di chuyển và quy tắc về cách chiến đấu. Các đệ tử của môn phái Cái Bang phải tuân theo những quy tắc võ công này để có thể trở thành những võ sĩ giỏi.

Tương tự như vậy, một 12 factor app có những config riêng, chẳng hạn như config về kết nối cơ sở dữ liệu, config về kết nối các dịch vụ bên ngoài và config về các giá trị mặc định của ứng dụng. Các config này phải được lưu trữ trong môi trường (environment).

Một số cách lưu trữ config trong môi trường phổ biến hiện nay là:

Sử dụng các biến môi trường (environment variables)

Sử dụng các tệp cấu hình (configuration files)

Sử dụng các cơ sở dữ liệu (databases)

Tóm lại, config là một yếu tố quan trọng của 12 factor app. Việc lưu trữ config trong môi trường sẽ giúp cho việc triển khai ứng dụng, bảo mật các thông tin nhạy cảm của ứng dụng và quản lý các config của ứng dụng trở nên dễ dàng hơn.


Hồi IV: 

The Twelve Factor App - Kim Dung Truyện

                                                                     (internet)

Backing services trong 12 factor app giống như những tài nguyên hỗ trợ của một môn phái võ công.

Mỗi môn phái võ công đều có những tài nguyên hỗ trợ riêng, chẳng hạn như binh khí, áo giáp, ngựa chiến,... Những tài nguyên hỗ trợ này giúp cho các đệ tử của môn phái có thể luyện tập võ công và chiến đấu một cách hiệu quả hơn.

Tương tự như vậy, mỗi 12 factor app đều có những backing services riêng. Backing services là những dịch vụ mà ứng dụng sử dụng để hoạt động bình thường. Ví dụ về các backing services bao gồm:

Cơ sở dữ liệu (database)

Hệ thống nhắn tin (messaging system)

Hệ thống cache (caching system)

Dịch vụ gửi email (SMTP service)

Các backing services của một 12 factor app được coi là những tài nguyên được đính kèm. Điều này có nghĩa là các backing services có thể được kết nối và ngắt kết nối với ứng dụng một cách dễ dàng.

Việc coi các backing services là những tài nguyên được đính kèm có nhiều lợi ích. Đầu tiên, nó giúp cho việc triển khai ứng dụng trở nên dễ dàng hơn. Thứ hai, nó giúp cho việc bảo trì ứng dụng trở nên dễ dàng hơn. Thứ ba, nó giúp cho ứng dụng có thể mở rộng quy mô một cách dễ dàng hơn.

Ví dụ:

Môn phái Cái Bang có những tài nguyên hỗ trợ riêng, chẳng hạn như đả cẩu bổng, áo giáp và ngựa chiến. Những tài nguyên hỗ trợ này giúp cho các đệ tử của môn phái Cái Bang có thể luyện tập võ công và chiến đấu một cách hiệu quả hơn.

Tương tự như vậy, một 12 factor app có những backing services riêng, chẳng hạn như cơ sở dữ liệu, hệ thống nhắn tin và hệ thống cache. Những backing services này giúp cho ứng dụng có thể hoạt động một cách bình thường.

Các backing services của một 12 factor app được coi là những tài nguyên được đính kèm. Điều này có nghĩa là các backing services có thể được kết nối và ngắt kết nối với ứng dụng một cách dễ dàng.

Ví dụ, nếu cơ sở dữ liệu của ứng dụng đang gặp vấn đề, quản trị viên của ứng dụng có thể chuyển sang sử dụng một cơ sở dữ liệu khác mà không cần thay đổi mã của ứng dụng.

Tóm lại, backing services là một yếu tố quan trọng của 12 factor app. Việc coi các backing services là những tài nguyên được đính kèm sẽ giúp cho việc triển khai ứng dụng, bảo trì ứng dụng và mở rộng quy mô ứng dụng trở nên dễ dàng hơn.


Hồi V:

The Twelve Factor App - Kim Dung Truyện
                                                                        (internet)

Build, release, run trong 12 factor app giống như những giai đoạn luyện tập, thi đấu và thực chiến của một môn phái võ công.

Giai đoạn build giống như giai đoạn luyện tập của một môn phái võ công. Trong giai đoạn này, các môn đồ sẽ học tập các lý thuyết võ công và luyện tập các chiêu thức võ công cơ bản.

Giai đoạn release giống như giai đoạn thi đấu của một môn phái võ công. Trong giai đoạn này, các môn đồ sẽ tham gia các cuộc thi đấu để kiểm tra trình độ võ công của mình và để học hỏi thêm kinh nghiệm.

Giai đoạn run giống như giai đoạn thực chiến của một môn phái võ công. Trong giai đoạn này, các môn đồ sẽ sử dụng võ công của mình để chiến đấu với kẻ thù.

12 factor app có sự tách biệt rõ ràng giữa ba giai đoạn build, release và run. Điều này giúp cho việc phát triển, triển khai và bảo trì ứng dụng trở nên dễ dàng hơn.

Ví dụ:

Môn phái Cái Bang có ba giai đoạn luyện tập, thi đấu và thực chiến.

Giai đoạn luyện tập: Trong giai đoạn này, các đệ tử của Cái Bang sẽ học tập các lý thuyết võ công Cái Bang Đả Cẩu Bổng Pháp và luyện tập các chiêu thức võ công cơ bản.

Giai đoạn thi đấu: Trong giai đoạn này, các đệ tử của Cái Bang sẽ tham gia các cuộc thi đấu võ công với các môn phái khác để kiểm tra trình độ võ công của mình và để học hỏi thêm kinh nghiệm.

Giai đoạn thực chiến: Trong giai đoạn này, các đệ tử của Cái Bang sẽ sử dụng võ công Cái Bang Đả Cẩu Bổng Pháp để chiến đấu với kẻ thù.

12 factor app có sự tách biệt rõ ràng giữa ba giai đoạn build, release và run. Điều này giúp cho việc phát triển, triển khai và bảo trì ứng dụng trở nên dễ dàng hơn.

Ví dụ:

Một ứng dụng 12 factor app có ba giai đoạn build, release và run.

Giai đoạn build: Trong giai đoạn này, các nhà phát triển sẽ biên dịch và đóng gói mã ứng dụng thành một gói thực thi.

Giai đoạn release: Trong giai đoạn này, các nhà phát triển sẽ kết hợp gói thực thi với tệp cấu hình của ứng dụng để tạo thành một bản phát hành.

Giai đoạn run: Trong giai đoạn này, các nhà phát triển sẽ khởi động ứng dụng từ bản phát hành.

Sự tách biệt rõ ràng giữa ba giai đoạn build, release và run giúp cho việc phát triển, triển khai và bảo trì ứng dụng 12 factor app trở nên dễ dàng hơn.


Hồi VI:

The Twelve Factor App - Kim Dung Truyện
                                                                            (internet)

Processes trong 12 factor app giống như những đệ tử của một môn phái võ công.

Mỗi đệ tử của một môn phái võ công đều phải học tập các lý thuyết võ công và luyện tập các chiêu thức võ công. Khi ra đòn, mỗi đệ tử đều phải sử dụng hết sức mạnh của mình để đánh bại đối thủ.

Tương tự như vậy, mỗi process trong 12 factor app đều phải thực hiện các công việc được giao một cách độc lập và hiệu quả. Các process không được lưu trữ bất kỳ dữ liệu nào trong bộ nhớ của mình. Tất cả dữ liệu đều phải được lưu trữ trong các backing services, chẳng hạn như cơ sở dữ liệu.

Việc sử dụng các process stateless có nhiều lợi ích. Đầu tiên, nó giúp cho việc triển khai ứng dụng trở nên dễ dàng hơn. Thứ hai, nó giúp cho việc bảo trì ứng dụng trở nên dễ dàng hơn. Thứ ba, nó giúp cho ứng dụng có thể mở rộng quy mô một cách dễ dàng hơn.

Ví dụ:

Môn phái Cái Bang có nhiều đệ tử. Mỗi đệ tử đều phải học tập các lý thuyết võ công Cái Bang Đả Cẩu Bổng Pháp và luyện tập các chiêu thức võ công. Khi ra đòn, mỗi đệ tử đều phải sử dụng hết sức mạnh của mình để đánh bại đối thủ.

Tương tự như vậy, một 12 factor app có nhiều process. Mỗi process đều phải thực hiện các công việc được giao một cách độc lập và hiệu quả. Các process không được lưu trữ bất kỳ dữ liệu nào trong bộ nhớ của mình. Tất cả dữ liệu đều phải được lưu trữ trong cơ sở dữ liệu.

Việc sử dụng các process stateless có nhiều lợi ích. Đầu tiên, nó giúp cho việc triển khai ứng dụng trở nên dễ dàng hơn. Thứ hai, nó giúp cho việc bảo trì ứng dụng trở nên dễ dàng hơn. Thứ ba, nó giúp cho ứng dụng có thể mở rộng quy mô một cách dễ dàng hơn.

Ví dụ:

Một 12 factor app có nhiều process, chẳng hạn như process xử lý yêu cầu HTTP, process xử lý yêu cầu email và process xử lý yêu cầu cron. Mỗi process đều có trách nhiệm riêng của mình và không được lưu trữ bất kỳ dữ liệu nào trong bộ nhớ của mình. Tất cả dữ liệu đều phải được lưu trữ trong cơ sở dữ liệu.

Việc sử dụng các process stateless giúp cho việc triển khai ứng dụng trở nên dễ dàng hơn. Các nhà phát triển chỉ cần triển khai các process mới lên môi trường sản xuất và ứng dụng sẽ được cập nhật lên phiên bản mới nhất.

Việc sử dụng các process stateless cũng giúp cho việc bảo trì ứng dụng trở nên dễ dàng hơn. Các nhà phát triển có thể dễ dàng theo dõi các thay đổi đã được thực hiện cho ứng dụng và họ có thể dễ dàng khắc phục các lỗi.

Việc sử dụng các process stateless cũng giúp cho ứng dụng có thể mở rộng quy mô một cách dễ dàng hơn. Các nhà phát triển có thể dễ dàng thêm các process mới vào ứng dụng để xử lý nhiều yêu cầu hơn.

Tóm lại, processes là một yếu tố quan trọng của 12 factor app. Việc sử dụng các process stateless sẽ giúp cho việc triển khai ứng dụng, bảo trì ứng dụng và mở rộng quy mô ứng dụng trở nên dễ dàng hơn.


Hồi VII : 

The Twelve Factor App - Kim Dung Truyện
                                                                            (internet)

Port binding trong 12 factor app giống như việc các đệ tử của một môn phái võ công mở võ đường để truyền dạy võ công.

Mỗi võ đường đều có một địa chỉ cụ thể, và các đệ tử võ công có thể đến võ đường để học tập và luyện tập võ công.

Tương tự như vậy, mỗi process trong 12 factor app đều có một port cụ thể, và các ứng dụng khác có thể kết nối với process đó để sử dụng các dịch vụ mà process đó cung cấp.

Việc sử dụng port binding có nhiều lợi ích. Đầu tiên, nó giúp cho việc triển khai ứng dụng trở nên dễ dàng hơn. Thứ hai, nó giúp cho việc bảo trì ứng dụng trở nên dễ dàng hơn. Thứ ba, nó giúp cho ứng dụng có thể mở rộng quy mô một cách dễ dàng hơn.

Ví dụ:

Môn phái Cái Bang có một võ đường ở thành phố A. Các đệ tử võ công có thể đến võ đường này để học tập và luyện tập võ công Cái Bang Đả Cẩu Bổng Pháp.

Tương tự như vậy, một 12 factor app có một process cung cấp dịch vụ HTTP. Process này sẽ binding với một port cụ thể, chẳng hạn như port 80. Các ứng dụng khác có thể kết nối với port này để sử dụng dịch vụ HTTP của process này.

Việc sử dụng port binding có nhiều lợi ích. Đầu tiên, nó giúp cho việc triển khai ứng dụng trở nên dễ dàng hơn. Các nhà phát triển chỉ cần triển khai process mới lên môi trường sản xuất và ứng dụng sẽ được cập nhật lên phiên bản mới nhất.

Việc sử dụng port binding cũng giúp cho việc bảo trì ứng dụng trở nên dễ dàng hơn. Các nhà phát triển có thể dễ dàng theo dõi các thay đổi đã được thực hiện cho ứng dụng và họ có thể dễ dàng khắc phục các lỗi.

Việc sử dụng port binding cũng giúp cho ứng dụng có thể mở rộng quy mô một cách dễ dàng hơn. Các nhà phát triển có thể dễ dàng thêm các process mới vào ứng dụng để xử lý nhiều yêu cầu hơn.

Tóm lại, port binding là một yếu tố quan trọng của 12 factor app. Việc sử dụng port binding sẽ giúp cho việc triển khai ứng dụng, bảo trì ứng dụng và mở rộng quy mô ứng dụng trở nên dễ dàng hơn.


Hồi VIII:

The Twelve Factor App - Kim Dung Truyện
                                                                            (internet)

Concurrency trong 12 factor app giống như việc các đệ tử của một môn phái võ công phối hợp với nhau để chiến đấu với kẻ thù.

Mỗi đệ tử võ công đều có những kỹ năng và sức mạnh khác nhau. Khi chiến đấu, các đệ tử võ công có thể phối hợp với nhau để phát huy tối đa sức mạnh của mình và đánh bại kẻ thù.

Tương tự như vậy, mỗi process trong 12 factor app đều có những chức năng khác nhau. Các process có thể phối hợp với nhau để xử lý nhiều yêu cầu hơn và tăng hiệu suất của ứng dụng.

Việc sử dụng concurrency có nhiều lợi ích. Đầu tiên, nó giúp cho ứng dụng có thể xử lý nhiều yêu cầu hơn. Thứ hai, nó giúp cho ứng dụng có thể phản hồi yêu cầu của người dùng nhanh hơn. Thứ ba, nó giúp cho ứng dụng có thể mở rộng quy mô một cách dễ dàng hơn.

Ví dụ:

Một môn phái võ công có nhiều đệ tử, mỗi đệ tử đều có những kỹ năng và sức mạnh khác nhau. Khi chiến đấu với kẻ thù, các đệ tử võ công có thể phối hợp với nhau để phát huy tối đa sức mạnh của mình và đánh bại kẻ thù. Ví dụ, một đệ tử võ công có thể tấn công kẻ thù từ phía trước, trong khi một đệ tử võ công khác có thể tấn công kẻ thù từ phía sau.

Tương tự như vậy, một 12 factor app có nhiều process, mỗi process đều có một chức năng khác nhau. Ví dụ, một process có thể xử lý yêu cầu HTTP, trong khi một process khác có thể xử lý các tác vụ nền dài hạn. Các process có thể phối hợp với nhau để xử lý nhiều yêu cầu hơn và tăng hiệu suất của ứng dụng.

Việc sử dụng concurrency có nhiều lợi ích. Đầu tiên, nó giúp cho ứng dụng có thể xử lý nhiều yêu cầu hơn. Thứ hai, nó giúp cho ứng dụng có thể phản hồi yêu cầu của người dùng nhanh hơn. Thứ ba, nó giúp cho ứng dụng có thể mở rộng quy mô một cách dễ dàng hơn. Ví dụ, nếu một ứng dụng có nhiều người dùng truy cập cùng lúc, các nhà phát triển có thể dễ dàng thêm các process mới vào ứng dụng để xử lý nhiều yêu cầu hơn.

Tóm lại, concurrency là một yếu tố quan trọng của 12 factor app. Việc sử dụng concurrency sẽ giúp cho ứng dụng có thể xử lý nhiều yêu cầu hơn, phản hồi yêu cầu của người dùng nhanh hơn và mở rộng quy mô một cách dễ dàng hơn.


Hồi IX:

The Twelve Factor App - Kim Dung Truyện

                                                                            (internet)

Disposability trong 12 factor app giống như việc các đệ tử của một môn phái võ công phải luôn sẵn sàng chiến đấu.

Các đệ tử võ công phải luôn sẵn sàng chiến đấu, bất kể ngày đêm, bất kể thời tiết. Họ phải có thể nhanh chóng vào vị trí và chiến đấu với kẻ thù.

Tương tự như vậy, các process trong 12 factor app phải luôn sẵn sàng xử lý yêu cầu, bất kể thời gian nào trong ngày. Các process phải có thể nhanh chóng khởi động và bắt đầu xử lý yêu cầu.

Việc sử dụng disposability có nhiều lợi ích. Đầu tiên, nó giúp cho ứng dụng có thể phản hồi yêu cầu của người dùng nhanh hơn. Thứ hai, nó giúp cho ứng dụng có thể mở rộng quy mô một cách dễ dàng hơn. Thứ ba, nó giúp cho ứng dụng có thể phục hồi sau lỗi nhanh hơn.

Ví dụ:

Một môn phái võ công có nhiều đệ tử, và các đệ tử này luôn sẵn sàng chiến đấu. Khi kẻ thù tấn công, các đệ tử võ công có thể nhanh chóng vào vị trí và chiến đấu với kẻ thù.

Tương tự như vậy, một 12 factor app có nhiều process, và các process này luôn sẵn sàng xử lý yêu cầu. Khi có yêu cầu từ người dùng, các process có thể nhanh chóng khởi động và bắt đầu xử lý yêu cầu.

Việc sử dụng disposability có nhiều lợi ích. Đầu tiên, nó giúp cho ứng dụng có thể phản hồi yêu cầu của người dùng nhanh hơn. Ví dụ, nếu một ứng dụng có nhiều người dùng truy cập cùng lúc, các nhà phát triển có thể dễ dàng thêm các process mới vào ứng dụng để xử lý nhiều yêu cầu hơn.

Thứ hai, việc sử dụng disposability giúp cho ứng dụng có thể mở rộng quy mô một cách dễ dàng hơn. Ví dụ, nếu một ứng dụng có nhiều người dùng truy cập cùng lúc, các nhà phát triển có thể dễ dàng thêm các process mới vào ứng dụng để xử lý nhiều yêu cầu hơn.

Thứ ba, việc sử dụng disposability giúp cho ứng dụng có thể phục hồi sau lỗi nhanh hơn. Ví dụ, nếu một process gặp lỗi, các nhà phát triển có thể dễ dàng khởi động lại process đó mà không ảnh hưởng đến các process khác.

Tóm lại, disposability là một yếu tố quan trọng của 12 factor app. Việc sử dụng disposability sẽ giúp cho ứng dụng có thể phản hồi yêu cầu của người dùng nhanh hơn, mở rộng quy mô một cách dễ dàng hơn và phục hồi sau lỗi nhanh hơn.


Hồi X:

The Twelve Factor App - Kim Dung Truyện
                                                                            (internet)

Dev/prod parity trong 12 factor app giống như việc các đệ tử của một môn phái võ công phải luyện tập võ công theo cùng một phương pháp, bất kể họ đang ở đâu.

Các đệ tử của một môn phái võ công phải luyện tập võ công theo cùng một phương pháp, bất kể họ đang ở đâu, trong võ đường hay trên chiến trường. Điều này giúp cho các đệ tử võ công có thể dễ dàng phối hợp với nhau khi chiến đấu.

Tương tự như vậy, các môi trường phát triển, staging và sản xuất của một 12 factor app phải được cấu hình giống nhau nhất có thể. Điều này giúp cho các nhà phát triển dễ dàng triển khai ứng dụng lên môi trường sản xuất hơn và giúp cho ứng dụng hoạt động ổn định hơn trên môi trường sản xuất.

Việc sử dụng dev/prod parity có nhiều lợi ích. Đầu tiên, nó giúp cho các nhà phát triển dễ dàng triển khai ứng dụng lên môi trường sản xuất hơn. Thứ hai, nó giúp cho ứng dụng hoạt động ổn định hơn trên môi trường sản xuất. Thứ ba, nó giúp cho các nhà phát triển dễ dàng khắc phục lỗi hơn.

Ví dụ:

Môn phái Cái Bang có nhiều võ đường trên khắp cả nước. Các đệ tử của Cái Bang ở tất cả các võ đường đều luyện tập võ công theo cùng một phương pháp. Điều này giúp cho các đệ tử Cái Bang ở các võ đường khác nhau có thể dễ dàng phối hợp với nhau khi chiến đấu.

Tương tự như vậy, một 12 factor app có nhiều môi trường khác nhau, bao gồm môi trường phát triển, môi trường staging và môi trường sản xuất. Tất cả các môi trường này đều được cấu hình giống nhau nhất có thể. Điều này giúp cho các nhà phát triển dễ dàng triển khai ứng dụng lên môi trường sản xuất hơn và giúp cho ứng dụng hoạt động ổn định hơn trên môi trường sản xuất.

Việc sử dụng dev/prod parity có nhiều lợi ích. Đầu tiên, nó giúp cho các nhà phát triển dễ dàng triển khai ứng dụng lên môi trường sản xuất hơn. Ví dụ, nếu các nhà phát triển phát triển ứng dụng trên môi trường macOS, họ có thể dễ dàng triển khai ứng dụng lên môi trường sản xuất chạy Linux.

Thứ hai, việc sử dụng dev/prod parity giúp cho ứng dụng hoạt động ổn định hơn trên môi trường sản xuất. Ví dụ, nếu các nhà phát triển sử dụng cùng một cơ sở dữ liệu trong cả môi trường phát triển và môi trường sản xuất, thì ứng dụng sẽ hoạt động ổn định hơn trên môi trường sản xuất.

Thứ ba, việc sử dụng dev/prod parity giúp cho các nhà phát triển dễ dàng khắc phục lỗi hơn. Ví dụ, nếu một lỗi xảy ra trên môi trường sản xuất, các nhà phát triển có thể dễ dàng tái tạo lỗi đó trên môi trường phát triển và khắc phục lỗi đó.

Tóm lại, dev/prod parity là một yếu tố quan trọng của 12 factor app. Việc sử dụng dev/prod parity sẽ giúp cho các nhà phát triển dễ dàng triển khai ứng dụng lên môi trường sản xuất hơn, giúp cho ứng dụng hoạt động ổn định hơn trên môi trường sản xuất và giúp cho các nhà phát triển dễ dàng khắc phục lỗi hơn.


Hồi XI:

The Twelve Factor App - Kim Dung Truyện
                                                                            (internet)

Logs trong 12 factor app giống như những tin tức võ lâm lưu truyền trong giang hồ.

Tin tức võ lâm là những thông tin về các sự kiện xảy ra trong giới võ lâm, chẳng hạn như các trận đấu võ, các cuộc họp mặt của các môn phái, và các tin đồn về các cao thủ võ lâm. Tin tức võ lâm được lưu truyền rộng rãi trong giang hồ, và mọi người đều có thể truy cập vào tin tức võ lâm.

Tương tự như vậy, logs trong 12 factor app là những thông tin về các sự kiện xảy ra trong ứng dụng, chẳng hạn như các yêu cầu của người dùng, các phản hồi của ứng dụng, và các lỗi của ứng dụng. Logs được lưu trữ trong một nơi trung tâm, và mọi người đều có thể truy cập vào logs.

Việc sử dụng logs có nhiều lợi ích. Đầu tiên, logs giúp cho các nhà phát triển có thể theo dõi hoạt động của ứng dụng và khắc phục lỗi. Thứ hai, logs giúp cho các nhà quản trị hệ thống có thể theo dõi hiệu suất của ứng dụng và phát hiện các vấn đề. Thứ ba, logs giúp cho các nhà phân tích có thể tìm hiểu về hành vi của người dùng và cải thiện trải nghiệm của người dùng.

Ví dụ:

Một môn phái võ công có một kênh tin tức võ lâm, nơi các đệ tử của môn phái có thể chia sẻ tin tức võ lâm với nhau. Kênh tin tức võ lâm này được lưu trữ trong một nơi trung tâm, và mọi đệ tử của môn phái đều có thể truy cập vào kênh tin tức võ lâm.

Tương tự như vậy, một 12 factor app có một nơi lưu trữ logs, nơi các process của ứng dụng có thể ghi logs. Nơi lưu trữ logs này được lưu trữ trong một nơi trung tâm, và mọi người đều có thể truy cập vào logs.

Việc sử dụng logs có nhiều lợi ích. Đầu tiên, logs giúp cho các nhà phát triển có thể theo dõi hoạt động của ứng dụng và khắc phục lỗi. Ví dụ, nếu một lỗi xảy ra trong ứng dụng, các nhà phát triển có thể kiểm tra logs để tìm hiểu nguyên nhân của lỗi và khắc phục lỗi.

Thứ hai, logs giúp cho các nhà quản trị hệ thống có thể theo dõi hiệu suất của ứng dụng và phát hiện các vấn đề. Ví dụ, nếu ứng dụng chạy chậm, các nhà quản trị hệ thống có thể kiểm tra logs để tìm hiểu nguyên nhân của vấn đề và khắc phục vấn đề.

Thứ ba, logs giúp cho các nhà phân tích có thể tìm hiểu về hành vi của người dùng và cải thiện trải nghiệm của người dùng. Ví dụ, các nhà phân tích có thể kiểm tra logs để tìm hiểu những trang web mà người dùng truy cập nhiều nhất, và họ có thể sử dụng thông tin này để cải thiện trải nghiệm của người dùng trên những trang web đó.

Tóm lại, logs là một yếu tố quan trọng của 12 factor app. Việc sử dụng logs sẽ giúp cho các nhà phát triển, các nhà quản trị hệ thống và các nhà phân tích có thể theo dõi hoạt động của ứng dụng, khắc phục lỗi, theo dõi hiệu suất của ứng dụng, phát hiện các vấn đề và tìm hiểu về hành vi của người dùng.


Hồi XII :

The Twelve Factor App - Kim Dung Truyện

                                                                            (internet)

Admin processes trong 12 factor app giống như những môn đồ của một môn phái võ công làm các công việc quản lý và bảo trì võ đường.

Các môn đồ của một môn phái võ công không chỉ tập luyện võ công, mà còn phải làm các công việc quản lý và bảo trì võ đường, chẳng hạn như dọn dẹp võ đường, sửa chữa võ đường, và chuẩn bị đồ ăn thức uống cho các đệ tử tập luyện.

Tương tự như vậy, admin processes trong 12 factor app là những process thực hiện các công việc quản lý và bảo trì ứng dụng, chẳng hạn như chạy các tác vụ di chuyển dữ liệu, chạy các tác vụ sửa lỗi, và chạy các tác vụ sao lưu dữ liệu.

Việc sử dụng admin processes có nhiều lợi ích. Đầu tiên, nó giúp cho các ứng dụng dễ dàng bảo trì hơn. Thứ hai, nó giúp cho các ứng dụng có thể mở rộng quy mô một cách dễ dàng hơn. Thứ ba, nó giúp cho các ứng dụng có thể hoạt động ổn định hơn.

Ví dụ:

Một môn phái võ công có nhiều môn đồ, mỗi môn đồ có một nhiệm vụ khác nhau. Một số môn đồ phụ trách dọn dẹp võ đường, một số môn đồ phụ trách sửa chữa võ đường, và một số môn đồ phụ trách chuẩn bị đồ ăn thức uống cho các đệ tử tập luyện.

Tương tự như vậy, một 12 factor app có nhiều admin processes, mỗi admin process có một nhiệm vụ khác nhau. Một admin process phụ trách chạy các tác vụ di chuyển dữ liệu, một admin process phụ trách chạy các tác vụ sửa lỗi, và một admin process phụ trách chạy các tác vụ sao lưu dữ liệu.

Việc sử dụng admin processes có nhiều lợi ích. Đầu tiên, nó giúp cho các ứng dụng dễ dàng bảo trì hơn. Vì mỗi admin process có một nhiệm vụ khác nhau, nên các nhà phát triển có thể dễ dàng bảo trì các ứng dụng bằng cách sửa đổi các admin process.

Thứ hai, việc sử dụng admin processes giúp cho các ứng dụng có thể mở rộng quy mô một cách dễ dàng hơn. Ví dụ, nếu một ứng dụng có nhiều người dùng truy cập cùng lúc, các nhà phát triển có thể dễ dàng chạy nhiều admin process hơn để xử lý các tác vụ.

Thứ ba, việc sử dụng admin processes giúp cho các ứng dụng có thể hoạt động ổn định hơn. Vì các admin process được chạy riêng biệt với các process chính của ứng dụng, nên nếu một admin process gặp lỗi, thì các process chính của ứng dụng sẽ không bị ảnh hưởng.

Tóm lại, admin processes là một yếu tố quan trọng của 12 factor app. Việc sử dụng admin processes sẽ giúp cho các ứng dụng dễ dàng bảo trì hơn, có thể mở rộng quy mô một cách dễ dàng hơn và hoạt động ổn định hơn.


Nhãn:

TLS Termination - Upstream TLS - Kubernetes kết hợp với MetalLB và Contour ingress controller trên Kubernetes On-Premises

Như bài viết trước nói về vấn đề kết hợp với MetalLB và Contour ingress controller trên Kubernetes On-Premises , có thể tham khảo bài trước đó để biết thêm chi tiết. Bài hôm nay là phần bổ trợ thêm đó là cài TLS cho dự án này để đảm bảo tính bảo mật hơn.

Trước tiên để việc với TLS thì cần cần hiểu một số khái niệm khái quát sau, khái quát thôi nhé muốn chuyên sâu về nó thì google thêm, vì nếu không hiểu khái niệm nó là gì thì chỉ thấy chạy lên là vỗ tay bốp bốp mà không hiểu thì cũng không hay lắm. Các khái niệm bên dưới sẽ giúp bạn những thứ bạn có thể đi tiếp, trong bài này chỉ là ví dụ cơ bản nó sẽ không diễn tả hết được, nhưng thông qua các keywork sẽ giúp mườn tượng ra được nhiều thứ hay ho để làm hơn. 

TLS Termination

Là khái niệm chỉ việc kết thúc kết nối TLS ở một thiết bị trung gian thay vì ở điểm cuối.

Client (trình duyệt) thiết lập kết nối TLS tới Load Balancer. 

Load Balancer giải mã dữ liệu TLS và chuyển tiếp dữ liệu đã giải mã tới các backend server (không còn mã hóa). Đây được gọi là TLS termination tại Load Balancer.

Client <===TLS===> Load balancer <===HTTP==> Server app


Mutual TLS

Cho phép cả server và client xác thực lẫn nhau trong quá trình thiết lập kết nối bảo mật.

Client sẽ xác thực danh tính của server bằng cách kiểm tra chứng chỉ (certificate) mà server cung cấp.

Server cũng sẽ xác thực danh tính của client bằng cách yêu cầu client cung cấp chứng chỉ.

Chỉ khi cả hai bên đều xác thực thành công danh tính của nhau, kết nối mới được thiết lập.


Client <===client & server auth ===> Load balancer <===client & server auth ==> Server app


Upstream TLS

Là việc sử dụng TLS ở phía upstream, tức là mã hóa kết nối giữa proxy server (ví dụ Nginx) và backend server (ví dụ API server). Proxy server sẽ mở kết nối TLS với backend server để đảm bảo dữ liệu truyền tải là riêng tư.


TLS Upstream 

Là việc sử dụng TLS ở phía client, tức là mã hóa kết nối giữa client (trình duyệt web, ứng dụng...) và proxy server. Client sẽ mở kết nối TLS với proxy server để đảm bảo dữ liệu truyền tải từ client lên là riêng tư.


Client <===TLS===> Load balancer <===TLS ==> Server app


Cấu hình môi trường thì dùng lại lab bài hôm trước, click vào link trên để xem, giờ có các manifest và kịch bạn theo lý thuyết ở trên sẽ  như sau : 


TLS Termination :

Đối với phần này thì khá đơn giản, copy lại manifest của bài trước, thêm vài thứ vào là xong, phần này khá là nhẹ.

Tạo namespace

kind: Namespace
apiVersion: v1
metadata:
  name: chemgio-project-tls

Tạo cert và tạo secret

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt


~/chemgio-project-tls/certs$ k create secret tls chemgio-secret-project-tls --key=ca.key --cert=ca.crt -n chemgio-project-tls


Tạo deploy


kind: Deployment
apiVersion: apps/v1
metadata:
  name: chemgio-project-tls
  namespace: chemgio-project-tls
spec:
  replicas: 2
  selector:
    matchLabels:
      app: chemgio-project-tls
  template:
    metadata:
      labels:
        app: chemgio-project-tls
    spec:
      containers:
      - image: nginx
        imagePullPolicy: IfNotPresent
        name: http
        ports:
        - containerPort: 80
          protocol: TCP
        resources: {}


Tạo service

kind: Service
apiVersion: v1
metadata:
  name: chemgio-project-tls
  namespace: chemgio-project-tls
spec:
  selector:
    app: chemgio-project-tls
  ports:
    - port: 80
      targetPort: 80


Tạo HTTPProxy


apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
  name: chemgio-project-tls
  namespace: chemgio-project-tls
spec:
  virtualhost:
    fqdn: chemgio.loc
    tls:
      secretName: chemgio-secret-project-tls
  routes:
    - services:
        - name: chemgio-project-tls
          port: 80


Cuối cùng là xong phần TLS Termination, phần này khá nhẹ nhàng và đơn giản, vì bên trong không bận tâm gì nhiều. :)


TLS Termination  - Upstream TLS - Kubernetes kết hợp với MetalLB và Contour ingress controller trên Kubernetes On-Premises



TLS Termination  - Upstream TLS - Kubernetes kết hợp với MetalLB và Contour ingress controller trên Kubernetes On-Premises


Upstream TLS :

Tạo Namespace


kind: Namespace
apiVersion: v1
metadata:
  name: demo1-project-tls-upstream


Tạo ConfigMap : Có thể tạo config map từ manifest or import từ default.conf cũng được.


apiVersion: v1
data:
  default.conf: |-
        server {
                listen 80 default_server;
                listen [::]:80 default_server ipv6only=on;
                server_name localhost;

                location / {
                        return 301 https://$host$request_uri;
                }
        }

        server {
                listen 443 ssl;
                listen [::]:443 ssl;
                server_name localhost;

                ssl_certificate /etc/nginx/ssl/tls.crt;
                ssl_certificate_key /etc/nginx/ssl/tls.key;


                root /usr/share/nginx/html;
                index index.html;

                location / {
                        try_files $uri $uri/ =404;
                }
        }

kind: ConfigMap
metadata:
  name: demo1-configmap-tls-upstream
  namespace: demo1-project-tls-upstream


Tạo Secrets : ở đây là môi trường lab, nhằm phục vụ cho môi trường private nên hiện tại đang dùng openssl để giả lập cert, với môi trường thực tế thì thay đổi lại sao cho phù hợp.

openssl genpkey -algorithm RSA -out private.key


openssl rsa -pubout -in private.key -out public.pem


openssl req -new -key private.key -out server.csr


openssl genpkey -algorithm RSA -out ca-private.key


openssl req -new -key ca-private.key -out ca-csr.pem


openssl x509 -req -in ca-csr.pem -signkey ca-private.key -out ca-certificate.pem


openssl x509 -req -in server.csr -CA ca-certificate.pem -CAkey ca-private.key -CAcreateserial -out server-certificate.pem


Sau khi chạy các lệnh trên thì được danh sách file như sau: 


ca-certificate.pem  ca-csr.pem  ca-private.key  private.key  public.pem  server-certificate.pem  server.csr


Sử dụng các file cần thiết như bên dưới để tạo secret, theo dõi bên dưới để biết file nào cần dùng.


Tạo secret private

kubectl create secret tls demo1-secret-tls-upstream-private --key="private.key" --cert="server-certificate.pem" -n demo1-project-tls-upstream

Tạo secret public


kubectl create secret tls demo1-secret-tls-upstream-public --key="ca-private.key" --cert="ca-certificate.pem" -n demo1-project-tls-upstream



Tạo Deployment : Bên dưới là manifest tạo ra deployment và hiện tại đang replicas  tương ứng 2 pod sẽ chạy cho dự án này, cần chú ý rõ phần volumes vì nó dùng để mount các tls chạy nội bộ bên trong.


kind: Deployment
apiVersion: apps/v1
metadata:
  name: demo1-project-tls-upstream
  namespace: demo1-project-tls-upstream
spec:
  replicas: 2
  selector:
    matchLabels:
      app: demo1-project-tls-upstream
  template:
    metadata:
      labels:
        app: demo1-project-tls-upstream
    spec:
      containers:
      - image: nginx
        imagePullPolicy: IfNotPresent
        name: http
        ports:
        - containerPort: 80
        - containerPort: 443
        volumeMounts:
        - name: demo1-secret-tls-upstream-private
          mountPath: /etc/nginx/ssl
        - name: demo1-project-tls-upstream
          mountPath: /etc/nginx/conf.d
      volumes:
        - name: demo1-secret-tls-upstream-private
          secret:
            secretName: demo1-secret-tls-upstream-private
        - name: demo1-project-tls-upstream
          configMap:
            name: demo1-configmap-tls-upstream


Tạo Service : Sau khi chạy xong service này thì xem như phần bên trong đã hoàn tất, có thể test qua cổng serice thì xem như hoàn tất. Điểm lưu ý là phần annotations nếu muốn Upstream TLS thì bắt buộc phải có https://projectcontour.io/upstream-protocol.tls: "443,https" nếu không có sẽ bị lỗi ngay. Bên dưới sẽ có phần note để có thể hình dung ra.


apiVersion: v1
kind: Service
metadata:
  name: demo1-project-tls-upstream
  namespace: demo1-project-tls-upstream
  annotations:
    projectcontour.io/upstream-protocol.tls: "443,https"
spec:
  ports:
  - name: https
    port: 443
    targetPort: 443
  selector:
    app: demo1-project-tls-upstream

Đây là hình test bên trong trước, đảm bảo pod thông qua service đã hoạt động.


TLS Termination  - Upstream TLS - Kubernetes kết hợp với MetalLB và Contour ingress controller trên Kubernetes On-Premises



HTTPProxy : Thông qua cổng service sẽ cấu hình HTTPProxy cho web ra bên ngoài thông qua serice, và kết quả sẽ như sau.


apiVersion: projectcontour.io/v1
kind: HTTPProxy
metadata:
  name: demo1-project-tls-upstream
  namespace: demo1-project-tls-upstream
spec:
  virtualhost:
    fqdn: demo1.loc
    tls:
      secretName: demo1-secret-tls-upstream-public
  routes:
  - services:
    - name: demo1-project-tls-upstream
      port: 443

Kết quả test bên ngoài như sau :


TLS Termination  - Upstream TLS - Kubernetes kết hợp với MetalLB và Contour ingress controller trên Kubernetes On-Premises



TLS Termination  - Upstream TLS - Kubernetes kết hợp với MetalLB và Contour ingress controller trên Kubernetes On-Premises

Note: Như phần service ở trên nói nếu bỏ annotations  thì sao, vấn đề sẽ xảy ra vì nó sẽ không hiểu và kết quả xảy ra như sau. Bên dưới là sau khi remove và replace force lại sevice.


TLS Termination  - Upstream TLS - Kubernetes kết hợp với MetalLB và Contour ingress controller trên Kubernetes On-Premises




TLS Termination  - Upstream TLS - Kubernetes kết hợp với MetalLB và Contour ingress controller trên Kubernetes On-Premises



Ở trên đây là ví dụ cụ thể được follow theo document của project contour, nếu bạn muốn nghiên cứu thêm có thể đọc tài liệu và nghiên cứu thêm, nó khá là nhiều nên cứ từ từ trải nghiệm :)


Nhãn: