CCE.Service
模型说明
CCE.Service用于部署华为云PaaS层的K8S资源对象Service。通过创建Service,可为一组具有相同功能的容器应用提供一个统一的入口地址,并将请求进行负载分发到后端的各个容器应用上。
模型属性
属性 |
是否必选 |
描述 |
---|---|---|
k8sManifest |
是 |
kubernetes service描述文件 参数类型:dict 取值说明:用户自定义,建议更新时不要更改metadata下面的名称(name)和标签(labels) 使用建议:参考kubernetes官方文档 https://kubernetes.io/docs/concepts/services-networking/service |
clusterId |
否 |
资源所属集群的ID 参数类型:HuaweiCloud.CCE.Cluster.Id 取值说明:已有集群的ID或新建集群的ID 取值约束:满足UUID规则,最大64位 使用建议:1、通过get_reference自动获取,通过连线到cluster对象以get_reference自动获取; 2、不填写,在创建资源栈过程中,通过界面选取; 3、直接填写ID,CCE控制服务台-资源管理-虚拟机集群-查看集群-集群ID; |
namespace |
否 |
资源所属集群的命名空间 参数类型:string 取值说明:需为集群下有效的namespace,示例:default;如果定义k8sManifest,其值会被k8sManifest>metadata>namespace覆盖 取值约束:由小写字母、数字、和中划线组成,且必须以字母开头 使用建议:根据已有集群或即将创建集群自定义 |
关联关系
关系说明 |
关联节点 |
---|---|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
依赖关系 |
|
被包含关系 |
|
关联关系 |
CCE.Service与ULB.LoadBalancer的关联关系:
- 编写service.yaml时,在metadata中的annotations字段中添加如下语句:kubernetes.io/elb.class: union;
- spec中的loadBalancerIP需要填写ULB的私网IP,ULB的私网IP可以通过get_attribute方式获取,例如loadBalancerIP: {get_attribute: [ULB.LoadBalancer元素名称, vip_address]}。
通过负载均衡创建service具体可以参考公网访问-四层负载均衡。
输出
属性 |
参数类型 |
描述 |
---|---|---|
IP |
数组 |
应用服务的ExternalIPs属性或LoadBalancerIP属性的值 |
Port |
数组 |
应用服务的NodePort属性的值 |
refName |
string |
应用服务的名称 |
blueprint样例
tosca_definitions_version: huaweicloud_tosca_version_1_0 inputs: labels: description: 应用实例标签,需和service中的selector参数下设置的标签一致 label: 工作负载 default: test deploymentName: description: 工作负载名称 label: 工作负载 default: deployment-test image: description: 应用镜像地址 label: 工作负载 ingressName: description: ingress名称 label: 入口信息 default: ingress-test host: description: ingress host域名信息 label: 入口信息 default: test.com secretName: description: 密钥名称 label: 入口信息 type: HuaweiCloud.ECS.KeyPair.Name serviceName: description: 服务名称 label: 网络服务 default: service-test servicePort: description: 服务端口 label: 网络服务 default: 8888 type: integer path: description: 应用路由 label: 网络服务 default: /test protocol: description: 服务协议,只能填写TCP或者UDP label: 网络服务 default: TCP targetPort: description: 应用本身开放服务端口 label: 网络服务 default: 8888 type: integer node_templates: my-deployment: properties: k8sManifest: apiVersion: apps/v1 kind: Deployment metadata: labels: app: get_input: labels name: get_input: deploymentName spec: replicas: 1 selector: matchLabels: app: get_input: labels strategy: rollingUpdate: maxSurge: 0 maxUnavailable: 1 type: RollingUpdate template: metadata: labels: app: get_input: labels spec: containers: - image: get_input: image imagePullPolicy: IfNotPresent name: nginx requirements: [] type: HuaweiCloud.CCE.Deployment my-ingress: properties: k8sManifest: apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: ingress.beta.kubernetes.io/role: data ingress.kubernetes.io/secure-backends: 'false' labels: isExternal: 'true' zone: data name: get_input: ingressName spec: rules: - host: get_input: host http: paths: - backend: serviceName: get_input: serviceName servicePort: get_input: servicePort path: get_input: path tls: - secretName: get_input: secretName hosts: - get_input: host requirements: - dependency: node: my-service type: HuaweiCloud.CCE.Ingress my-service: properties: k8sManifest: apiVersion: v1 kind: Service metadata: name: get_input: serviceName spec: ports: - name: get_input: serviceName port: get_input: servicePort protocol: get_input: protocol targetPort: get_input: targetPort selector: app: get_input: labels sessionAffinity: ClientIP type: ClusterIP requirements: - dependency: node: my-deployment type: HuaweiCloud.CCE.Service