上云无忧 > 文档中心 > 百度智能云智能边缘 - 原生yaml接入使用说明
智能边缘
百度智能云智能边缘 - 原生yaml接入使用说明

文档简介:
背景: 目前BIE的云端资源类型均为自定义资源类型,如果用户的应用为原生K8S语义的YAML文件,那么用户需要将原生YAML文件的语义转换成BIE的资源语义进行应用及配置项等的创建,增加用户工作量的同时,语义转换失误就会造成实际下发的应用或配置项与原生YMAL中的应用及配置项产生差异,从而导致应用下发错误等问题。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

背景

目前BIE的云端资源类型均为自定义资源类型,如果用户的应用为原生K8S语义的YAML文件,那么用户需要将原生YAML文件的语义转换成BIE的资源语义进行应用及配置项等的创建,增加用户工作量的同时,语义转换失误就会造成实际下发的应用或配置项与原生YMAL中的应用及配置项产生差异,从而导致应用下发错误等问题。

为了解决上述问题,BIE目前支持原生K8S YAML语义资源文件的接入,用户可将原生YAML文件直接上传,系统会自动创建相应的BIE自定义资源类型,同一YAML文件可存在多种资源类型的定义,"---"分隔即可。

资源类型限制

由于需要与BIE云端自定义资源兼容,因此目前支持的K8S原生资源类型如下所示,除此之外的类型暂不支持:

类别 资源类型
资源对象 Deployment、StatefulSet、DaemonSet、Job、Service
存储对象 Volume、Secret、ConfigMap

使用说明

2.1 操作界面

通过应用部署->容器模式->通过YAML编辑打开相应对话框:

用户可以选择创建、更新、删除资源,只需上传对应的YAML文件即可。

2.2 nginx示例应用创建

  1. 导入一下yaml文件

apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx-yaml
 namespace: default spec: replicas: 1 selector: matchLabels: app: nginx template: 
metadata: labels: app: nginx spec: containers: - image: nginx:latest name: nginx 
ports: - containerPort: 80 volumeMounts: - name: common-cm mountPath: /etc/config -
 name: dcell mountPath: /etc/secret - name: cache-volume mountPath: /cache - name:
test-volume mountPath: /test-hp imagePullSecrets: - name: myregistrykey volumes: - 
name: common-cm configMap: name: common-cm - name: dcell secret: secretName: dcell 
- name: cache-volume emptyDir: {} - name: test-volume hostPath: path: /var/lib/baetyl type: Directory

  1. 导入后查看创建的nginx应用,如下所示:

2.3 各类型资源创建示例

2.3.1 密文类资源

镜像仓库凭证

  • type固定为 kubernetes.io/dockerconfigjson

apiVersion : v1 data: .dockerconfigjson : eyJhdXRocyI6eyJET0NLRVJfUkVHSVNUUllfU0VSVkVSIjp7InV
zZXJuYW1lIjoiRE9DS0VSX1VTRVIiLCJwYXNzd29yZCI6IkRPQ0tFUl9QQVNTV09SRCIsImVtYWlsIjoiRE9DS0VSX0VN
QUlMIiwiYXV0aCI6IlJFOURTMFZTWDFWVFJWSTZSRTlEUzBWU1gxQkJVMU5YVDFKRSJ9fX0= kind : Secret metad
ata: name : myregistrykey namespace : default type : kubernetes.io/dockerconfigjson

证书

  • type固定为 kubernetes.io/tls

