1. MX云部署架构

西门子低代码官方文档介绍了如何部署西门子低代码应用到k8s的最佳实践。运行环境包括PostgreSQL数据库实例,或者其他数据库,Mysql、oracle等,本地文件存储系统,本地k8s集群。部署方式采用kubectl工具,通过yaml文件命令行方式运行。

所需运行组件的部署架构如下:

西门子低代码应用部署依赖的k8s组件包括:

•   StatefulSet:用于西门子低代码应用的部署组件,部署两个pod。因为组件支持为pod编号,可以保证按照顺序管理pod,因此用于支持有状态的应用拓扑架构。

•   Deployment:用于部署数据库组件,提供了使用PostgreSQL容器的部署脚本。

•   Services:容器集群中的pod必须通过Service组件提供对外访问,可以提供固定IP地址和端口。本文为了满足西门子低代码应用和自建数据库的访问,分别创建了两个Service。

•   Volumes:用于为pod提供数据存储。

•   Ingress/LoadBalancer:是代理后端Service而设置的负载均衡服务。

•   Pods:最小编排单元,用于管理容器镜像。

2. AWS的EKS服务

Amazon Elastic Kubernetes Service(Amazon EKS)是一项托管服务,可让您在AWS上轻松运行 Kubernetes,而无需支持或维护您自己的 Kubernetes 控制层面。Kubernetes 是一个用于实现容器化应用程序的部署、扩展和管理的自动化的开源系统。

AmazonEKS 跨多个可用区运行 Kubernetes 控制层面实例以确保高可用性。Amazon EKS 可以自动检测和替换运行状况不佳的控制层面实例,并为它们提供自动版本升级和修补。

Amazon EKS 还与许多 AWS 服务集成以便为您的应用程序提供可扩展性和安全性,包括:

•   用于容器镜像的 Amazon ECR

•   用于负载分配的 ELB

•   用于身份验证的 IAM

•   用于隔离的 Amazon VPC

Amazon EKS 工作原理

AmazonEKS 可为您预配置(启动)和管理 Kubernetes 控制平面。总体来说,Kubernetes 由两大组件构成 – 运行容器的工作节点集群和管理容器在集群上的启动时间和位置并监控容器状态的控制平面。

如果不使用 Amazon EKS,您需要自行管理 Kubernetes 控制平面和工作节点集群。借助 Amazon EKS,您可以使用Amazon 系统镜像 (AMI) 和 AWS CloudFormation 脚本预置工作节点集群,而 AWS 负责使用高可用且安全的配置来预置、扩展和管理 Kubernetes 控制平面,从而消除了运行Kubernetes 的繁重运维负担,让您能够专注于应用程序构建而非 AWS基础设施管理。

3. 准备实验环境

参照官方AWS EKS服务提供的workshop实践环境

https://github.com/aws-samples/eks-workshop-greater-china

本次西门子低代码 app需要的软件环境有AWS cli , eksctl ,kubectl,以及AWS EKS对应操作的IAM权限。

3.1 安装 aws cli

•   利用awscli-bundle安装 linux / macOS

mkdir -p /usr/local/awsekscd  /usr/local/awsekscurl"https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"unzip awscli-bundle.zipsudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/awsaws –version

3.2  配置aws cli 角色

#配置aws cli的用户权限$aws configureAWS Access Key ID :AWS Secret Access Key :Default region name:Default output format [None]:

键入该命令时,AWS CLI 会提示您输入四条信息:访问密钥、秘密访问密钥、AWS 区域和输出格式。此信息存储在名为 default 的配置文件(一个设置集合)中。将使用此配置文件,除非您指定另一个文件。

以上Access Key ID、Secret Access Key、region name为必填字段,识别AWS账号信息可在个人账号的IAM角色的SecurityCredentials下。

保存accesskey和Secretaccess key,Aws提供的region name值可以为cn-northwest-1。

#测试AK/SK是否生效aws sts get-caller-identity #如果可以正常返回以下内容(包含account id),则表示已经正确设置角色权限{   "Account":"<your account id, etc.11111111>",    "UserId":"AIDAIG42GHSYU2TYCMCZW",    "Arn":"arn:aws:iam::<your account id, etc.11111111>:user/<iam user>"}

