‘一,wso2部署为pod官网 有四种部署模式,这里使用标准HA部署

1,使用helm把chart拉到本地 官网只有k8s的chart 这里我们要拉下来改一下
官网地址:kubernetes-apim/advanced at master · wso2/kubernetes-apim · GitHub
git clone https://github.com/wso2/kubernetes-apim.git
2, 把包解压,列出这个目录
这几个目录分别对应不同的部署模式每个目录下都是一个Chart,am-pattern-1就是标准的HA部署
ls kubernetes-apim/advanced/
am-pattern-1 am-pattern-2 am-pattern-3 am-pattern-4 mysql-am
3,修改values.yaml 直接使用msyql数据库也可以,我由于特殊需要换成postgresql,且不能使用,cluster role binding
vim kubernetes-apim/advanced/am-pattern-1/values.yaml
mysql: false #这里改为 false 因为后面要换成postgresql
nfsServerProvisioner: false #这里改为false,启动nfs需要cluster role binding,
#storageClass: &storage_class "nfs" #这一行定义storage_class,因为我们关掉了nfs 所以这里也注释掉
#mysql-am:
# mysql:
# persistence:
# storageClass: *storage_class #这几行注释掉,这里会去使用上面 &storage_class "nfs"定义的nfs
hostname: "api.apps.openshift.devops.philips-healthsuitechina.com.cn" #改为你okd,路由最后暴露出来的连接,
kubernetes:
# Name of Kubernetes service account
serviceAccount: "default" #改为默认的 default 不然会报错,
4,因为是HA部署这两个目录下分别有 deployment和conf 文件
ls kubernetes-apim/advanced/am-pattern-1/templates/am
instance-1 instance-2
5,由于后面需要把数据库改为postgresql,但是默认的image:wso2/wso2am:4.1.0里面没有postgresql-42.4.0.jar这个类,
参考官网地址:Change to PostgreSQL - WSO2 API Manager Documentation 4.1.0
下载postgresql-42.4.0.jar
wget https://jdbc.postgresql.org/download/postgresql-42.4.0.jar
6,把 postgresql-42.4.0.jar持久化到容器
方式一 configmap: #这里可以使用configmap去挂载这个包
kubectl create configmap postgresql-jar --from-file=postgresql-42.4.0.jar #直接指定一个文件 创建为 configmap
vim kubernetes-apim/advanced/am-pattern-1/templates/am/instance-1/wso2am-pattern-1-am-deployment.yaml
volumeMounts:
- name: config-vloume
mountPath: /home/wso2carbon/wso2am-4.1.0/repository/components/lib/postgresql-42.4.0.jar
subPath: home/wso2carbon/wso2am-4.1.0/repository/components/lib/postgresql-42.4.0.jar
#这里使用subPath这里开头不能是 "/" 这里必须严格遵守这种写法如果不使用subPath就会覆盖这个目录原来的文件
volumes:
- name: config-vloume
configMap:
items:
- key: postgresql-42.4.0.jar
path: etc/nginx/postgresql-42.4.0.jar
name: postgresql-jar
方式二 PVC挂载: 这里我们先创建一个临时pod,手动创建一个pvc把这个pvc挂载到pod里面 #这里保险起见我用的是方式二
vim nginx-test.yaml
volumeMounts:
- name: java-class-jar
mountPath: /home/wso2carbon/wso2am-4.1.0/repository/components/lib/
volumes:
- name: java-class-jar
persistentVolumeClaim:
claimName: java-class-jar
kubectl cp wso2am-4.1.0/repository/components/lib/* nginx-deployment-78757ff87d-c4jjj:/home/wso2carbon/wso2am-4.1.0/repository/components/lib/ -n project-apimanager #先把原有的拷贝进去
kubectl cp postgresql-42.4.0.jar nginx-deployment-78757ff87d-c4jjj:/home/wso2carbon/wso2am-4.1.0/repository/components/lib/ -n project-apimanager #在把刚才下载的拷贝进去
vim kubernetes-apim/advanced/am-pattern-1/templates/am/instance-1/wso2am-pattern-1-am-deployment.yaml #挂载到最终pod对应的目录,instance-2/wso2am-pattern-1-am-deployment.yaml也一样加上配置
volumeMounts:
- name: java-class-jar
mountPath: /home/wso2carbon/wso2am-4.1.0/repository/components/lib/
volumes:
- name: java-class-jar
persistentVolumeClaim:
claimName: java-class-jar
7,在当前project部署postgresql
helm repo add bitnami https://charts.bitnami.com/bitnami #添加 对应repo
helm pull bitnami/postgresql #把repo下载下来
vim values.yaml
serviceAccount:
create: false #后面的helm 模板应该是要引用这里然后自己创建一个role来绑定,这里关掉
storageClass: "" #这里把存储类的名字改为空 后面的helm 模板引用的就是空的,这样就会使用默认的存储类
helm install postgresql-prod postgresql -n project-apimanager
#这里安装的时候我把名字写为 postgresql-prod这样容易与测试环境区分,这个名字在helm模板里面叫做release会多次引用,后面的ingerss和,service都会随着名字的改变而改变
8,安装完成数据库后做数据库初始化操作
先把pod端口映射到本地
kubectl get secret postgresql-prod -o jsonpath="{.data.postgres-password}" | base64 --decode #获取 postgres 用户密码:
kubectl port-forward --address 0.0.0.0 service/postgresql-prod 5432:5432 -n project-apimanager& #使用--address

本文档详细介绍了如何在OKD上部署WSO2 API Manager的高可用(HA)模式,使用Router暴露服务,并配置TLS证书。同时,文章还涵盖了如何将WSO2 API Manager与Keycloak集成,实现身份验证和授权。此外,还涉及到邮件通知的配置和API的导入导出自动化。
最低0.47元/天 解锁文章
692

被折叠的 条评论
为什么被折叠?