apiVersion: v1 data: tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURpekNDQW5PZ0F3SUJBZ0
lRWENzeE02UnpjcTJVUk5ROHBINjZKekFOQmdrcWhraUc5dzBCQVFzRkFEQVYKTVJNd0VRWURWUVFERXdwcmRXSmxjbT
VsZEdWek1CNFhEVEl4TVRJeU16QTJOREF5TmxvWERUSXlNVEl5TXpBMgpOREF5Tmxvd0xURXJNQ2tHQTFVRUF4TWlZb
UZsZEhsc0xYZGxZbWh2YjJzdGMyVnlkbWxqWlM1a1pXWmhkV3gwCkxuTjJZekNDQVNJd0RRWUpLb1pJaHZjTkFRRUJ
CUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNeEdhays0QXd6ZDI2VWMKMzhvM05scVp2RWcrUFJqRkRvV1F0NnB1Y3ZDdFo0
MUdGWXdFODlaMm1tT1RSeXlma1d1Mi95aWgzbkMwYTdvSwpxMmF5dzJzYTExRWU3TkZYMUY2MzB3UHNmZ1A0aG1LZ
mdIbEd6N05hTHU1SWQyNTNtZWtwZmI0QUs1UnVkNmZWCjEyOXJ1WXJUSDFLSHl3cWdkTGdqWFlVS0Q2VGhPYk1hTW
5vVG5haTVnR3Evd1VMVVR0cy8zcUNaTU53ajlrNkoKR2hwWTQ3cFFhck1MVU1tWTl4TzExcDZNVzFIelRFQ2VQM0F
QMUtVenZUMFd5U0kyb2NxdENIMlN1bUl5aW5uUwpEcnVTU3Jxb0pKOFE0MHhwdjROTjdqYm55M0k2TDZyWERJV2kw
UmFZQ2pTaHc3TGlZSEVtcENBWEIxSHl3VmswCnZlNTFYRXNDQXdFQUFhT0J2akNCdXpBT0JnTlZIUThCQWY4RUJB
TUNCYUF3RXdZRFZSMGxCQXd3Q2dZSUt3WUIKQlFVSEF3RXdEQVlEVlIwVEFRSC9CQUl3QURBZkJnTlZIU01FR0RB
V2dCUWx0aXVhem9leW5IZVdJQXJWVC9EKwpEeGM1V2pCbEJnTlZIUkVFWGpCY2doWmlZV1YwZVd3dGQyVmlhRzl
2YXkxelpYSjJhV05sZ2g1aVlXVjBlV3d0CmQyVmlhRzl2YXkxelpYSjJhV05sTG1SbFptRjFiSFNDSW1KaFpYUj
ViQzEzWldKb2IyOXJMWE5sY25acFkyVXUKWkdWbVlYVnNkQzV6ZG1Nd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQ
kFHbkVMMzFwaitZdkFUa3N3L09pK2dBTwp5a05uYVhlZ2dLMEtnMW5vZmhXNXlhajBHNU9yVHFyVTBsYm5SVDE
wTUgyKzZpcG9JSEVPNEliSTRnUEo0Z2JqCllNb2JQdTJGeDN0TVd2SStTcEs1NEJMT3FlZk5VMEJPV2pwSU5Vc
is2MGl1OFZaNDhhYnVLZ0FjUmJSNktiQTIKRlpFN2VsZ0JHbnJ6ZUh1NHlNdEx2VEI2VUNzMFZnL0YvRkdVWjJ
1ZnU3bEM5dFVFc3c0U3ZFSEp6ZEZLRnBNOAp3cGZOQU5WOWVEL1dlWDJRNEY5ci9NZm1XUFdIS2pJWTlTRzN1c
29VUjlKZzgvZlZFaXBnRlRYQ3NlSnFEb1RECk9hN0J6TnVBZ3NlOVVGUmswc2ZGZnJkM1N4WkVmNHhZVzkwcmt
IU3crL0c3Ni9RS3BYeTNaV0FFTXVnZmxsaz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo= tls.key: LS
0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBekVacVQ3Z0RETjNicFJ6Znl
qYzJXcG04U0Q0OUdNVU9oWkMzcW01eThLMW5qVVlWCmpBVHoxbmFhWTVOSExKK1JhN2IvS0tIZWNMUnJ1Z3F
yWnJMRGF4clhVUjdzMFZmVVhyZlRBK3grQS9pR1lwK0EKZVViUHMxb3U3a2gzYm5lWjZTbDl2Z0FybEc1M3A5W
FhiMnU1aXRNZlVvZkxDcUIwdUNOZGhRb1BwT0U1c3hveQplaE9kcUxtQWFyL0JRdFJPMnovZW9Ka3czQ1AyVG9
rYUdsamp1bEJxc3d0UXlaajNFN1hXbm94YlVmTk1RSjQvCmNBL1VwVE85UFJiSklqYWh5cTBJZlpLNllqS0tlZ
ElPdTVKS3VxZ2tueERqVEdtL2cwM3VOdWZMY2pvdnF0Y00KaGFMUkZwZ0tOS0hEc3VKZ2NTYWtJQmNIVWZMQld
UUzk3blZjU3dJREFRQUJBb0lCQVFDeG5uU29ObzlvYTZ5bAp5QktMQ1RFWTNGNUx6dHBmSkZFNU1CbVRkeEE0V
i84WFp4NHJMczg2NXN2ZDAxenEzeUNhTVhkeVJEVmZlSEhIClJhbTkxYWg0QTlHL05vMmloYVVpYXVKdm9mMzh
3K2RONy9UTS94WndrL1VFdWp3bThKWUNtRkkrbUhWTVRqVjYKMlVUSEhEc3NDK0ZMYU1uU3hxeFd4R0YzNGNTe
Wpwb3VWNkdxTmY3eDBCa2llb1NieEZTd1cwa3ZreGJsdnpiZQpBTGpmcW1JcTJuWlo2OFZISTRncGR4dlIvU09
ENjFRVzc1QU1wUGplbytzOHluaWZ3dDV0Tzh1dU5CRkE2NmJLCjlqRFFuc096RXR5aXZlN1AvWC9BME5YMEdN
UFVHOHRBZjFMMFNlV0E4WmtwQ3RsU05KZlVLTWIwM0g3Y2hQVDgKQVhlL0R2MkJBb0dCQU94dytTUVhHQ0lzL
3NNUmZ4YjZBS2loSHdDc1BieG1Yck8rNlZFK1F5VHlvMGFYdWxVbQo2UjZxNkNnRlhSWitEL2NKWEpSTUZmYmc
zK3dlVmtvZkdDeE5rZHl5bDVVUTdHczlVRXd0OXJZMy9PQ1Z5Zjc3Ck4rc0NpbkY0Z0E3amlzRVRSUGhVUUlBV
k1wSmlDaHRvTTBTNDBVeXZwMzBTczNDZVBwcTZaczBMQW9HQkFOMHMKUlJnaXlZNjRmbHlrZGl0ZEZubnpocG1G
c3U3NlVHb0ZlYlAzMzdQSk51THJqRWxQUnZTSUtlczlzVUVsN0xRNQpnajg2TjhZY2txRmJyZWVaVkZsYlZNb
GZpRjhpaFpacjl2cy9pNFhXeE5aK3ZlM2tEZngrTlpQYmhycmpBbS9JCkFDNXIzTWZNaWNlZEt5c2xlNVd0Tj
JkVGRBQ1NsUlVLTWxMTmRMWEJBb0dBWHN3YzE5OTZpWmxJdTZVME0xNGgKRFhzc0Z2VDMrNlYvcXNtTWVrcGd
XVnYvSXJxS3RzRlhEaml2dy93Q2lwWVlpSTkwVXZEK2pYRXoxbE9EZlV4aQpRTUVKRGxkOGR3UEdCbWthM0xC
QkRtWDhPWDlVOGFwL2pQWUQwK0xnVlJmZDlmTm4zN2pIODVLTUtDeXVxTFpxCmQ4OHgrM0VoMGYvQmVoRzRRQ
WtrVm1rQ2dZRUFzTlRxVVVmTyt1c0xMS3JaU0FaZktCWEtzZ2d4YmR4NFdxd1MKQ0EvUXJYL2RBRVR2bnRWaG
w3VWVQdFRPV1pZbTBGbUNoMmJXblBEUFUyOW5kVm9rRkdWdlBxbkE4TDg3SzI4YQp3dnFsWk5hMy9mN0xmOT
NzU01ubnNGVytQTUd2ZXd2ZkNUNTRBTTdLQWV6cFRNL2xKV0NlZ1dBNXlSTnBXcThTCldSMm5pSUVDZ1lBMT
VUUjZtaXlFdW1Xbnp4MDBURk0zZDNTTC9LejFGSkRSd1BPam45Ri8vRFVKZ0J0RFErQWwKalc5MTFrekpvZjR
BMjhVd0FKMFhQbzd5Zkx2bEpobWlPU1BhNi9ja0lsZ0E4S0pFZ2l4RExROHk5QjZqajFoQgpWZk84VVJSL3FUZ
G9uMTd6L1lHQ09BUzhzWTQ2UEova2J2R1BiUVpOOGFZaGFRSGZidCtUSWc9PQotLS0tLUVORCBSU0EgUFJJVkF
URSBLRVktLS0tLQo= kind: Secret metadata: namespace: default name: baetyl-tls-secret type: kubernetes.io/tls

