manageiq/manageiq-operatorKubernetes Operator for ManageIQ 是一个基于 Kubernetes Operator 框架构建的工具,旨在自动化 ManageIQ 平台在 Kubernetes 集群中的部署、配置、运维及全生命周期管理。该 Operator 通过自定义资源定义(CRD)实现声明式 API,将 ManageIQ 的部署和管理逻辑编码为软件,简化用户在 Kubernetes 环境中使用 ManageIQ 进行多云资源管理的复杂度。
主要用途:
基于 Kubernetes CRD(ManageIQ 自定义资源)实现声明式配置,用户通过定义 CR 资源即可描述期望的 ManageIQ 集群状态,Operator 自动协调实际状态与期望状态。
spec.backup 配置)kubectl 工具(版本与集群匹配)bash# 添加 Helm 仓库 helm repo add manageiq-operator [***] helm repo update # 安装 Operator(指定命名空间,如 manageiq-system) helm install manageiq-operator manageiq-operator/manageiq-operator \ --namespace manageiq-system \ --create-namespace \ --version 1.0.0 # 替换为实际版本号
bash# 创建命名空间 kubectl create namespace manageiq-system # 部署 CRD kubectl apply -f [***] # 部署 Operator 控制器 kubectl apply -f [***] -n manageiq-system
通过定义 ManageIQ 自定义资源(CR)创建实例,示例 YAML(manageiq-instance.yaml):
yamlapiVersion: manageiq.manageiq.org/v1alpha1 kind: ManageIQ metadata: name: my-manageiq namespace: manageiq-system spec: # 基础配置 image: 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/Load***) 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
| 参数路径 | 类型 | 描述 | 默认值 |
|---|---|---|---|
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 点) |
若启用 Ingress 且配置 hostname: manageiq.example.com,直接通过 [***] 访问。
获取服务地址:
bashkubectl get service my-manageiq -n manageiq-system
根据服务类型,通过 NodePort(节点IP:NodePort)或 Load***(EXTERNAL-IP)访问。
通过 Helm 升级:
bashhelm upgrade manageiq-operator manageiq-operator/manageiq-operator -n manageiq-system --version 1.1.0
修改 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 配置
bashkubectl delete manageiq my-manageiq -n manageiq-system
bashhelm uninstall manageiq-operator -n manageiq-system kubectl delete crd manageiqs.manageiq.manageiq.org
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务