Deploy CloudStack using a container runtime like Docker or Podman
- Ngôn ngữ chính
- Java
- Star
- 3.1k
- Fork
- 1.4k
- Merge trung bình
- 6 ngày 19 giờ
- Pull request đã merge (30 ngày)
- 32
Mô tả
### The required feature described as a wish
As an Operator I would like to have CloudStack containerized, so I can run CloudStack in a container runtime like Docker and Podman.
I work for a public cloud provider where most of our stack, OpenStack and Ceph, are deployed using a container runtime where each service is a stateless container. We transitioned from the more traditional deployment, installing packages on hosts, to our current setup solving most of our maintenance issues and efforts to keep the stack up to date.
In an effort to adopt other technologies we attempted to containerize the three CloudStack services, management server, usage server and the agent but faced significant obstacles that hindered our progress.
Notable obstacles running CloudStack services in a container:
- The management server calling bash and/or service/systemctl commands from Java
- The agent server calling bash and/or meminfo commands from Java
Other obstacles worth mentioning:
- Package building process dependencies, external application/packages dependencies and (actual) OS dependencies need better documentation. Dependencies that are assumed present in supported distributions in particular
- Missing a Software Bill of Materials
- Direct environment OS dependencies and commands should be replaced or removed where possible
- Dependencies on other applications/services should be handled through connection methods that fit containerization, no direct /bin/bash cals should be used on required binaries
- In instances where removal is not possible, communication with OS or services present on the OS should be through some sort of socket or connection that is configurable or through temporary containers like bootstrap containers, for instance:
- libvirt, which is communicated to through either the socket on the host or the socket in a container - https://opendev.org/openstack/kolla-ansible/src/branch/master/ansible/roles/nova-cell/tasks/
- meminfo and other host system statistics
As open-source cloud stacks, OpenStack and CloudStack (in combination with KVM at least) share common technical challenges, therefore community projects like [kolla-ansible](https://github.com/openstack/kolla-ansible/) (deploy OpenStack using Ansible and containers) and [OpenStack-Helm](https://github.com/openstack/openstack-helm) (deploy OpenStack on Kubernetes) can be inspirational when containerizing CloudStack. One hurdle these projects have tackled, among others, is the bootstrapping of libvirt TLS communication.
I'm willing to share our experience containerizing CloudStack in order to get momentum.
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu bằng cách lập danh mục management server, usage server và agent, sau đó xem xét các trở ngại được liệt kê liên quan đến bash, systemctl, meminfo, các phụ thuộc của hệ điều hành và việc xây dựng gói. Công việc được xem là hoàn tất khi có tài liệu về việc triển khai dạng container cho các dịch vụ CloudStack bằng Docker hoặc Podman, cùng với các tích hợp cần thiết với host và dịch vụ, tài liệu về các phụ thuộc và software bill of materials được xử lý.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- docker, java
- Lĩnh vực
- cloud, devops, infrastructure
- Loại issue
- Tính năng
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 20/100