Các lựa chọn thay thế cho việc sử dụng Docker trong Docker (dind) cho nô lệ Jenkins chạy trong container là gì?


7

Khi sử dụng nô lệ Jenkins chạy trong container, các triển khai thay thế hoặc "an toàn" (về bảo mật) cho Docker trong Docker là gì .

Ví dụ kiến ​​trúc:

  1. Bậc thầy Jenkins chạy như container Docker
  2. Nô lệ Jenkins chạy như container Docker
  3. Nhiệm vụ thử nghiệm được thực hiện trong Docker container

Một số lựa chọn thay thế được biết đến:

Các ràng buộc làm rõ: ý tưởng là sử dụng Jenkins làm người điều phối và Docker cho môi trường sạch sẽ, phần còn lại của kiến ​​trúc là một chủ đề để thay đổi.


2
Cảm ơn câu hỏi, bạn đã dạy tôi về Docker-in-docker- đối với những người khác mới biết về chủ đề này thì thật đáng để đọc mô tả về ưu điểm và nhược điểm của Jérôme Petazzoni .
Richard Slater

1
@RichardSlater Phụ thuộc vào cách xác định khối lượng công việc (công việc / ngày, nô lệ / chủ, cpu, dữ liệu / công việc) nhưng câu hỏi chung chung hơn. Tất cả các bảo mật, rùa, hiệu suất được liệt kê là những ứng cử viên hợp pháp cần tránh, cũng như mùi "hack hack" được đề cập trong "mô tả về ưu điểm và nhược điểm của Jérôme Petazzoni về ..."
rombob

1
Không, vẫn chưa rõ liệu kiến ​​trúc của bạn có còn phải dựa vào nô lệ của jenkins trong bến tàu hay không. Dù sao, các thủ thuật cho ruby ​​/ python / java với nhiều phiên bản trên cùng một máy chủ (hoặc hình ảnh docker FWIW) đã được biết đến, những thủ thuật cho nodejs hoặc Go ít "phổ biến" hơn và ít dễ cài đặt hơn. Vì vậy, tôi thực sự không chắc chắn về cách bạn cởi mở và những người bạn không. Nếu kế hoạch vẫn còn jenkins là người điều phối và Docker cho môi trường sạch sẽ có câu trả lời, nếu nô lệ phải ở trong môi trường docker, mọi thứ sẽ là một hack xấu xí mà bạn không thể tin tưởng vào kết quả kiểm tra.
Tensibai

1
@Tensibai cảm ơn bạn đã chỉ đạo làm rõ về câu hỏi, quan điểm của tôi là giữ cho nó chung chung hơn để có nhiều chỗ hơn cho sự sáng tạo trong câu trả lời, bao gồm cả những điều bạn đã đề cập. Đối với trường hợp cụ thể, các thủ thuật được biết và đang được sử dụng, Docker cơ hội đưa ra là có một cách thực hiện cho tất cả các loại khối lượng công việc, nếu có thể, hãy thử tập trung vào làm cho nó ổn định và an toàn.
rombob

1
@Tensibai Cảm ơn bạn đã phản hồi, làm rõ thêm vào câu hỏi.
rombob

Câu trả lời:


5

Để tránh phụ thuộc vào dind(ngoài việc xây dựng hình ảnh mới từ dockerfile, điều này sẽ ổn) Tôi sẽ tìm hiểu xung quanh plugin kubernetes của Jenkins .

Nó rõ ràng cần phải mang đến một cụm kubernetes nhưng cho phép có một tác nhân jenkins một lần để chạy thử nghiệm trong một môi trường biệt lập sạch sẽ, và sau đó xé nó ra. Chi phí bảo trì của cụm kubernetes không nên lớn hơn duy trì nô lệ Jenkins của bạn.

Điểm thưởng là bạn có thể phiên bản nô lệ của mình với môi trường cụ thể và không phải điều chỉnh xung quanh cho nhiều phiên bản ruby ​​/ java / python và để tác vụ chọn "môi trường" thích hợp bằng cách chỉ định hình ảnh tác nhân để sử dụng và có sẵn sàng để kiểm tra môi trường mà không có bất kỳ tinh chỉnh trước thử nghiệm.

Tôi muốn hướng tới kurbenetes như bộ lập lịch chứa vì nó tương đối nhẹ để cấu hình và bảo trì.


Cách tiếp cận tuyệt vời, như một mesos thay thế, swarm có thể được sử dụng, IMO swarm là một ứng cử viên tuyệt vời chỉ vì bảo trì tương đối dễ dàng nhưng có thể đi kèm với giá cả ổn định, công nghệ quá mới
rombob 28/03/2017

@rombob thực sự, và mesos khá nặng để duy trì và có lẽ quá mức cần thiết cho trường hợp sử dụng này, tôi đã tự hỏi nếu nói rằng so sánh / điểm này sẽ có ý nghĩa trong câu trả lời này.
Tensibai

có lẽ so sánh sẽ là ứng cử viên tuyệt vời cho một câu hỏi mới
rombob 28/03/2017

@rombob Thông thường, chúng giảm dần sự hữu ích rất nhanh, đặc biệt với bầy đang được phát triển tích cực, nó sẽ cần một bản cập nhật gần như mỗi tuần. Vì vậy, tôi sẽ tránh nó, ngay cả một bài đăng trên blog không thực sự rõ ràng về câu hỏi sau toàn bộ danh sách hoặc ủng hộ
Tensibai

Khi sử dụng plugin Jenkins Kubernetes, làm thế nào để bạn tự động chọn một thùng chứa để xây dựng. Tôi sử dụng plugin Jenkins Kubernetes, nhưng tôi vẫn sử dụng dind vì tôi muốn xây dựng bên trong các thùng chứa. Tôi có một thùng chứa nô lệ với dind trong đó, nhưng phải có một cách tốt hơn.
David West
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.