编写iac脚本-j9九游会登录
iac目录规划
iac脚本开发规范请参考,本实践中,iac包结构规划如下:
|
位置 |
描述 |
|---|---|
|
iacspec |
iac压缩包 |
|
└── global/ |
全局默认的iac描述,包含完整文件结构。 |
|
│ └── meta.yaml |
变更策略描述 |
|
└── specs/ |
环境特定的iac描述,结构与global相同,但仅包含与global有差异的文件。 |
|
│ └── cn_green_cbu_default/ |
研发联调环境,命名采用站点级cloud map的名称,可以在环境管理界面查看可选的站点级cloud map名称列表。 |
|
│ └── demoorgidlogin/ |
微服务demoorgidlogin。 |
|
│ └── config/ |
demoorgidlogin的配置目录。 |
|
│ └── aiops_sidecar_param.json |
接入aiops服务的配置文件。 |
|
│ └── config_records.yaml |
demoorgidlogin的业务配置项。 |
|
│ └── config_schema.yaml |
声明demoorgidlogin的业务配置项属性,敏感业务配置项需要声明,非敏感配置项可以不声明。 |
|
│ └── envs.yaml |
用于配置和管理demoorgidlogin的环境变量。 |
|
│ └── hosts.yaml |
配置主机域名映射。 |
|
│ └── resources.yaml |
demoorgidlogin的资源列表。 |
|
│ └── values.yaml |
定义demoorgidlogin的资源列表中使用的变量。 |
|
│ └── demoserviceaservice/ |
微服务demoserviceaservice |
|
│ └── config/ |
servicea的配置目录。 |
|
│ └── aiops_sidecar_param.json |
接入aiops服务的配置文件。 |
|
│ └── config_records.yaml |
servicea的业务配置项。 |
|
│ └── config_schema.yaml |
声明servicea的业务配置项属性,敏感业务配置项需要声明,非敏感配置项可以不声明。 |
|
│ └── envs.yaml |
用于配置和管理servicea的环境变量。 |
|
│ └── hosts.yaml |
配置主机域名映射。 |
|
│ └── resources.yaml |
servicea的资源列表。 |
|
│ └── values.yaml |
定义servicea的资源列表中使用的变量。 |
|
│ └── demoservicebservice/ |
微服务demoservicebservice。 |
|
│ └── config/ |
serviceb的配置目录。 |
|
│ └── aiops_sidecar_param.json |
接入aiops服务的配置文件。 |
|
│ └── config_records.yaml |
serviceb的业务配置项。 |
|
│ └── config_schema.yaml |
声明serviceb的业务配置项属性,敏感业务配置项需要声明,非敏感配置项可以不声明。 |
|
│ └── envs.yaml |
用于配置和管理serviceb的环境变量。 |
|
│ └── hosts.yaml |
配置主机域名映射。 |
|
│ └── resources.yaml |
serviceb的资源列表。 |
|
│ └── values.yaml |
定义serviceb的资源列表中使用的变量。 |
|
└── package.json |
包描述文件。 |
对接slb的准备工作
在appstage运维中心创建slb实例,配置slb节点信息,并在slb中创建监听。在本实践中详细操作如下:
- 创建slb实例。
- 登录。
- 在快捷入口选择“运维中心”,进入运维中心。
- 在顶部导航栏选择服务。
- 单击
,选择。 - 选择左侧导航栏的“实例管理”。
- 在实例列表页面,单击。
- 在“选择电子流”窗口中,选择以下任一方式:
- 运维操作记录选择“关联电子流”,并选择要关联的电子流,单击“提交”。
- 运维操作记录选择“紧急问题处理”,并填写紧急原因,单击“提交”。
- 在创建实例页面,配置相关参数,参数说明如表2所示。
表2 基本信息参数说明 参数
说明
实例名称
实例的名称,本实践中实例名称为jamestest。
字符长度0~50,可以由字母、数字、下划线、短横线、点组成,不能包含特殊字符。容器部署的实例名称开头只能是字母,结尾只能是字母或数字。
可用模式
选择可用模式。
自管理模式:采用自己的节点,将公有云ecs作为slb主机,slb主机由业务申请、维护,手动挂载elb。
slb版本
选择slb版本。
部署规格
选择部署规格,支持2c8g、4c16g、8c32g、16c64g、32c128g。
单az节点数
每个az部署的节点个数。
注册中心
选择一个注册中心,即cloud map,将实例注册到注册中心。
部署区域
以实际自管理区域为准,与注册中心无关。
部署az
以实际自管理区域为准,与注册中心无关。
- 在弹出的对话框中单击“确定”,提交创建实例申请。
在实例列表中会生成一条实例记录,实例状态为。
- 配置slb节点信息。
自管理模式的slb实例需要配置节点信息。
- 在实例列表中单击实例名称,进入实例详情页面。
- 选择“slb节点信息”页签,单击“编辑”。
- 单击“新增节点”,配置ip和主机名。
ip为slb所部署的服务器的私网地址。
在appstage运维中心主机管理服务中,选择,查看ip地址和主机名称。
- 单击“保存”。
- 创建监听。
- 选择左侧导航栏的“监听管理”,单击“创建监听”。
- 在“选择电子流”窗口中,选择以下任一方式:
- 运维操作记录选择“关联电子流”,并选择要关联的电子流,单击“提交”。
- 运维操作记录选择“紧急问题处理”,并填写紧急原因,单击“提交”。
- 配置监听基本信息,关联slb实例,具体配置请参见表3,单击“下一步”。
表3 创建监听参数说明 参数
说明
监听名称(英文)
slb监听的英文名称。本实践中监听名称为jamestest_listener。
长度<=50,不能包含-in-字符,不能以in-开头,不能以.conf结尾,不能包含特殊字符。
监听名称(中文)
slb监听的中文名称。
注册中心
选择监听关联的实例所在的注册中心。
所属服务
监听所属的服务。
关联slb实例
选择slb实例,仅能关联同一注册中心下的slb实例。
- 在创建后端服务器集群、健康检查、配置监听、配置转发策略、动态路由规则页面,依次单击“下一步”。
此处只需要配置监听基本信息并绑定slb实例,健康检查及转发策略等其他信息在软件包部署完成后再进行配置。
- 查看总览,单击“保存”。
编写iac脚本
- 在global目录下的meta.yaml中描述servicea、serviceb以及demoorgidlogin间的变更流程以及变更策略。并行变更demoserviceaservice、demoservicebservice及demoorgidlogin。
type: wisecloud::environment applypipeline: environment-deploy pipelines: - name: environment-deploy action: serial tasks: - name: apply-microservices action: parallel tasks: - name: apply-demoservicea action: apply component: name: demoserviceaservice - name: apply-demoserviceb action: apply component: name: demoservicebservice - name: apply-demoorgidlogin action: apply component: name: demoorgidlogin - 在specs目录下的config配置目录中,增加如下内容:
- demoorgidlogin
- aiops_sidecar_param.json:
{ "iacconfigname" : "demoorgidloginservicelog", "configitems" : [ { "logspacename" : "springclouddemo", "accessconfigname" : "demoorgidlogin_run_log_1677484473569", "accessconfigdetail" : { "logpath" : "/opt/huawei/logs/demoorgidlogin/run", "logmode" : "multi_line", "multilineconfig" : { "pattern" : "^\\[[0-9]{4}-[0-9]{2}-[0-9]{2}" } } }, { "logspacename" : "springclouddemo", "accessconfigname" : "demoorgidlogin_debug_log_1677484428961", "accessconfigdetail" : { "logpath" : "/opt/huawei/logs/demoorgidlogin/debug", "logmode" : "multi_line", "multilineconfig" : { "pattern" : "^\\[[0-9]{4}-[0-9]{2}-[0-9]{2}" } } } ] } - 在config_records.yaml配置微服务的业务配置项。
#sts sts.server.domain: 10.202.251.196:8080 #sts(acms)接入地址 sts.config.path: /opt/huawei/certs/jamesservice22a/demoorgidlogin/demoorgidlogin.ini #sts(acms)微服务证书路径,iac3.0会将证书放在固定路径下,格式为/opt/huawei/certs/服务名/微服务名/微服务名.ini #redis #注意:在华为云购买redis必须与服务部署的后端集群在同一个子网,否则网络不通无法访问 spring.redis.host: 172.16.0.189 #redis访问地址 spring.redis.port: 6379 #redis访问端口 spring.redis.password: microservice/jamesservice22a/demoorgidlogin/spring.redis.password/default #redis访问密码,属于敏感配置项,已被sts(acms)纳管,配置路径为:microservice/服务名/微服务名/敏感配置项名称/敏感配置项标签 #orgid org.url: http://org-app.huawei.com:8080 #orgid后端访问地址 org.web-url: https://orgid-beta.xxx.huawei.com #orgid前端访问地址 org.app.cookie-domain: huawei.com #cookie域名 org.app.jwt-key: microservice/jamesservice22a/demoorgidlogin/org.app.jwt-key/default #使用redis储存token的密钥,属于敏感配置项,已被sts(acms)纳管,配置路径为:microservice/服务名/微服务名/敏感配置项名称/敏感配置项标签 org.app.ent-point-url: http://org-app.huawei.com:8080 #登录或登出后页面重定向地址 org.app.protocol-login.oauth.clientid: fd9f15082b80a6b6c3940c996df9b917f246936244caaee8e4a9ed3404c89364 #orgid登录时所需的客户端id,需要在orgid申请应用获得 org.app.protocol-login.oauth.clientsecret: microservice/jamesservice22a/demoorgidlogin/org.app.protocol-login.oauth.clientsecret/default #orgid登录时所需的客户端密钥,需要在orgid申请应用获得,属于敏感配置项,已被sts(acms)纳管,配置路径为:microservice/服务名/微服务名/敏感配置项名称/敏感配置项标签 demo.login.url: http://org-app.huawei.com:8080/login #demo的登录地址 #cloud map nuwa.cloudmap.serveraddr: http://10.202.252.191:8081 #cloud map访问地址 nuwa.cloudmap.namespacename: cn_green_cbu_default_9190086000001322775_default #cloud map访问命名空间 nuwa.cloudmap.version: 1.0.0.100 #微服务版本号 nuwa.cloudmap.clustername: default #当前注册到cloud map集群名 nuwa.cloudmap.provider.cluster: default #提供服务的其他同样被注册到cloud map的微服务集群名
- 在config_schema.yaml中声明微服务的敏感业务配置项。
type: object properties: spring.redis.password: #声明spring.redis.password为敏感业务配置项。 format: sensitive org.app.protocol-login.oauth.clientsecret: #声明org.app.protocol-login.oauth.clientsecret为敏感业务配置项。 format: sensitive - 在envs.yaml文件中定义环境变量。
- name: nuwa_cloudmap_serveraddr value: 'http://10.202.252.191:8081'
- 在hosts.yaml中配置主机域名映射。
- hostname: org-app.huawei.com #对接orgid,orgid服务的域名解析 ip: 172.16.0.57 #orgid服务的ip
- aiops_sidecar_param.json:
- demoserviceaservice和demoservicebservice,此处以demoserviceaservice为例:
- aiops_sidecar_param.json:
{ "iacconfigname" : "demoserviceaservicelog", "configitems" : [ { "logspacename" : "springclouddemo", "accessconfigname" : "demoserviceaservice_run_log_1677484473569", "accessconfigdetail" : { "logpath" : "/opt/huawei/logs/demoserviceaservice/run", "logmode" : "multi_line", "multilineconfig" : { "pattern" : "^\\[[0-9]{4}-[0-9]{2}-[0-9]{2}" } } }, { "logspacename" : "springclouddemo", "accessconfigname" : "demoserviceaservice_debug_log_1677484428961", "accessconfigdetail" : { "logpath" : "/opt/huawei/logs/demoserviceaservice/debug", "logmode" : "multi_line", "multilineconfig" : { "pattern" : "^\\[[0-9]{4}-[0-9]{2}-[0-9]{2}" } } } ] } - 在config_records.yaml配置微服务的业务配置项。
#sts sts.server.domain: 10.202.251.196:8080 #sts接入地址 sts.config.path: /opt/huawei/certs/jamesservice22a/demoserviceaservice/demoserviceaservice.ini #sts微服务证书路径,iac3.0会将证书放在固定路径下,格式为/opt/huawei/certs/服务名/微服务名/微服务名.ini #cloud map nuwa.cloudmap.serveraddr: http://10.202.252.191:8081 #cloud map访问地址 nuwa.cloudmap.namespacename: cn_green_cbu_default_9190086000001322775_default #cloud map访问命名空间 nuwa.cloudmap.version: 1.0.0.100 #微服务版本号 nuwa.cloudmap.clustername: default #当前注册到cloud map集群名 nuwa.cloudmap.provider.cluster: default #提供服务的其他同样被注册到cloud map的微服务集群名 #wisedba wisedba.appname: jamesservice22a #在appstage中创建的服务名称 wisedba.groupkey: gauss-springclouddemo2 #wisedba纳管的数据库实例名称 wisedba.dbname: springclouddemoa #数据库名称(数据库实例中的schema名称) demo.login.url: http://org-app.huawei.com:8080/login #demo登录地址 demo.login.enable: true #是否开启demo登录功能 demo.service-url.demoorgidlogin: http://demoorgidlogin #demo登录功能的微服务访问地址
- 在config_schema.yaml中声明微服务的敏感业务配置项。
type: object
- 在envs.yaml文件中定义环境变量。
- name: nuwa_cloudmap_serveraddr value: 'http://10.202.252.191:8081'
- 在hosts.yaml中配置主机host,即本地域名和ip的映射。
- hostname: localhost.huawei.com ip: 127.0.0.1
- aiops_sidecar_param.json:
- demoorgidlogin
- 在resources.yaml中定义资源。
微服务下所有的资源描述都存放于resources.yaml中,此处以demoorgidlogin微服务为例,本实践中资源定义如下:
- name: demoorgidlogin #cluster name: 2 <= len <= 16 type: wisecloud::microservice::nuwacontainer properties: microservicename: demoorgidlogin #sts证书中服务的名称 clustername: #微服务集群名 $ref: 'values.yaml#/values/network/slb/cluster_name' replicas: #pod副本数 $ref: 'values.yaml#/values/microservice/replicas' terminationgraceperiodseconds: 30 #优雅下线宽限期 network: #网络配置 slbenable: #是否启用slb $ref: 'values.yaml#/values/network/slbenable' bindslb: #slb配置 - port: #微服务在slb上暴露的端口 $ref: 'values.yaml#/values/network/slb/port' graystatus: $ref: 'values.yaml#/values/network/slb/graystatus' weight: 1 #微服务在slb上负载的权重 maxfails: 3 #微服务调用的失败次数 timeout: 2 #微服务调用转发的超时时间 instancename: #slb的实例名称 $ref: 'values.yaml#/values/network/slb/server_name' listenergroupname: #slb实例关联的监听名称 $ref: 'values.yaml#/values/network/slb/server_name' targetgroup: #微服务注册到slb上的后端服务器组名 name: #用于创建routerule $ref: 'values.yaml#/values/network/slb/cluster_name' loadbalancer: #在routes配置的情况下,loadbalancer也属于必选,不配置routes的话,loadbalancer则是可选,loadbalancer当前仅支持配置roundrobin(加权轮询)且不支持修改为其它策略,如果需修改可登录slb管理台修改 strategy: roundrobin protocol: https volumes: #挂载信息 - name: log_volume size: 4gi type: local - name: data_volume size: 4gi type: local containers: #容器配置 - image: #镜像地址 $ref: 'values.yaml#/values/container/image' flavor: #主容器cpu&memory的规格 $ref: 'values.yaml#/values/container/flavor' stsenable: true #启用sts ports: #在cloud map注册中心注册的端口 $ref: 'values.yaml#/values/container/ports' livenessprobe: #服务存活探测 exec: #命令行检查方式 command: [ "echo", "hello" ] readinessprobe: #是否就绪探测 exec: #命令行检查方式 command: [ "echo", "hello" ] prestopconfig: #优雅退出处理 execcommand: [ "echo", "hello" ] envs: #配置环境变量 $ref: 'config/envs.yaml#' hostaliases: #配置hosts $ref: 'config/hosts.yaml#' configs: #配置项的根字段 private: #private为业务配置项 schema: #声明敏感业务配置项 $ref: 'config/config_schema.yaml#' records: #业务配置项 $ref: 'config/config_records.yaml#' - 在微服务的values.yaml中定义微服务的资源参数值,此处以demoserviceaservice为例。
values: microservice: replicas: 1 network: slbenable: true slb: port: 8081 #微服务在slb上暴露的端口,demoserviceaservice为8081 instance_name: jamestest #slb的实例名称 server_name: jamestest_listener #slb实例关联的监听名称 cluster_name: springclouddemoa-cluster #当前微服务注册到slb时的集群名称,可以自定义 graystatus: 1 container: image: swr.cn-north-5.myhuaweicloud.com/appartswisedev/demoservicea:snapshot_version ports: - 6792 flavor: 0.5c1g sidecars: aiopslog: version: 3.3.0.100 flavor: 0.1c500m - 修改包描述文件package.json。
{ "type": "iacspec", #代码包类型,支持iacspec和iacpatch两种格式,本实践中为iacspec "name": "service/1181355389389103104", #代码包名称,格式:service/{service-id} "version": "snapshot_version" #代码包版本号 }
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