毫无疑问,当前是一个云的时代,我们身边新型应用层出不穷、吸引眼球,为我们提供创新甚至颠覆性的服务,与此同时,那些诞生于云时代之前的传统应用关注度较少,但那些传统应用仍然时时刻刻为我们提供关键服务,由此,传统可能会给企业带来两难的窘境,这些应用程序仍然至关重要,但它们同时也可能会是业务运营和发展的瓶颈。随着时间的推移,企业现有系统可能无法响应业务流程变更,无形中增加了成本。
传统应用现代化,旨在帮助企业实现传统环境的现代化,从而提高其业务灵活性和成效,降低运营成本和风险。传统应用现代化有很多工具和方法解决传统应用在运行环境、开发环境、运维工具、用户使用体验的问题。
传统应用系统正不断向 IT 部门提出挑战,为了解决这个问题,很多IT 部门都转向采用灵活创新的中间件、自动化和应用平台解决方案,以实现传统现代化。为解决运行与Weblogic上的Java 应用系统的现代化的挑战,甲骨文提供了Weblogic Kubernetes Operator工具,协助企业将应用迁移到云端环境中,提供现代化的运行环境和监控管理体验。
本文将介绍WeblogicKubernetes Operator及其使用方法,实例演示在Kubernetes 上搭建一个按需配置的Weblogic集群,为运行于Weblogic中的应用迁移到Kubernetes 云环境中提供一种参考解决方案。
开源免费:
Weblogic KubernetesOperator是一款完全开源免费的工具,所有代码托管于GitHub上,可以自由下载和使用。
云中立,同时适合部署于企业数据中心内部:
借助Operator工具,可以将相关镜像部署于任何支持kubernetes 容器环境的云厂商的环境中,也可以将相关镜像部署于企业自己的数据中心里,满足企业混合架构的需求。
行业最佳实践:
基于Operator工具开发团队帮助大量企业应用迁移的经验,结合行业在应用安全、监控管理、日志管理、组件管理等方面的最佳实践,使用Helm、Grafana、Prometheus、ELK、Traefik工具软件,为传统应用在容器环境中的运行提供现代化的运行环境与监控体验。
使用Operator在Kubernetes 环境中安装Weblogic 集群的总体流程如下:
下载经过认证的Weblogic docker镜像到Kubernetes能够访问的镜像仓库中。
安装Operaor及Ingress插件到Kubernetes集群中
使用Operator提供的脚本工具,生成按需定制的Kubernetes yaml文件,运行yaml文件,在Kubernetes环境中自动创建Weblogic集群。

环境准备:
安装docker,安装成功之后查看版本信息

安装kubernetes –minikube,安装成功之后查看版本信息

安装helm ,安装成功之后查看版本信息

1. 准备镜像:
1.1 下载weblogic-kubernetes-operator 镜像:
docker pulloracle/weblogic-kubernetes-operator:2.1

1.2 下载treafik 镜像:
dockerpull traefik:1.7.6

1.3 下载weblogic 镜像:
docker pullstore/oracle/weblogic:12.2.1.3

下载镜像成功之后,需要从本地 镜像 docker image 加载 image 到 minkube kubernetes 可以访问到的docker 镜像仓库里。
2. 创建weblogicdomain 脚本准备工作
2.1 赋予helm cluster-admin 权限的 ClusterRole
cat << EOF | kubectlapply -f - apiVersion: rbac.authorization.k8s.io/v1 kind:ClusterRoleBinding metadata:name: helm-user-cluster-admin-role roleRef:apiGroup: rbac.authorization.k8s.io kind: ClusterRole name:cluster-admin subjects:- kind: ServiceAccount name:default namespace: kube-system EOF
2.2 使用helm 安装 traefik
helminstall stable/traefik \ --name traefik-operator \ --namespace traefik \--values kubernetes/samples/charts/traefik/values.yaml \ --set "kubernetes.namespaces={traefik}" \ --wait
2.3 安装weblogic kubernetes operator
a) 为operator 创建namespace
kubectlcreate namespace sample-weblogic-operator-ns
b) 在operator的 namespace 里创建 service account
kubectlcreate serviceaccount -n sample-weblogic-operator-nssample-weblogic-operator-sa
c) 在clone的weblogic kubernetes operator 目录下使用helm 安装weblogic kubernetes operator到kubernetes 集群
helminstall kubernetes/charts/weblogic-operator \ --name sample-weblogic-operator \--namespace sample-weblogic-operator-ns \ --setimage=oracle/weblogic-kubernetes-operator:2.1 \ --setserviceAccount=sample-weblogic-operator-sa \ --set "domainNamespaces={}" \ --wait
d) 验证 weblogickubernetes operator 是否正常运行
kubectl get pods -nsample-weblogic-operator-ns

