Manageiq Operator Docker 镜像
用于在Kubernetes上管理ManageIQ的operator,实现其部署、扩展及运维自动化
Kubernetes Operator for ManageIQ 技术文档
镜像概述和主要用途
Kubernetes Operator for ManageIQ 是一个基于 Kubernetes Operator 框架构建的工具,旨在自动化 ManageIQ 平台在 Kubernetes 集群中的部署、配置、运维及全生命周期管理。该 Operator 通过自定义资源定义(CRD)实现声明式 API,将 ManageIQ 的部署和管理逻辑编码为软件,简化用户在 Kubernetes 环境中使用 ManageIQ 进行多云资源管理的复杂度。
主要用途:
- 自动化 ManageIQ 在 Kubernetes 集群中的部署与初始化配置
- 管理 ManageIQ 实例的全生命周期(包括升级、回滚、扩缩容)
- 确保 ManageIQ 集群的高可用性与稳定性
- 简化 ManageIQ 与 Kubernetes 生态组件(如存储、网络、监控)的集成
核心功能和特性
1. 声明式管理
基于 Kubernetes CRD(ManageIQ 自定义资源)实现声明式配置,用户通过定义 CR 资源即可描述期望的 ManageIQ 集群状态,Operator 自动协调实际状态与期望状态。
2. 自动化部署与配置
- 自动创建 ManageIQ 所需的 Deployment、Service、Ingress、ConfigMap 等 Kubernetes 资源
- 支持自定义初始化配置(如管理员账户、数据库连接、存储策略等)
3. 全生命周期管理
- 升级管理:支持 ManageIQ 版本的滚动升级,自动处理依赖组件(如 PostgreSQL、Redis)的兼容性
- 回滚机制:升级失败时自动回滚至前一稳定版本
- 扩缩容:支持基于 CR 配置的手动/自动扩缩容(如调整 Web 节点、Worker 节点数量)
4. 高可用支持
- 自动配置 ManageIQ 组件的副本数与 Pod 反亲和性,避免单点故障
- 集成 Kubernetes 原生健康检查(liveness/readiness probe),自动重启异常实例
5. 监控与可观测性
- 暴露 Prometheus 兼容指标(如实例健康状态、资源使用率、请求延迟等)
- 支持集成 Kubernetes Events 与日志系统,便于问题排查
6. 备份与恢复
- 支持定时备份 ManageIQ 数据(基于
spec.backup配置) - 提供数据恢复接口,可通过 CR 配置指定备份点恢复实例
使用场景和适用范围
使用场景
- 企业级多云管理平台搭建:通过 Operator 快速部署 ManageIQ,实现对虚拟机、容器、云服务(AWS/Azure/GCP)的统一管理
- ManageIQ 容器化转型:将传统物理机/虚拟机部署的 ManageIQ 迁移至 Kubernetes 环境,提升资源利用率与弹性
- 自动化运维 ManageIQ 集群:减少人工操作,通过声明式配置实现 ManageIQ 集群的标准化部署与运维
适用范围
- Kubernetes 集群版本:1.21 及以上(支持 CRD v1、Operator SDK 兼容性)
- ManageIQ 版本兼容性:支持 ManageIQ Ivanchuk 及以上版本(具体版本需参考 Operator 发行说明)
- 集群资源要求:
- 控制平面:至少 2 CPU 核心、4GB 内存
- 工作节点:单节点部署建议 4 CPU 核心、8GB 内存;生产环境建议 3 节点集群,每节点 8 CPU 核心、16GB 内存
- 存储:至少 50GB 持久化存储(支持 CSI 兼容存储类)
详细的使用方法和配置说明
前置条件
- 已部署 Kubernetes 集群(1.21+),且集群支持持久化存储(PVC)
- 安装
kubectl工具(版本与集群匹配) - (可选)安装 Helm 3.8+(用于通过 Helm Chart 安装 Operator)
1. 安装 Operator
方式一:通过 Helm Chart 安装(推荐)
bash# 添加 Helm 仓库 helm repo add manageiq-operator https://manageiq.github.io/operator-charts helm repo update # 安装 Operator(指定命名空间,如 manageiq-system) helm install manageiq-operator manageiq-operator/manageiq-operator \ --namespace manageiq-system \ --create-namespace \ --version 1.0.0 # 替换为实际版本号
方式二:通过 kubectl 安装
bash# 创建命名空间 kubectl create namespace manageiq-system # 部署 CRD kubectl apply -f https://raw.githubusercontent.com/ManageIQ/manageiq-operator/main/config/crd/bases/manageiq.manageiq.org_manageiqs.yaml # 部署 Operator 控制器 kubectl apply -f https://raw.githubusercontent.com/ManageIQ/manageiq-operator/main/config/manager/manager.yaml -n manageiq-system
2. 创建 ManageIQ 实例
通过定义 ManageIQ 自定义资源(CR)创建实例,示例 YAML(manageiq-instance.yaml):
yamlapiVersion: manageiq.manageiq.org/v1alpha1 kind: ManageIQ metadata: name: my-manageiq namespace: manageiq-system spec: # 基础配置 image: docker.xuanyuan.run/manageiq/manageiq:ivanchuk-1 # 镜像版本 imagePullPolicy: IfNotPresent # 镜像拉取策略 # 资源限制 resources: requests: cpu: "2" memory: "4Gi" limits: cpu: "4" memory: "8Gi" # 存储配置 storage: storageClassName: standard # 存储类名称 size: 100Gi # 存储大小 # 数据库配置(可选,默认使用内置 PostgreSQL) database: external: false # 是否使用外部数据库 # 外部数据库配置(当 external: true 时需填写) # host: postgres.example.com # port: 5432 # database: manageiq # user: manageiq_user # passwordSecret: # name: postgres-credentials # key: password # 网络配置 network: serviceType: ClusterIP # 服务类型(ClusterIP/NodePort/LoadBalancer) ingress: enabled: true hostname: manageiq.example.com tls: enabled: true secretName: manageiq-tls # 高可用配置 replicas: 3 # 副本数(建议生产环境 ≥3) # 备份配置 backup: enabled: true schedule: "0 3 * * *" # 每日凌晨 3 点执行备份 storageClassName: backup-storage size: 50Gi
应用 CR 创建实例:
bashkubectl apply -f manageiq-instance.yaml -n manageiq-system
3. 配置参数说明
| 参数路径 | 类型 | 描述 | 默认值 |
|---|---|---|---|
spec.image | string | ManageIQ 镜像地址及版本 | manageiq/manageiq:latest |
spec.imagePullPolicy | string | 镜像拉取策略(Always/IfNotPresent/Never) | IfNotPresent |
spec.resources | object | CPU/内存资源请求与限制 | requests: {cpu: "1", memory: "2Gi"}, limits: {cpu: "2", memory: "4Gi"} |
spec.storage | object | 存储配置,包含 storageClassName(存储类)和 size(存储大小) | storageClassName: standard, size: 50Gi |
spec.database.external | bool | 是否使用外部数据库 | false |
spec.network.serviceType | string | 服务类型(ClusterIP/NodePort/Load***) | ClusterIP |
spec.network.ingress.enabled | bool | 是否启用 Ingress | false |
spec.replicas | int | ManageIQ 实例副本数 | 1 |
spec.backup.enabled | bool | 是否启用自动备份 | false |
spec.backup.schedule | string | 备份定时任务(Cron 表达式) | "0 0 * * *"(每日凌晨 0 点) |
4. 访问 ManageIQ
通过 Ingress 访问(推荐)
若启用 Ingress 且配置 hostname: manageiq.example.com,直接通过 https://manageiq.example.com 访问。
通过 NodePort/Load*** 访问
获取服务地址:
bashkubectl get service my-manageiq -n manageiq-system
根据服务类型,通过 NodePort(节点IP:NodePort)或 Load***(EXTERNAL-IP)访问。
5. 升级与回滚
升级 Operator
通过 Helm 升级:
bashhelm upgrade manageiq-operator manageiq-operator/manageiq-operator -n manageiq-system --version 1.1.0
升级 ManageIQ 版本
修改 CR 中的 spec.image 字段至目标版本,Operator 会自动执行滚动升级:
bashkubectl patch manageiq my-manageiq -n manageiq-system --type merge -p '{"spec": {"image": "manageiq/manageiq:jansa-1"}}'
回滚
若升级失败,Operator 会自动回滚至前一版本。也可手动回滚 CR 配置:
bashkubectl apply -f manageiq-instance-rollback.yaml -n manageiq-system # 应用历史稳定版本的 CR 配置
6. 卸载
卸载 ManageIQ 实例
bashkubectl delete manageiq my-manageiq -n manageiq-system
卸载 Operator
bashhelm uninstall manageiq-operator -n manageiq-system kubectl delete crd manageiqs.manageiq.manageiq.org
manageiq 命名空间的其他可用镜像:
镜像拉取方式
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
轩辕镜像加速拉取命令点我查看更多 manageiq-operator 镜像标签
DockerHub 原生拉取命令
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务