
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Infinispan Operator是一个OpenShift/Kubernetes操作器,用于在容器化环境中部署、运行和管理Infinispan集群。它通过自定义资源定义(CRD)实现对Infinispan集群的生命周期管理,支持集群扩缩容、配置定制及跨站点部署等功能。
system:admin权限)或Minikube集群标准构建流程
bash$ git clone https://github.com/infinispan/infinispan-operator.git
bash$ cd ./infinispan-operator
bash$ make
bash$ make build
bash# 标准多阶段构建 $ make image IMAGE=image_name TAG=image_tag # 非多阶段构建(适用于不支持多阶段构建的Docker版本) $ make image IMAGE=image_name TAG=image_tag MULTISTAGE=NO
Cekit构建
build/cekit目录下提供Cekit构建环境:
bash$ cekit build --overrides "{version: <version_default_is_latest>}" docker
OpenShift环境
bash$ oc cluster up
bash$ export KUBECONFIG=/path/to/admin.kubeconfig
从源代码在OKD上创建Infinispan Operator:
bash$ make run
bash$ export PROJECT_NAME=myproject
bash$ make run-local
(可选)通过bundle文件在OKD上安装Operator:
bash$ oc new-project infinispan-operator
infinispan-operator,下载Operator安装bundle文件并替换预定义命名空间(例如替换为my-infinispan-operator):bash$ sed -i '/# Replace/{n;s/.*/ namespace: my-infinispan-operator/}' operator-install.yaml $ oc apply -f operator-install.yaml
infinispan-operator,直接安装:bash$ oc apply -f https://raw.githubusercontent.com/infinispan/infinispan-operator/master/deploy/operator-install.yaml
打开新终端窗口,创建包含2个节点的Infinispan集群:
bash$ oc apply -f https://raw.githubusercontent.com/infinispan/infinispan-operator/master/deploy/cr/minimal/cr_minimal.yaml infinispan.infinispan.org/example-infinispan configured
bash$ oc get pods -w NAME READY STATUS RESTARTS AGE example-infinispan-54c66fd755-28lvx 0/1 ContainerCreating 0 4s example-infinispan-54c66fd755-7c4zc 0/1 ContainerCreating 0 4s infinispan-operator-69d7d4469d-f62ws 1/1 Running 0 3m example-infinispan-54c66fd755-8gbxf 1/1 Running 0 8s example-infinispan-54c66fd755-7c4zc 1/1 Running 0 8s
Minikube环境
bash$ make minikube-config
bash$ make minikube-start
bash$ make minikube-run-local
(可选)通过bundle文件在Kubernetes上安装Operator:
bash$ kubectl create namespace infinispan-operator
infinispan-operator,下载Operator安装bundle文件并替换预定义命名空间(例如替换为my-infinispan-operator):bash$ sed -i '/# Replace/{n;s/.*/ namespace: my-infinispan-operator/}' operator-install.yaml $ kubectl apply -f operator-install.yaml
infinispan-operator,直接安装:bash$ kubectl apply -f https://raw.githubusercontent.com/infinispan/infinispan-operator/master/deploy/operator-install.yaml
打开新终端窗口,创建包含2个节点的Infinispan集群:
bash$ kubectl apply -f https://raw.githubusercontent.com/infinispan/infinispan-operator/master/deploy/cr/minimal/cr_minimal.yaml
bash$ kubectl get pods -w NAME READY STATUS RESTARTS AGE example-infinispan-0 1/1 Running 0 8m29s example-infinispan-1 1/1 Running 0 5m53s
修改deploy/cr/minimal/cr_minimal.yaml中的集群大小,然后重新应用配置,Infinispan Operator将自动扩展或缩减集群节点数量。
Infinispan Operator基于自定义资源定义(CRD)创建集群,定义集群节点数和配置参数。资源定义详情见https://github.com/infinispan/infinispan-operator/blob/master/pkg/apis/infinispan/v1/infinispan_types.go%E3%80%82
最小配置示例
创建Infinispan集群的最小配置:
yamlapiVersion: infinispan.org/v1 kind: Infinispan metadata: # 设置Infinispan集群名称 name: example-infinispan-minimal spec: # 设置集群节点数量 replicas: 3
Infinispan Operator提供更多高级配置能力,详细信息请参见官方操作器文档。
使用test目标在指定OKD集群上测试Operator:
bash$ make test
bash$ make test KUBECONFIG=/path/to/openshift.local.clusterup/openshift-apiserver/admin.kubeconfig
跨站点(xsite)测试
跨站点测试需创建两个k8s Kind集群或使用已准备的两个OKD集群:
bash$ source build/travis/configure-travis-ci-xsite.sh $KIND_VERSION $METALLB_VERSION
$KIND_VERSION和$METALLB_VERSION的实际值可在.travis.yml文件中查看。
在运行的Kind集群中本地测试:
bash$ go test -v ./test/e2e/xsite/ -timeout 30m
operatorhub.io提交分为两类:上游(upstream)和社区(community):
测试提交分两步:
命名空间修改:本文档测试流程假设operator安装在infinispan-operator命名空间。使用其他命名空间时,需修改YAML描述文件和make调用:描述文件中替换infinispan-operator为目标命名空间;脚本中添加环境变量,例如make NAMESPACE=my_namespace ${make_target}。
上游提交测试(Minikube)
operatorhub/minikube目录包含用于测试上游提交的Makefile和目标。Minikube不提供Operator Lifecycle Manager(OLM)和Operator Marketplace组件,需先安装。
minikube在$PATH中make目标,例如:bash$ cd operatorhub/minikube $ make all
指定 hypervisor 驱动
Makefile使用针对Infinispan Operator测试优化的minikube配置文件,默认使用Virtual Box驱动。通过VMDRIVER参数指定其他hypervisor:
bash# 指定驱动 make VMDRIVER=${vm_driver_name} ${make_target} # 不指定驱动(传递空值) make VMDRIVER= ${make_target}
支持的hypervisor详见https://github.com/kubernetes/minikube%E3%80%82
Make目标
make all:按顺序运行所有make目标
make test:使用上游提交实例化Infinispan集群(需已安装Infinispan CRD且Operator正在运行)
检查CRD是否安装:
bash$ kubectl get crd NAME CREATED AT infinispans.infinispan.org 2019-04-03T09:15:48Z
检查Operator是否运行:
bash$ kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE infinispan-operator infinispan-operator-5549f446f-9mqkp 1/1 Running 0 44s
make clean:从Kubernetes集群中移除示例Infinispan自定义资源和Operator
make delete:销毁Minikube虚拟机
错误排查
no matches for kind错误通常因Kubernetes元素未正确安装(如描述文件安装过快)。解决步骤:
bash$ kubectl get pods --all-namespaces
社区提交测试(OpenShift)
社区提交可在OpenShift 4或OpenShift 3.11上测试。
OpenShift 4测试
operatorhub/openshift4目录包含用于测试社区提交的Makefile和目标。OpenShift 4已包含OLM和Operator Marketplace组件,无需单独安装。
前提条件:运行中的OpenShift 4集群,配置有oc客户端,且以管理员账户登录。
运行相应的make目标,例如:
bash$ cd operatorhub/openshift4 $ make all
Make目标
make all:将Infinispan Operator添加到OperatorHub,在指定命名空间安装,然后使用社区提交实例化Infinispan集群make install-operatorsource:将Infinispan Operator添加到OperatorHub,可通过OpenShift控制台的OperatorHub界面手动安装make test:使用社区提交实例化Infinispan集群make clean:从Kubernetes集群中移除示例Infinispan自定义资源和Operator创建发布:
bash$ make DRY_RUN=false GITHUB_USERNAME=<...> REPLACES_RELEASE_NAME=N.M.O RELEASE_NAME=X.Y.Z SERVER_VERSION=a.b.c release
发布脚本最终会在https://github.com/operator-framework/community-operators%E5%88%9B%E5%BB%BA%E4%B8%A4%E4%B8%AAPR%E3%80%82PR%E5%88%9B%E5%BB%BA%E5%90%8E%EF%BC%8C%E7%BC%96%E8%BE%91%E6%8F%8F%E8%BF%B0%E5%B9%B6%E6%B7%BB%E5%8A%A0https://github.com/operator-framework/community-operators%E5%BB%BA%E8%AE%AE%E7%9A%84PR%E8%A1%A8%E5%8D%95%EF%BC%8C%E6%A0%87%E8%AE%B0%E9%80%82%E7%94%A8%E5%AD%97%E6%AE%B5%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务