MicroK8s部署WSO2 APIM 4.3后Publisher页面异常求助
解决WSO2 API Manager 4.3部署后Publisher页面异常及数据库未知列'TYPE'错误
问题场景
在MicroK8s单节点环境部署WSO2 APIM 4.3,已完成以下配置:
- 镜像配置:
dockerRegistry: "docker.io" imageName: "wso2/wso2am" imageTag: "4.3.0" imagePullPolicy: Always - 存储类配置:
persistentRuntimeArtifacts: storageClass: &storage_class "microk8s-hostpath" - Ingress配置:
ingress: management: enabled: true hostname: "paul-inspiron-5570.local" annotations: kubernetes.io/ingress.class: "public" nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" nginx.ingress.kubernetes.io/affinity: "cookie" nginx.ingress.kubernetes.io/session-cookie-name: "route" nginx.ingress.kubernetes.io/session-cookie-hash: "sha1" gateway: enabled: true hostname: "gateway.paul-inspiron-5570.local" annotations: kubernetes.io/ingress.class: "public" nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" websub: enabled: true hostname: "websub.paul-inspiron-5570.local" annotations: kubernetes.io/ingress.class: "public" nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" websocket: enabled: true hostname: "websocket.paul-inspiron-5570.local" annotations: kubernetes.io/ingress.class: "public" nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - 部署命令:
microk8s helm3 install my-apim am-single --version 4.3.0 --namespace myapim --dependency-update --create-namespace
部署完成后,登录Publisher端点仅显示“Let’s get started ! Choose your option to create an API”,无操作选项;日志报错无法获取租户域carbon.super的环境,原因是SQL语句中存在未知列TYPE。
解决方案
1. 确认数据库表结构缺失
进入APIM容器检查数据库表:
# 替换<my-apim-pod-name>为实际pod名称 microk8s kubectl exec -it <my-apim-pod-name> -n myapim -- bash
连接内置H2数据库:
cd /home/wso2carbon/wso2am-4.3.0/bin ./h2.sh
在H2控制台连接数据库(JDBC URL:jdbc:h2:file:/home/wso2carbon/wso2am-4.3.0/repository/database/WSO2AM_DB),执行查询:
DESCRIBE AM_ENVIRONMENT;
如果结果中没有TYPE字段,说明数据库初始化脚本未完整执行。
2. 手动添加缺失的数据库列
在H2控制台执行以下SQL语句:
ALTER TABLE AM_ENVIRONMENT ADD TYPE VARCHAR(255) DEFAULT 'hybrid';
执行完成后,验证列是否添加成功:
SELECT TYPE FROM AM_ENVIRONMENT;
3. 重启APIM Pod
删除现有Pod触发重建:
microk8s kubectl delete pod <my-apim-pod-name> -n myapim
等待Pod启动完成后,重新登录Publisher页面检查功能是否恢复。
额外排查点
- 存储挂载验证:检查Pod的存储挂载状态,确保
microk8s-hostpath正确持久化数据库文件,避免每次重启都重新初始化:microk8s kubectl describe pod <my-apim-pod-name> -n myapim | grep -A 10 Volumes - 版本一致性:确认Helm Chart版本
4.3.0与镜像版本4.3.0完全匹配,避免版本不兼容导致脚本执行异常。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

