2016-12-05 18 views
6

Tôi mới sử dụng Kubernetes và vì vậy tôi tự hỏi thực tiễn tốt nhất khi đưa mã nguồn của ứng dụng của bạn vào chạy container trong Kubernetes hoặc môi trường tương tự như thế nào?Làm thế nào để bạn đặt mã nguồn của bạn vào Kubernetes?

Ứng dụng của tôi là một PHP vì vậy tôi đã PHP (fpm) và Nginx container (chạy từ Google container Engine)

Lúc đầu, tôi đã có khối lượng git, nhưng không có cách nào thay đổi phiên bản ứng dụng như vậy này Tôi chuyển sang emptyDir và có mã nguồn của tôi trong kho lưu trữ zip ở một trong những hình ảnh sẽ giải nén nó vào ổ đĩa này khi bắt đầu và bây giờ tôi có mã nguồn riêng biệt trong cả hai hình ảnh qua git với thư mục git riêng biệt để tôi có/app và/app-git. Điều này là tốt vì tôi không cần phải chia sẻ hoặc cấu hình khối lượng (ít tài nguyên và cấu hình), lớp của ứng dụng được tái sử dụng trong cả hai hình ảnh để không ảnh hưởng đến không gian và vì nó là git "cơ sở" được xây dựng như vậy Tôi chỉ đơn giản có thể điều chỉnh lệnh dockerfile của tôi ở cuối và chuyển sang nhánh hoặc thẻ khác dễ dàng.

Tôi muốn tải xuống tệp lưu trữ có mã nguồn trực tiếp từ kho lưu trữ bằng cách cung cấp thông tin xác thực trong quá trình xây dựng nhưng không hoạt động vì repo của tôi, bitbucket, tạo lưu trữ với id cam kết cuối cùng được nối vào thư mục để không có cách o biết những gì giải nén kho lưu trữ sẽ dẫn đến, vì vậy tôi đã bị mắc kẹt với git chính nó.

Cách xử lý mã nguồn của bạn là gì?

Trả lời

0

Những gì chúng tôi đã thực hiện theo truyền thống với PHP là lớp phủ khi chạy. Về cơ bản các container sẽ có một khối lượng gắn kết với nó với các phím triển khai để repo git của bạn. Điều này sẽ cho phép bạn thực hiện các thao tác kéo git.

Cách tiếp cận nhiều nút hơn là có các hình ảnh được gắn thẻ tùy chỉnh, được gắn thẻ từ fpm hoặc bất kỳ hình ảnh nào bạn đang sử dụng. Bằng cách đó bạn sẽ chạy phiên bản 1.3 của YourImage nơi YourImage sẽ chứa mã phiên bản 1.3 của ứng dụng của bạn.

1

Lý tưởng nhất là bạn sẽ sử dụng các mẫu phân phối liên tục, có nghĩa là sử dụng Travis CI, đường ống Bitbucket hoặc Jenkins để tạo hình ảnh khi thay đổi mã.

tức là mỗi khi mã của bạn thay đổi, bản dựng tự động của bạn sẽ được kích hoạt và tạo hình ảnh Docker mới, chứa mã nguồn của bạn. Sau đó, bạn có thể kích hoạt bản cập nhật cán Triển khai để cập nhật Pod với hình ảnh mới.

Nếu bạn có nội dung động, bạn có thể đặt bộ nhớ này liên tục, bộ nhớ này sẽ được gắn lại trên bản cập nhật Pod.

+0

hướng dẫn rõ ràng về pha lê trên circleci (giả sử bạn đang sử dụng gce, được gắn thẻ trong câu hỏi) https://circleci.com/docs/continuous-deployment-with-google-container-engine/ và https: // circleci .com/docs/google-auth / – Ben

0

Cố gắng tận dụng tích hợp liên tục và triển khai liên tục. Bạn có thể sử dụng Jenkins như máy chủ CI/CD và tạo một số công việc để tạo hình ảnh, đẩy hình ảnh và triển khai hình ảnh.

Tôi khuyên bạn nên đặt mã nguồn của bạn vào hình ảnh docker, thay vì git repo. Bạn cũng có thể trích xuất các tập tin cấu hình từ hình ảnh docker. Trong kubernetes v1.2, nó cung cấp tính năng mới 'ConfigMap', vì vậy chúng ta có thể đặt các tệp cấu hình trong ConfigMap. Khi chạy một nhóm, các tệp cấu hình sẽ được tự động gắn kết. Nó rất tiện lợi.

Các vấn đề liên quan