3.3  安装 eksctl,kubectl

目前eksctl对于China region的支持需要版本 >=eksctl 0.15.0,具体参考 https://github.com/weaveworks/eksctl。

#设置默认regionexport AWS_DEFAULT_REGION=cn-north-1export AWS_REGION=cn-north-1 #eksctl#linuxcurl -OL"https://github.com/weaveworks/eksctl/releases/download/0.15.0-rc.2/eksctl_$(uname -s)_amd64.tar.gz"tar -zxf eksctl_$(uname -s)_amd64.tar.gzsudo mv ./eksctl /usr/local/bin #kubectlhttps://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html#Linuxcurl -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.15.10/2020-02-22/bin/linux/amd64/kubectl chmod +x ./kubectlsudo mv ./kubectl /usr/local/bin

检查工具的版本 eksctl (版本>=0.15.0),kubectl(版本>=1.15)

$eksctl version0.15.0-rc.2$kubectl version

由于我们的EKS还没创建,所以kubectl连接不到server端,暂时不用考虑。

4.  创建EKS集群

4.1  使用eksctl 创建EKS集群

(操作需要10-15分钟),该命令同时会创建一个使用t3.small的受管节点组。

详细参考手册:

  • creating-and-managing-clusters

  • managing-nodegroups

#环境变量#CLUSTER_NAME 集群名称#AWS_REGION cn-northwest-1:宁夏区;cn-north-1:北京区 AWS_REGION=cn-north-1AWS_DEFAULT_REGION=cn-north-1CLUSTER_NAME=mendix #参数说明#--node-type 工作节点类型默认为m5.large#--nodes 工作节点数量默认为2 eksctl create cluster--name=${CLUSTER_NAME} --node-type t3.medium --managed --alb-ingress-access--region=${AWS_REGION}

参考输出:

之后可以在控制台中查看相关信息,如:CloudFormation,EKS集群,EC2等。

查看EKS集群信息:

4.2  更新Kubernetes Cluster版本

默认的k8s集群是1.14,也可以不更新,我们体验一下最新的版本1.15:

Cluster的控制平面(k8s的master)大约需要5分钟更新,接下来更新节点组(k8s的node):

默认会创建2个节点,点击立即更新即可:

集群创建完毕后,查看EKS集群工作节点:kubectl get node

参考输出:

5.  部署西门子低代码 app

5.1  准备源文件

新建文件夹"Mendix",存放5个文件分别是postgres-service.yaml、postgres-deployment.yam,mendix-app-service.yaml,mendix-app-secrets.yaml,mendix-app.yaml。

mkdir meddixcd mendixvim  postgres-service.yaml## postgres-service.yamlapiVersion: v1kind: Servicemetadata:  name: postgres-servicespec:  type: ClusterIP  ports:    - port: 5432  selector:    service: postgres vim  postgres-deployment.yaml## postgres-deployment.yaml   apiVersion: apps/v1kind: Deploymentmetadata:  name: postgresspec:  replicas: 1  selector:    matchLabels:      service: postgres  template:    metadata:      labels:        service: postgres    spec:      containers:        - name: postgres          image: postgres:10.1          ports:            - containerPort: 5432          env:            - name: POSTGRES_DB              value: db0            - name: POSTGRES_USER              value: mendix            - name: POSTGRES_PASSWORD              value: mendix          volumeMounts:            - mountPath: "/var/lib/postgresql/data"              name: "mendix-pgdata"      volumes:        - hostPath:            path: "/home/docker/pgdata"          name: mendix-pgdata    vim mendix-app-service.yaml## mendix-app-service.yaml         apiVersion: v1kind: Servicemetadata:  name: mendix-app-service  annotations:        service.beta.kubernetes.io/aws-load-balancer-type: nlbspec:  ports:  - port: 80    protocol: TCP    targetPort: 8080  selector:    app: mendix-k8s  type: LoadBalancer  vim mendix-app-secrets.yaml##  mendix-app-secrets.yamlapiVersion: v1kind: Secretmetadata:  name: mendix-app-secretstype: Opaquedata:  admin-password: UGFzc3dvcmQxIQ==   db-endpoint: cG9zdGdyZXM6Ly9tZW5kaXg6bWVuZGl4QHBvc3RncmVzLXNlcnZpY2U6NTQzMi9kYjA= vim mendix-app.yaml## mendix-app.yamlapiVersion: apps/v1kind: StatefulSetmetadata:  name: mendix-k8s-stateful  labels:    app: mendix-k8sspec:  serviceName: mendix-k8s-ss  replicas: 2  selector:    matchLabels:      app: mendix-k8s  template:    metadata:      labels:        app: mendix-k8s    spec:      containers:        - name: mendix-app          image: qs0qdd/heartracking:v1.5          ports:            - containerPort: 8080          env:            - name: ADMIN_PASSWORD              valueFrom:                secretKeyRef:                  name: mendix-app-secrets                  key: admin-password            - name: DATABASE_ENDPOINT              valueFrom:                secretKeyRef:                  name: mendix-app-secrets                  key: db-endpoint                