3. 创建weblogic domain
3.1 为domain 创建namespace
kubectl create namespacesample-domain1-ns
3.2 使用helm 更新weblogic kubernetesoperator 的namespace
helmupgrade \ --reuse-values \ --set "domainNamespaces={sample-domain1-ns}" \ --wait \sample-weblogic-operator \ kubernetes/charts/weblogic-operator
3.3 使用helm更新kubernetes ingress 插件Traefik 的namespace
helmupgrade \ --reuse-values \ --set "kubernetes.namespaces={traefik,sample-domain1-ns}" \ --wait \traefik-operator \ stable/traefik
3.4 创建 weblogic domain sample-domain1
a) 创建kubernetes secret
kubernetes/samples/scripts/create-weblogic-domain-credentials/create-weblogic-credentials.sh\ -u weblogic -p welcome1 -n sample-domain1-ns -d sample-domain1
b) 创建weblogic domain image
在clone的weblogic kubernetesoperator 目录下,复制
kubernetes/samples/scripts/create-weblogic-domain/domain-home-in-image/create-domain-inputs.yaml,修改信息
domainUID:sample-domain1-ns
domainHomeImageBase:store/oracle/weblogic:12.2.1.3
weblogicCredentialsSecretName:sample-domain1-weblogic-credentials
exposeAdminNodePort:true
3.5 运行创建脚本:
./create-domain.sh-i my-inputs.yaml -o some/output/directory -u weblogic -p welcome1
脚本运行结果将创建一个新的image ,产生两个文件
Successfullytagged 12213-domain-home-in-image:latest
Createdomain sample-domain1 successfully.
domain.weblogic.oracle/sample-domain1created
Domainsample-domain1 was created and will be started by the WebLogic KubernetesOperator
Thefollowing files were generated:
/temp/weblogic-domains/sample-domain1/create-domain-inputs.yaml
/temp/weblogic-domains/sample-domain1/domain.yaml
Completed
3.6 在kubernetes 创建 weblogic domain
进入产生的脚本的目录,运行kubectl命令创建weblogic domain
kubectl apply -f domain.yaml
4. 检查kubernetes上 weblogic cluster 运行情况
运行完成之后,将在minikube 的kubernetes cluster里创建一个weblogic domain包含一个weblogic cluster,该weblogic cluster 由一个admin server和两个managed server 组成。使用下面命令查看pod 和service的状态
kubectlget po -n sample-domain1-ns -o wide

kubectl get svc --namespacesample-domain1-ns

使用minikube 虚机的的ip 访问 weblogic 管理控制台
http://192.168.99.100:30701/console/,登录之后,可以查看运行与kubernetes cl 上的 weblogic cluster的运行情况。可以看见Weblogic的Dynamic Cluster中包含一个admin server,2个运行状态的managed server以及3个停止状态的managed server。我可以选择将传统应用部署于运行在Kubernetes 环境中的Weblogic集群上。

本文演示了使用Operator搭建一个运行与Kubernetes的Weblogic集群,除此之外,WeblogicKubernetes Operator还提供一系列的工具脚本,帮助我们完成满足应用安全、日志监控、性能监控、负载均衡等方面的要求,使我们能够方便的整合Grafana、Prometheus、ELK、Traefik等Kubernetes插件,运行于Weblogic的应用满足现代化的需求。更多信息访问:
https://oracle.github.io/weblogic-kubernetes-operator/

作者简介
向志华,甲骨文PaaS专家团队高级咨询顾问,专注 Application PaaS 产品及服务,同时关注Docker容器产品及Kubernetes容器调度产品方向。13年IT行业从业经验,擅长J2EE产品架构及开发,参与过Openstack相关产品研发工作。您可以通过george.xiang@oracle.com,与他联系。
扫描二维码或点击阅读原文
快速预约精选云解决方案演示