普通密文

  • 普通KV类型配置项 type为 Opaque

apiVersion: v1 kind: Secret metadata: name: dcell labels: secret: dcell annotations: secret:
 dcell data: username: YWRtaW4= password: MWYyZDFlMmU2N2Rm type: Opaque

2.3.2 配置项类资源

普通配置项

apiVersion: v1 kind: ConfigMap metadata: name: common-cm data: example.property.1: hello
 example.property.2: world conf.yaml: |- property.1: value-1 property.2: value-2 property.3: value-3

镜像配置项

  • label:baetyl-config-type: baetyl-image 必须带,用于区分类型
  • data:KV类型,且KEY的值必须为address
apiVersion: v1 kind: ConfigMap metadata: name: image-cm labels: baetyl-config-type: baetyl-image data: address: nginx:latest

引入文件配置项

  • data:kv类型,key值为文件名,value值如下所示,具体参考api,支持bos、http、s3等引入方式

apiVersion: v1 kind: ConfigMap metadata: name: object-cm data: 123.jpg: |- type: object
 source: awss3 account: current url: http://download.com/url endpoint: http://xx.xx.com 
addressFormat: pathStyle bucket: baetyl object: func.zip unpack: zip ak: xx sk: xx md5: xxxx

函数配置项

  • label:baetyl-config-type: baetyl-function 必须带,用于区分类型
  • data:KV类型,key值为函数名,value如下所示

apiVersion: v1 kind: ConfigMap metadata: name: function-cm labels: baetyl-config-type:
 baetyl-function data: index.py: |- "type": "object" "source": "awss3" "account": "
current" "url": "http://download.com/url" "endpoint": "http://xx.xx.com" "addressFormat": "
pathStyle" "bucket": "baetyl" "object": "func.zip" "unpack": "zip" "ak": "xx" "sk": "xx" "md5": "xxxx"

2.3.3 应用类资源

Deployment

apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx namespace:
 default spec: replicas: 1 selector: matchLabels: app: nginx strategy: rollingUpdate:
 maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: labels: app
: nginx spec: containers: - image: nginx:latest name: nginx ports: - containerPort: 80
 volumeMounts: - name: common-cm mountPath: /etc/config - name: dcell mountPath: /etc/
secret - name: cache-volume mountPath: /cache - name: test-volume mountPath: /test-hp 
imagePullSecrets: - name: myregistrykey volumes: - name: common-cm configMap: name: 
common-cm - name: dcell secret: secretName: dcell - name: cache-volume emptyDir: {}
 - name: test-volume hostPath: path: /var/lib/baetyl type: Directory

Daemonset

apiVersion: apps/v1 kind: DaemonSet metadata: labels: app: nginx name: dsApp namespace:
 default spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels:
 app: nginx spec: containers: - image: nginx:latest name: nginx resources: limits: 
memory: 200Mi requests: cpu: 100m memory: 200Mi ports: - containerPort: 80 volumeMounts:
 - name: common-cm mountPath: /etc/config - name: dcell mountPath: /etc/secret - name: 
cache-volume mountPath: /cache - name: test-volume mountPath: /test-hp imagePullSecrets:
 - name: myregistrykey volumes: - name: common-cm configMap: name: common-cm - name: dcell
 secret: secretName: dcell - name: cache-volume emptyDir: {} - name: test-volume
 hostPath: path: /var/lib/baetyl type: Directory

Job

apiVersion: batch/v1 kind: Job metadata: name: pi labels: app: pi spec: backoffLimit:
 6 completions: 1 parallelism: 1 template: metadata: name: pi spec: containers: -
 name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never

2.3.4 service资源demo

NodePort

  • 如果yaml文件中不携带service类型资源,则app的默认模式为ClusterIP模式,如果需要NodePort类型的app,则需要携带NodePort类型的Service,并且端口配置需要与deploy/ds/job中的端口配置关联,目前只支持NodePort类型Service的解析;
  • 若删除资源时,只删除service资源,那么对应的操作是将app的port类型转为ClusterIP类型,端口配置不变,原有的NodePort端口配置删除,不再生效;

apiVersion: v1 kind: Service metadata: labels: svc: nginx name: nginx-svc namespace: default spec:
 ports: - name: web port: 80 targetPort: 80 nodePort: 8080 selector: app: nginx type: NodePort

相似文档
  • 1、进程应用的定义: 进程应用在进程模式下创建。 进程应用由进程程序包以及程序包的卷、环境变量、启动参数配置等部分组成。 一个进程可应用包含>=0个程序包,即可以先创建空壳进程应用,再在进程应用当中添加程序包,支持添加多个程序包。
  • 1、概述: 在进程应用概述当中提到,进程应有两类,本文重点讲解可执行二进制程序类型进程应用。并以构建emqx的BIE进程应用为例来进行详细说明。 2、程序包依赖文件准备: 2.1 可执行二进制程序: emqx提供了多个平台的编译程序,因此可以使用emqx作为示例介绍二进制程序文件的制作方式。
  • 1、概述: 在进程应用概述当中提到,进程应有两类,本文重点讲解可执行脚本类型进程应用,并以如何将 飞桨开源模型的SDK 构建成BIE进程应用为例来进行详细说明。
  • 基本介绍: 概述: 函数应用由函数运行时和函数脚本两部分组成: 函数运行时为BIE官方提供,支持python36、node85等多种运行时。 函数脚本则需要由用户完成编写。函数脚本以卷挂载的形式与函数应用关联。具体参考 配置管理->函数 章节。 函数应用同时支持容器模式和进程模式。在操作使用上,两者本身没有什么区别。下面以容器模式的函数应用使用指南进行说明。
  • 本章主要介绍如何在函数应用中配置多个从百度 CFC 中导入的函数: CFC 函数创建: 本文将以 Python3.6 为例进行说明。 从百度智能云控制台进入 函数计算CFC,我们选择"华南-广州"区域,点击“创建函数”按钮,选择“空白函数”。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部