[root@ibsshl13 awseks]# tree mendix/mendix/├── mendix-app-secrets.yaml├── mendix-app-service.yaml├── mendix-app.yaml├── postgres-deployment.yaml​└── postgres-service.yaml

5.2 运行

##运行kubectl apply -f mendix/#查看mendix访问域名Kubectl get svc –namespaces      

service类型为LoadBalancer,需要在安全组中添加入站规则,TCP  5678

通过域名+5678即可访问:

使用mendix/Passward1!   登录:

对于西门子低代码应用只需要修改mendix-app.yaml文件的image镜像即可。

西门子低代码镜像构建参考:

GitHub - mendix/docker-mendix-buildpack: Build and Run Mendix in Docker


关于Mendix公司

在一个数字化先行的世界中,客户希望自己的每一项需求都得到满足,员工希望使用更好的工具来完成工作,而企业意识到自己只有通过全面数字化转型才能生存并取得成功。Mendix公司,a Siemens business正在迅速成为企业数字化转型的推动者。其业内领先的低代码平台和全方位的生态系统整合最先进的技术,帮助企业创造出提高互动性、简化操作和克服IT瓶颈的解决方案。Mendix公司以抽象化、自动化、云和协作为四大支柱,大幅提升开发者的生产力,并且依靠自己的工程协作能力和直观的可视化界面,帮助大量不熟悉技术的“公民”开发者在他们所擅长的领域创建应用程序。Mendix公司是权威行业分析师眼中的领导者和远见者,也是一个云原生、开放、可扩展、敏捷和饱经考验的平台。从人工智能和增强现实,到智能自动化和原生移动,Mendix公司已成为数字化先行企业的骨干。Mendix公司企业低代码平台已被全球4000多家领先的公司采用。

感谢阅读!
————————————————
版权声明:本文为CSDN博主「西门子低代码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Mendix/article/details/127688708

