manageiq-operator

Manageiq Operator Docker 镜像

用于在Kubernetes上管理ManageIQ的operator,实现其部署、扩展及运维自动化

下载次数: 0状态:社区镜像维护者:manageiq仓库类型:镜像最近更新:2 个月前
下载命令
点击查看

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):

yaml
apiVersion: 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 创建实例:

bash
kubectl apply -f manageiq-instance.yaml -n manageiq-system

3. 配置参数说明

参数路径类型描述默认值
spec.imagestringManageIQ 镜像地址及版本manageiq/manageiq:latest
spec.imagePullPolicystring镜像拉取策略(Always/IfNotPresent/Never)IfNotPresent
spec.resourcesobjectCPU/内存资源请求与限制requests: {cpu: "1", memory: "2Gi"}, limits: {cpu: "2", memory: "4Gi"}
spec.storageobject存储配置,包含 storageClassName(存储类)和 size(存储大小)storageClassName: standard, size: 50Gi
spec.database.externalbool是否使用外部数据库false
spec.network.serviceTypestring服务类型(ClusterIP/NodePort/Load***)ClusterIP
spec.network.ingress.enabledbool是否启用 Ingressfalse
spec.replicasintManageIQ 实例副本数1
spec.backup.enabledbool是否启用自动备份false
spec.backup.schedulestring备份定时任务(Cron 表达式)"0 0 * * *"(每日凌晨 0 点)

4. 访问 ManageIQ

通过 Ingress 访问(推荐)

若启用 Ingress 且配置 hostname: manageiq.example.com,直接通过 https://manageiq.example.com 访问。

通过 NodePort/Load*** 访问

获取服务地址:

bash
kubectl get service my-manageiq -n manageiq-system

根据服务类型,通过 NodePort(节点IP:NodePort)或 Load***(EXTERNAL-IP)访问。

5. 升级与回滚

升级 Operator

通过 Helm 升级:

bash
helm upgrade manageiq-operator manageiq-operator/manageiq-operator -n manageiq-system --version 1.1.0

升级 ManageIQ 版本

修改 CR 中的 spec.image 字段至目标版本,Operator 会自动执行滚动升级:

bash
kubectl patch manageiq my-manageiq -n manageiq-system --type merge -p '{"spec": {"image": "manageiq/manageiq:jansa-1"}}'

回滚

若升级失败,Operator 会自动回滚至前一版本。也可手动回滚 CR 配置:

bash
kubectl apply -f manageiq-instance-rollback.yaml -n manageiq-system  # 应用历史稳定版本的 CR 配置

6. 卸载

卸载 ManageIQ 实例

bash
kubectl delete manageiq my-manageiq -n manageiq-system

卸载 Operator

bash
helm uninstall manageiq-operator -n manageiq-system
kubectl delete crd manageiqs.manageiq.manageiq.org

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 manageiq-operator 镜像标签

docker pull docker.xuanyuan.run/manageiq/manageiq-operator:<标签>

DockerHub 原生拉取命令

docker pull manageiq/manageiq-operator:<标签>
专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载在线技术支持专业版保障服务可用付费会员免广告