model

package
v0.0.0-...-502bd87 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 7, 2020 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Compose

type Compose struct {
	Version  string              `yaml:"version"`            // yaml版本号,默认3.8
	Services map[string]*Task    `yaml:"services"`           // 启动期望服务集合
	Networks map[string]*Network `yaml:"networks,omitempty"` // 启动所需网络集合
}

Compose stack启动配置文件信息

func NewCompose

func NewCompose(compose *proto.Compose) (*Compose, error)

NewCompose NewCompose

func (*Compose) WriteTo

func (c *Compose) WriteTo(filepath string) error

WriteTo WriteTo

type Deploy

type Deploy struct {
	Mode     string `yaml:"mode,omitempty"`     // 全局global(每个群集节点只有一个容器)或副本replicated(指定容器的数量)。默认值被副本
	Replicas uint64 `yaml:"replicas,omitempty"` // 如果服务是副本模式(默认模式),可以指定该服务运行的容器数量
	// 指定swarm服务发现的模式
	//
	// endpoint_mode: vip - Docker为swarm集群服务分配一个虚拟IP(VIP),作为客户端到达集群服务的“前端”。
	// Docker 在客户端和可用工作节点之间对服务的请求进行路由。而客户端不用知道有多少节点参与服务或者是这些节点的IP/端口。(这是默认模式)
	//
	// endpoint_mode: dnsrr - DNS轮询(DNSRR)服务发现不使用单个虚拟IP。
	// Docker为服务设置DNS条目,使得服务名称的DNS查询返回一个IP地址列表,并且客户端直接连接到其中的一个。
	// 如果想使用自己的负载平衡器,或者混合Windows和Linux应用程序,则DNS轮询功能非常有用。
	EndpointMode   string            `yaml:"endpoint_mode,omitempty"`
	Resources      *Resources        `yaml:"resources,omitempty"`       // 资源配置策略
	Labels         map[string]string `yaml:"labels,omitempty"`          // 指定服务的标签。这些标签仅在服务上设置,而不在服务的任何容器上设置
	Placement      *Placement        `yaml:"placement,omitempty"`       // 指定约束和偏好设置
	RestartPolicy  *RestartPolicy    `yaml:"restart_policy,omitempty"`  // 配置在容器退出时是否并如何重启容器。取代restart指令
	UpdateConfig   *UpdateConfig     `yaml:"update_config,omitempty"`   // 配置服务如何升级
	RollbackConfig *RollbackConfig   `yaml:"rollback_config,omitempty"` // 配置服务如何回滚
}

指定swarm服务部署和运行时的相关配置

type ImagePull

type ImagePull struct {
	RefStr string `json:"refStr"`
}

ImagePull ImagePull

type ImageTag

type ImageTag struct {
	Source string `json:"source"`
	Target string `json:"target"`
}

ImageTag ImageTag

type Network

type Network struct {
	// 网络驱动类型:host、bridge、overlay
	Driver     string `yaml:"driver,omitempty"`
	Attachable bool   `yaml:"attachable,omitempty"`
}

Network swarm独立网络

type Placement

type Placement struct {
	// 约定服务运行位置
	//
	// node.role==manager
	//
	// node.hostname == test1.spuddy.org
	//
	// node.labels.Tomcat == true
	//
	// engine.labels.operatingsystem==ubuntu 18.04
	Constraints []string `yaml:"constraints,omitempty"`
	// 可以通过设置服务将任务均匀地划分到不同类别的节点上
	//
	// 如在一组数据中心或可用性区域上平衡任务
	//
	// spread=node.labels.datacenter
	Preferences []*Preference `yaml:"preferences,omitempty"`
}

Placement 指定约束和偏好设置

type Preference

type Preference struct {
	Spread string `yaml:"spread,omitempty"` // 均匀传播的对象属性
}

Preference 可以通过设置服务将任务均匀地划分到不同类别的节点上

type Resource

type Resource struct {
	CPUs   string `yaml:"cpus,omitempty"`   // cpu比例,如0.5表示50%
	Memory string `yaml:"memory,omitempty"` // 内存值,如50M
}

Resource 资源配置内容

type Resources

type Resources struct {
	Limits       *Resource `yaml:"limits,omitempty"`       // 限制使用不超过资源
	Reservations *Resource `yaml:"reservations,omitempty"` // 总是可用资源
}