西门子低代码部署亚马逊AWS容器服务最佳实践相关推荐

  1. 树莓派Zero W发布;亚马逊 AWS S3 服务出现故障 | IoT黑板报

    树莓派Zero W发布,配有Wi-Fi和蓝牙售价10美元 @cnBeta 为了庆祝树莓派的第五个生日,树莓派基金会推出了树莓派Zero W,它本质上是树莓派Zero ,但是添加了许多用户一直要求的功能 ...

  2. 对话西门子Mendix:低代码与亚马逊云科技Serverless的底层融合,助力企业提效降本...

    ‍数据智能产业创新服务媒体 --聚焦数智 · 改变商业 3月30日 亚马逊云科技举办了主题为"全面拥抱Serverless时代"的创新大会,分享了亚马逊云科技17年引领Server ...

  3. 亚马逊AWS云服务突发Bug引发币圈异常

    8月23日,据多家比特币交易所数据显示,今天币圈BKEX.BTMAX .CITEX.HOPEX等多家交易所出现异常交易,CITEX上的ETH最低被砸至0.07美元,BTC则最低被砸至0.32美元.有人 ...

  4. 【亚马逊AWS】入门级别实践

    本文禁止转载!本文禁止转载!本文禁止转载! 本文地址 http://blog.csdn.net/diandianxiyu_geek/article/details/44096427 一.安全级别的设置 ...

  5. 亚马逊云服务开通指南_亚马逊弹性容器服务初学者指南

    亚马逊云服务开通指南 This article is a beginner's high level look at Amazon ECS. We'll cover core concepts, te ...

  6. 全球公有云巨头:亚马逊 AWS

    来源:乐晴智库精选 摘要:亚马逊AWS目前拥有超过1500种产品和2100余种第三方模块,为全球190个国家的企业提供支持. AWS作为亚马逊旗下的云计算服务平台,面向全世界范围的用户提供包括弹性计算 ...

  7. QCon速递:亚马逊AWS技术应用实践

    2015年4月23日,为期3天的QCon全球软件开发大会(北京站)正式拉开帷幕.在『亚马逊AWS技术应用实践』专题中,讨论了亚马逊AWS热门服务与工具及典型架构,涉及自动化运维.混合云.移动应用开发和 ...

  8. 远景能源如何搞定美国的第一个客户?亚马逊AWS你一定知道底细吧

    提到能源企业,你脑海里最先浮现的影像是什么?笨重的设备.恶劣的现场操作环境--这都是老黄历了.记者在与远景能源IT总监龚迅交流后发现,虽然远景能源是目前国内装机量最大的智能风机设备提供商之一,传统的风 ...

  9. 亚马逊AWS免费一年+python虚拟配置+部署itchat的一个python应用

    自己原来用itchat这个库弄了个消息转发器,这个库是基于网页版的微信的,其实就是收集关键字,然后有准对性的把这些记录转发到自己的内部群. 原先我把程序放在了谷歌云上,但是谷歌云一个是老是会莫名的断, ...

最新文章

  1. 独家 | OpenCV1.12 对极几何和立体视觉简介(附链接)
  2. sublime text3 怎么配置、运行python_怎么用sublime text 3搭建python 的ide?
  3. Effective C++ --3 资源管理
  4. mysql 事务关联_MySQL 关联、联合查询,事务ACID见解
  5. python的mag模块_Python全栈-magedu-2018-笔记22
  6. VTK:在3DScene显示图表用法实战
  7. SAP Spartacus里的HTTPErrorInterceptor的单元测试设计原理
  8. 电脑测速软件_网速慢,怎么办,教你测速,教你解决方案
  9. 西北大学计算机科学排名,西北大学计算机科学与信息系统Computer Science and Information Systems世界排名2020年最新排名第151-200位(QS世界排名)...
  10. C++ 文本文件的读取和写入
  11. python实现pdf解密和pdf转图片
  12. sql 纵向求和_sql 行列转换 求和平均值等
  13. 对话框的数据交换--MFC深入浅出
  14. android自动计步_Android计步模块实例代码(类似微信运动)
  15. rdkit Recap、BRICS分子片段拆分与合成
  16. Basler相机拍照
  17. k2450 linux 显卡驱动,Debian系统安装NVIDIA驱动支持双显卡切换
  18. 【Linux】安装网易云全攻略
  19. 最新web/java/jsp实现发送手机短信验证码和邮箱验证码的注册登录功能(详细)
  20. c语言文件压缩怎么求压缩比,文件压缩C语言程序设计报告.doc

热门文章

  1. [原创发现]使用第三方crunch工具做java混淆字典,
  2. CANOE Log 解析问题
  3. 进制转换器java程序_java编写简易的进制转换器
  4. 20P46 Premiere预设800种干扰缩放平移旋转分割拉伸全景透视扭曲炫光视频无缝转场
  5. 【技术文档】R语言使用教程:从入门到入土
  6. 易语言制作计算软件简单步骤_【软件工具】快速制作动画式微课,就是这么简单...
  7. 下载的论文Latex模板打开出错(以IEEE TIE期刊为例),解决办法
  8. 如何通过发软文来提高企业品牌知名度
  9. can总线的特点和优缺点以及和485比较
  10. antd-Calendar(日历)自动嵌入对应时间问题