Resources 资源配置策略

type RestartPolicy

type RestartPolicy struct {
	Condition   string `yaml:"condition,omitempty"`    // 重启判定条件,none、on-failure和any(默认any)
	Delay       string `yaml:"delay,omitempty"`        // 在重启尝试之间等待多久(默认0)
	MaxAttempts uint64 `yaml:"max_attempts,omitempty"` // 尝试重启的次数(默认一直重启,直到成功)
	Window      string `yaml:"window,omitempty"`       // 在确实一个重启是否成功前需要等待的窗口时间
}

RestartPolicy 配置在容器退出时是否并如何重启容器。取代restart指令

type RollbackConfig

type RollbackConfig struct {
	Parallelism     uint64  `yaml:"parallelism,omitempty"`       // 一次回滚的容器数。如果设置为0,则所有容器同时回滚
	Delay           string  `yaml:"delay,omitempty"`             // 每个容器组的回滚之间等待的时间(默认为0)
	FailureAction   string  `yaml:"failure_action,omitempty"`    // 回滚失败后操作动作。一个continue或pause(默认pause)
	Monitor         string  `yaml:"monitor,omitempty"`           // 每次更新任务后的持续时间以监视失败(ns|us|ms|s|m|h)(默认为0)
	MaxFailureRatio float32 `yaml:"max_failure_ratio,omitempty"` // 回滚期间容忍的失败率(默认值为0)
	// 回滚期间的操作顺序。其中之一stop-first(旧任务在启动新任务之前停止),或者start-first(首先启动新任务,并且正在运行的任务暂时重叠)
	//
	// stop-first/start-first
	//
	//(默认停止优先)注意:只支持v3.4及更高版本
	Order string `yaml:"order,omitempty"`
}

RollbackConfig 配置在更新失败的情况下应如何回滚服务

type Task

type Task struct {
	Image       string   `yaml:"image,omitempty"`       // 镜像服务
	Ports       []string `yaml:"ports,omitempty"`       // 端口映射策略集合
	Environment []string `yaml:"environment,omitempty"` // 环境变量
	Commands    []string `yaml:"-"`                     // 启动容器后执行的默认命令
	Args        []string `yaml:"-"`                     // 启动容器后执行参数
	Command     string   `yaml:"command,omitempty"`     // 启动容器后执行的默认命令
	WorkingDir  string   `yaml:"working_dir,omitempty"` // 容器内部服务工作目录
	Volumes     []string `yaml:"volumes,omitempty"`     // 挂载服务集合
	Networks    []string `yaml:"networks,omitempty"`    // 工作网络集合
	// 通常,当前台进程在docker容器内完成时,它会假设作业已经完成并清理容器实例。
	// 但是数据库引擎和web服务器等需要继续运行。
	// 通过创建一个伪终端,容器保持活动状态。
	// 可以通过运行docker logs <<container name>>命令(带tty和不带tty)来查看这个工作流
	TTY        bool     `yaml:"tty,omitempty"`
	ExtraHosts []string `yaml:"extra_hosts,omitempty"` // dns服务集合
	DependsOn  []string `yaml:"depends_on,omitempty"`  // 依赖关系服务
	Deploy     *Deploy  `yaml:"deploy,omitempty"`      // 指定swarm服务部署和运行时的相关配置
}

Container 容器服务

type UpdateConfig

type UpdateConfig struct {
	Parallelism     uint64  `yaml:"parallelism,omitempty"`       // 同一时间升级的容器数量
	Delay           string  `yaml:"delay,omitempty"`             // 容器升级间隔时间
	FailureAction   string  `yaml:"failure_action,omitempty"`    // 升级失败后的动作(continue、rollback和pause。默认pause)
	Monitor         string  `yaml:"monitor,omitempty"`           // 更新完成后确实成功的时间(ns|us|ms|s|m|h)。(默认0s)
	MaxFailureRatio float32 `yaml:"max_failure_ratio,omitempty"` // 更新期间允许的失败率
	// 更新期间的操作顺序。停止优先(旧任务在开始新任务之前停止)或者先启动(首先启动新任务,并且正在运行的任务短暂重叠)
	//
	// stop-first/start-first
	//
	//(默认停止优先)注意:只支持v3.4及更高版本
	Order string `yaml:"order,omitempty"`
}

UpdateConfig 配置服务如何升级

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL