关于yaml:Y-分钟速成-yaml

源代码下载: learnyaml-cn.yaml YAML 是一种数据序列化语言,旨在让人类间接可写可读。 它是 JSON 的严格超集,减少了在语法上有意义的(syntactically significant)换行符和缩进,就像 Python 一样。但和 Python 的不同之处在于,YAML 不容许应用文字制表符(literal tab characters)来示意缩进。 --- # 文档结尾# YAML 中的正文看起来像这样。################# 标量类型 ################## 咱们的根对象 (贯通整个文档的始终) 是一个映射(map),# 它等价于其它语言中的一个字典(dictionary),哈希表(hash)或对象(object)。key: valueanother_key: Another value goes here.a_number_value: 100# 数字 1 会被解释为数值,而不是一个布尔值。# 如果你想要的是一个布尔值,应用 true。scientific_notation: 1e+12boolean: truenull_value: nullkey with spaces: value# 留神,字符串能够不括在引号里。当然,也能够括在引号里。however: 'A string, enclosed in quotes.''Keys can be quoted too.': "Useful if you want to put a ':' in your key."single quotes: 'have ''one'' escape pattern'double quotes: "have many: \", \0, \t, \u263A, \x0d\x0a == \r\n, and more."# UTF-8/16/32字符须要指明编码(通过\u)。Superscript two: \u00B2# 多行字符串既能够写成一个'字面量块'(应用 '|'),# 也能够写成一个'折叠块'(应用 '>')。literal_block: | This entire block of text will be the value of the 'literal_block' key, with line breaks being preserved. The literal continues until de-dented, and the leading indentation is stripped. Any lines that are 'more-indented' keep the rest of their indentation - these lines will be indented by 4 spaces.folded_style: > This entire block of text will be the value of 'folded_style', but this time, all newlines will be replaced with a single space. Blank lines, like above, are converted to a newline character. 'More-indented' lines keep their newlines, too - this text will appear over two lines.##################### 汇合类型 ###################### 嵌套是通过缩进实现的。举荐应用 2 个空格的缩进(但非必须)。a_nested_map: key: value another_key: Another Value another_nested_map: hello: hello# 映射的键不用是字符串。0.25: a float key# 键也能够是复合(complex)的,比方多行对象# 咱们用 '?' 后跟一个空格来示意一个复合键的开始。? | This is a key that has multiple lines: and this is its value# YAML 也容许应用简单键语法示意序列间的映射关系。# 但有些解析器可能会不反对。# 一个例子:? - Manchester United - Real Madrid: [ 2001-01-01, 2002-02-02 ]# 序列 (sequences,等价于列表 list 或数组 array ) 看起来像这样:# 留神 '-' 也算缩进:a_sequence: - Item 1 - Item 2 - 0.5 # 序列能够蕴含不同类型。 - Item 4 - key: value another_key: another_value - - This is a sequence - inside another sequence - - - Nested sequence indicators - can be collapsed# 因为 YAML 是 JSON 的超集,你也能够写 JSON 格调的映射和序列:json_map: {"key": "value"}json_seq: [3, 2, 1, "takeoff"]and quotes are optional: {key: [3, 2, 1, takeoff]}######################## 其余的 YAML 个性 ######################### YAML 还有一个不便的个性叫“锚”(anchors)。你能够应用它在文档中轻松地实现文本复用。# 如下两个键会有雷同的值:anchored_content: &anchor_name This string will appear as the value of two keys.other_anchor: *anchor_name# 锚也可被用来复制/继承属性base: &base name: Everyone has same name# '<<'称为语言无关的合并键类型(Merge Key Language-Independent Type).# 它表明一个或多个指定映射中的所有键值会插入到以后的映射中。foo: &foo <<: *base age: 10bar: &bar <<: *base age: 20# foo 和 bar 将都含有 name: Everyone has same name# YAML 还有标签(tags),你能够用它显式地申明类型。explicit_string: !!str 0.5# 一些解析器实现了特定语言的标签,就像这个针对Python的复数类型的标签。python_complex_number: !!python/complex 1+2j# 咱们也能够在 YAML 的复合键中应用特定语言的标签:? !!python/tuple [5, 7]: Fifty Seven# 将会是 Python 中的 {(5, 7): 'Fifty Seven'}##################### 其余的 YAML 类型 ###################### 除了字符串和数字,YAML 还反对其它标量。# ISO 格局的日期和工夫字面量也能够被解析。datetime: 2001-12-15T02:59:43.1Zdatetime_with_spaces: 2001-12-14 21:59:43.10 -5date: 2002-12-14# 这个 !!binary 标签表明这个字符串实际上# 是一个用 base64 编码表示的二进制 blob。gif_file: !!binary | R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5 OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+ +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=# YAML 还有一个汇合(set)类型,它看起来像这样:set: ? item1 ? item2 ? item3or: {item1, item2, item3}# 汇合只是值均为 null 的映射;下面的汇合等价于:set2: item1: null item2: null item3: null... # 文档完结更多资源YAML official websiteOnline YAML ConverterOnline YAML Validator有倡议?或者发现什么谬误?在Github上开一个 issue ,或者发动 pull request ! ...

December 15, 2022 · 3 min · jiezi

关于yaml:在线YAML转TOML工具

在线YAML转TOML工具在线YAML转TOML工具 TOML 是一种旨在成为一个小规模、易于应用的语义化的配置文件格式,它被设计为能够无二义性的转换为一个哈希表。 "TOML"这个名字是"Tom's Obvious, Minimal Language"的首字母略写词。YAML是一个可读性高,用来表白材料序列化的格局。YAML参考了其余多种语言,包含:C语言、Python、Perl,并从XML、电子邮件的数据格式中取得灵感。 https://tooltt.com/yaml2toml/

January 26, 2022 · 1 min · jiezi

关于yaml:使用yamlv2操作yaml文件

1.装置yaml.v2go get gopkg.in/yaml.v22.复制yaml文件到另外一个文件config/prometheus.yml global: scrape_interval: 15s evaluation_interval: 15salerting: alertmanagers: - static_configs: - targets: - "localhost:9093"rule_files: - "rules/*.yml"scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node' basic_auth: username: prometheus password: 123456 static_configs: - targets: ['localhost:9100']程序 package maintype PrometheusConfig struct{ Global interface{} `yaml:"global"` //具体节点能够具体定义,此处都有空接口进行定义 Alerting interface{} `yaml:"alerting"` RuleRiles []string `yaml:"rule_files"` ScrapeConfigs []interface{} `yaml:"scrape_configs"`}func main(){ f,err := os.Open("config/prometheus.yml") if err != nil { log.Fatal("open file err;",err) } defer f.Close() dec := yaml.NewDecoder(f) var prometheusConfig PrometheusConfig err = dec.Decode(&prometheusConfig) if err != nil { log.Fatal("transfer prometheus config err:",err) } log.Printf("prometheus config:%s \n",prometheusConfig) premetheusV2, err := os.Create("config/prometheus2.yml") if err != nil { log.Fatal("create premetheusV2 err:",err) } defer premetheusV2.Close() encoder := yaml.NewEncoder(premetheusV2) err = encoder.Encode(prometheusConfig) if err != nil { log.Fatal("save prometheus err:",err) }}3.应用例子官网文档 https://pkg.go.dev/gopkg.in/y... ...

July 31, 2021 · 1 min · jiezi

关于yaml:在线YAML转Properties工具

在线YAML转Properties工具在线YAML转Properties工具 YAML:(/jæml/,尾音相似camel骆驼)是一个可读性高,用来表白数据序列化的格局。YAML参考了其余多种语言,包含:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中取得灵感 Properties:用Properties读取配置文件非常简单。Java默认配置文件以.properties为扩展名,每行以key=value示意,以#课结尾的是正文。 https://tooltt.com/yaml2properties/

May 18, 2021 · 1 min · jiezi

关于yaml:在线YAML转JSON工具

在线YAML转JSON工具YAML:(/jæml/,尾音相似camel骆驼)是一个可读性高,用来表白数据序列化的格局。YAML参考了其余多种语言,包含:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中取得灵感JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格局。它基于 ECMAScript (欧洲计算机协会制订的js标准)的一个子集,采纳齐全独立于编程语言的文本格式来存储和示意数据。在线YAML转JSON工具 https://tooltt.com/yaml2json/

May 18, 2021 · 1 min · jiezi

关于yaml:在线YAML转HTML工具

在线YAML转HTML工具在线YAML转HTML工具 YAML:(/jæml/,尾音相似camel骆驼)是一个可读性高,用来表白数据序列化的格局。YAML参考了其余多种语言,包含:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中取得灵感 HTML:的全称为超文本标记语言,是一种标记语言。它包含一系列标签.通过这些标签能够将网络上的文档格局对立,使扩散的Internet资源连贯为一个逻辑整体。 https://tooltt.com/yaml2html/

May 18, 2021 · 1 min · jiezi

关于yaml:在线YAML转CSV工具

在线YAML转CSV工具在线YAML转CSV工具 YAML:(/jæml/,尾音相似camel骆驼)是一个可读性高,用来表白数据序列化的格局。YAML参考了其余多种语言,包含:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中取得灵感 CSV:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也能够不是逗号),其文件以纯文本模式存储表格数据(数字和文本)。 https://tooltt.com/yaml2csv/

May 17, 2021 · 1 min · jiezi

项目配置文件选择

.env这种文件是在 laravel 框架里看到的,他是使用 phpdotenv composer 包来进行读取和使用的。 使用方法加载 composer 包 composer require vlucas/phpdotenv项目使用 <?phprequire __DIR__ . '/vendor/autoload.php';$dotenv = Dotenv\Dotenv::create(__DIR__);$dotenv->load();$projectName = getenv('project_name');$projectName = $_ENV['project_name'];$projectName = $_SERVER['project_name'];深入请查看项目的 README.md 文件。 yamlYAML 试图用一种比 XML 更敏捷的方式,来完成XML所完成的任务。 安装配置yaml 文件的使用是需要 php 加载 yaml 扩展的。yaml 扩展又依赖于 libyaml,下面以 centos7 系统为例安装: # http://pecl.php.net/package/yaml 取最新扩展包地址wget http://pecl.php.net/get/yaml-2.0.4.tgz# 解压tar -zxvf yaml-2.0.4.tgz# 进行扩展文件夹cd yaml-2.0.4phpizevim install_sh> ./configure --with-php-config=/usr/local/php/bin/php-config# 编译安装sh install_shmake -j 2make install# php 加载扩展vim /usr/local/php/etc/php.ini> extension=yaml.so项目使用<?php$config = yaml_parse_file(__DIR__ . '/config.yaml');print_r($config['project_name']);深入了解 学习经过疑问为什么不直接使用 php 文件当配置,而用其他类型文件来配置好像没有什么特殊的作用,不管是 .env 还是 yaml 文件都需要配置,反而直接 php 文件当配置会方便易懂一些(.env/yaml 都有自己的语法,不懂的人需要学习)。 ...

June 24, 2019 · 1 min · jiezi

通过vim-plug安装UltiSnips,vim添加k8s自动补全功能

安装plug (https://github.com/junegunn/v...curl -fLo /.vim/autoload/plug.vim –create-dirs \https://raw.githubusercontent…编辑/.vimrc文件(不存在,则创建)" Specify a directory for plugins" - For Neovim: /.local/share/nvim/plugged" - Avoid using standard Vim directory names like ‘plugin’call plug#begin(’/.vim/plugged’)" Multiple Plug commands can be written in a single line using | separatorsPlug ‘SirVer/ultisnips’ | Plug ‘honza/vim-snippets’" Initialize plugin systemcall plug#end()打开vim,输入:PlugInstall加载插件vim 需要开启对 python 的支持,通过以下两个方式来验证你的 vim 是否支持 python 接口,支持一种即可:echo has(“python”) " 如果你用的是 python 2.7:echo has(“python3”) " 如果你用的是 python 3.3 或者 3.4当我们打开 vim 的时候, UltiSnips 会搜寻 $VIM 路径下的所有名字为 UltiSnips 的文件夹,然后根据文档类型来寻找对应的 snips。配置$VIMexport VIM=~/.vim验证vim a.cpp,输入main。按tab键,自动补全则成功int main(int argc, char *argv[]){ return 0;}添加k8s相关snippet (https://github.com/andrewstua…,将里面UltiSnips目录下的yaml.snippets文件移动到.vim目录下的UltiSnips文件下,就可以使用了,如vim a.yamlapiVersion: v1kind: Servicemetadata: name: frontend namespace: default labels: app: someApp tier: frontendspec: ports: - port: 80 selector: app: someApp tier: frontend ...

March 5, 2019 · 1 min · jiezi

cockroachDB部署使用

容器部署容器部署拉取镜像docker pull cockroachdb/cockroach:v2.0.1创建网络docker network create -d bridge roachnet查看网络(不清楚为什么没有docker0,或者docker0和eb330591e579的关系)# docker network ls NETWORK ID NAME DRIVER SCOPEeb330591e579 bridge bridge local 95d2d6473765 host host local 8edade4ef56f none null local 7e50fa75c534 roachnet bridge local 运行容器docker run -d –name=roach1 –hostname=roach1 –net=roachnet -p 26257:26257 -p 8080:8080 -v “${PWD}/cockroach-data/roach1:/cockroach/cockroach-data” cockroachdb/cockroach:v2.0.1 start –insecuredocker run -d –name=roach2 –hostname=roach2 –net=roachnet -v “${PWD}/cockroach-data/roach2:/cockroach/cockroach-data” cockroachdb/cockroach:v2.0.1 start –insecure –join=roach1docker run -d –name=roach3 –hostname=roach3 –net=roachnet -v “${PWD}/cockroach-data/roach3:/cockroach/cockroach-data” cockroachdb/cockroach:v2.0.1 start –insecure –join=roach1验证集群 bug 了[root@log-test cockroach-data]# docker exec -it roach1 ./cockroach sql –insecure# Welcome to the cockroach SQL interface.# All statements must be terminated by a semicolon.# To exit: CTRL + D.## Server version: CockroachDB CCL v2.0.1 (x86_64-unknown-linux-gnu, built 2018/04/23 18:39:21, go1.10) (same version as client)# Cluster ID: 0721d2db-a3a1-4a87-96f2-7b35ee4a4b86fatal error: unexpected signal during runtime execution[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x1b0abb7]runtime stack:runtime.throw(0x2485b32, 0x2a) /usr/local/go/src/runtime/panic.go:619 +0x81runtime.sigpanic() /usr/local/go/src/runtime/signal_unix.go:372 +0x28egoroutine 1 [syscall]:non-Go function pc=0x1b0abb7non-Go function pc=0x1b0ad81non-Go function pc=0x1b0a344non-Go function pc=0x72e5afruntime.cgocall(0x1b0a300, 0xc420657820, 0x2480f4f) /usr/local/go/src/runtime/cgocall.go:128 +0x64 fp=0xc4206577d8 sp=0xc4206577a0 pc=0x6d60c4github.com/cockroachdb/cockroach/vendor/github.com/knz/go-libedit/unix._C2func_go_libedit_init(0x0, 0x7f5986e59210, 0xc4200ba438, 0x7f5986e54000, 0x7f5986e54280, 0x7f5986e54500, 0x0, 0x0, 0x0, 0x0) _cgo_gotypes.go:200 +0x5c fp=0xc420657820 sp=0xc4206577d8 pc=0x1aa10acgithub.com/cockroachdb/cockroach/vendor/github.com/knz/go-libedit/unix.InitFiles.func3(0x0, 0x7f5986e59210, 0xc4200ba438, 0x7f5986e54000, 0x7f5986e54280, 0x7f5986e54500, 0x0, 0xc420657930, 0x16b03db, 0x274de80) /go/src/github.com/cockroachdb/cockroach/vendor/github.com/knz/go-libedit/unix/editline_unix.go:93 +0x19e fp=0xc420657880 sp=0xc420657820 pc=0x1aa425egithub.com/cockroachdb/cockroach/vendor/github.com/knz/go-libedit/unix.InitFiles(0x243bd49, 0x9, 0x1, 0xc4200ba000, 0xc4200ba008, 0xc4200ba048, 0x0, 0x0, 0x0) /go/src/github.com/cockroachdb/cockroach/vendor/github.com/knz/go-libedit/unix/editline_unix.go:93 +0x482 fp=0xc4206579c8 sp=0xc420657880 pc=0x1aa2462github.com/cockroachdb/cockroach/vendor/github.com/knz/go-libedit.InitFiles(0x243bd49, 0x9, 0x6ff101, 0xc4200ba000, 0xc4200ba008, 0xc4200ba048, 0xc420000180, 0x2568c10, 0xc42003ca80) /go/src/github.com/cockroachdb/cockroach/vendor/github.com/knz/go-libedit/editline_unix.go:15 +0x63 fp=0xc420657a20 sp=0xc4206579c8 pc=0x1aa5dd3github.com/cockroachdb/cockroach/pkg/cli.runInteractive(0xc420471900, 0x0, 0x0) /go/src/github.com/cockroachdb/cockroach/pkg/cli/sql.go:1062 +0x41a fp=0xc420657bf8 sp=0xc420657a20 pc=0x1aceb3agithub.com/cockroachdb/cockroach/pkg/cli.runTerm(0x3658dc0, 0xc420044400, 0x0, 0x1, 0x0, 0x0) /go/src/github.com/cockroachdb/cockroach/pkg/cli/sql.go:1179 +0x159 fp=0xc420657c50 sp=0xc420657bf8 pc=0x1acf349github.com/cockroachdb/cockroach/pkg/cli.MaybeDecorateGRPCError.func1(0x3658dc0, 0xc420044400, 0x0, 0x1, 0x0, 0x0) /go/src/github.com/cockroachdb/cockroach/pkg/cli/error.go:39 +0x5a fp=0xc420657cc8 sp=0xc420657c50 pc=0x1ae4c9agithub.com/cockroachdb/cockroach/vendor/github.com/spf13/cobra.(Command).execute(0x3658dc0, 0xc420044390, 0x1, 0x1, 0x3658dc0, 0xc420044390) /go/src/github.com/cockroachdb/cockroach/vendor/github.com/spf13/cobra/command.go:698 +0x46d fp=0xc420657d70 sp=0xc420657cc8 pc=0x1a727cdgithub.com/cockroachdb/cockroach/vendor/github.com/spf13/cobra.(Command).ExecuteC(0x3655460, 0x6, 0x0, 0xc420657ee8) /go/src/github.com/cockroachdb/cockroach/vendor/github.com/spf13/cobra/command.go:783 +0x2e4 fp=0xc420657ea0 sp=0xc420657d70 pc=0x1a72f44github.com/cockroachdb/cockroach/vendor/github.com/spf13/cobra.(Command).Execute(0x3655460, 0x18, 0xc420657f00) /go/src/github.com/cockroachdb/cockroach/vendor/github.com/spf13/cobra/command.go:736 +0x2b fp=0xc420657ed0 sp=0xc420657ea0 pc=0x1a72c3bgithub.com/cockroachdb/cockroach/pkg/cli.Run(0xc4200a4160, 0x2, 0x2, 0xc4200b6010, 0xc420558000) /go/src/github.com/cockroachdb/cockroach/pkg/cli/cli.go:156 +0x6d fp=0xc420657ef8 sp=0xc420657ed0 pc=0x1aad83dgithub.com/cockroachdb/cockroach/pkg/cli.Main() /go/src/github.com/cockroachdb/cockroach/pkg/cli/cli.go:51 +0x15d fp=0xc420657f78 sp=0xc420657ef8 pc=0x1aad3cdmain.main() /go/src/github.com/cockroachdb/cockroach/main.go:27 +0x20 fp=0xc420657f88 sp=0xc420657f78 pc=0x1b00f20runtime.main() /usr/local/go/src/runtime/proc.go:198 +0x212 fp=0xc420657fe0 sp=0xc420657f88 pc=0x701562runtime.goexit() /usr/local/go/src/runtime/asm_amd64.s:2361 +0x1 fp=0xc420657fe8 sp=0xc420657fe0 pc=0x72f8e1goroutine 20 [syscall]:os/signal.signal_recv(0x0) /usr/local/go/src/runtime/sigqueue.go:139 +0xa6os/signal.loop() /usr/local/go/src/os/signal/signal_unix.go:22 +0x22created by os/signal.init.0 /usr/local/go/src/os/signal/signal_unix.go:28 +0x41goroutine 5 [chan receive]:github.com/cockroachdb/cockroach/pkg/util/log.flushDaemon() /go/src/github.com/cockroachdb/cockroach/pkg/util/log/clog.go:1131 +0xf1created by github.com/cockroachdb/cockroach/pkg/util/log.init.0 /go/src/github.com/cockroachdb/cockroach/pkg/util/log/clog.go:592 +0x110goroutine 6 [chan receive]:github.com/cockroachdb/cockroach/pkg/util/log.signalFlusher() /go/src/github.com/cockroachdb/cockroach/pkg/util/log/clog.go:601 +0x105created by github.com/cockroachdb/cockroach/pkg/util/log.init.0 /go/src/github.com/cockroachdb/cockroach/pkg/util/log/clog.go:593 +0x128goroutine 22 [select, locked to thread]:runtime.gopark(0x2569e48, 0x0, 0x2436d0b, 0x6, 0x18, 0x1) /usr/local/go/src/runtime/proc.go:291 +0x11aruntime.selectgo(0xc420476f50, 0xc4204884e0) /usr/local/go/src/runtime/select.go:392 +0xe50runtime.ensureSigM.func1() /usr/local/go/src/runtime/signal_unix.go:549 +0x1f4runtime.goexit() /usr/local/go/src/runtime/asm_amd64.s:2361 +0x1二进制文件部署部署下载wget -qO- https://binaries.cockroachdb…. | tar xvz拷贝cp -i cockroach-v2.0.1.linux-amd64/cockroach /usr/local/bin授权chmod a+x /usr/local/bin/cockroach部署# cockroach start –insecure –host=0.0.0.0 –http-host=0.0.0.0 –http-port=8081 –port=26257 WARNING: RUNNING IN INSECURE MODE! * - Your cluster is open for any client that can access localhost.* - Any user, even root, can log in without providing a password.* - Any user, connecting as root, can read or write any data in your cluster.* - There is no network encryption nor authentication, and thus no confidentiality.* * Check out how to secure your cluster: https://www.cockroachlabs.com/docs/v2.0/secure-a-cluster.html*CockroachDB node starting at 2018-04-28 08:22:34.397265926 +0000 UTC (took 0.7s)build: CCL v2.0.1 @ 2018/04/23 18:39:21 (go1.10)admin: http://0.0.0.0:8081sql: postgresql://root@localhost:26257?sslmode=disablelogs: /home/msxu/cockroach-v2.0.1.linux-amd64/cockroach-data/logstemp dir: /home/msxu/cockroach-v2.0.1.linux-amd64/cockroach-data/cockroach-temp258550286external I/O path: /home/msxu/cockroach-v2.0.1.linux-amd64/cockroach-data/externstore[0]: path=/home/msxu/cockroach-v2.0.1.linux-amd64/cockroach-datastatus: restarted pre-existing nodeclusterID: 0fe058a5-9f6b-47c0-a061-3c043d7d7100nodeID: 1helm 部署git clone https://github.com/helm/chart...https://github.com/kubernetes...helm install –name ckdb01 http://172.16.59.153:10806/charts/cockroachdb-1.1.0.tgz –set Image=172.16.59.153/devops/cockroach –set StorageClass=csi-lvmNOTES:CockroachDB can be accessed via port 26257 (or whatever you set the GrpcPortvalue to) at the following DNS name from within your cluster:ckdb02-public.default.svc.cluster.localBecause CockroachDB supports the PostgreSQL wire protocol, you can connect tothe cluster using any available PostgreSQL client.For example, you can open up a SQL shell to the cluster by running: kubectl run -it –rm cockroach-client \ –image=cockroachdb/cockroach \ –restart=Never \ –command – ./cockroach sql –insecure –host ckdb02-cockroachdb-public.defaultFrom there, you can interact with the SQL shell as you would any other SQL shell,confident that any data you write will be safe and available even if parts ofyour cluster fail.Finally, to open up the CockroachDB admin UI, you can port-forward from yourlocal machine into one of the instances in the cluster: kubectl port-forward ckdb02-cockroachdb-0 8080Then you can access the admin UI at http://localhost:8080/ in your web browser.For more information on using CockroachDB, please see the project’s docs athttps://www.cockroachlabs.com/docs/kubectl run -it –rm cockroach-client \ –image=172.16.59.153/devops/cockroach \ –restart=Never \ –command – ./cockroach sql –insecure –host ckdb02-cockroachdb-public.defaultkubectl run -it –rm cockroach-client \ –image=172.16.59.153/devops/cockroach:v2.0.0 \ –restart=Never \ –command – ./cockroach sql –insecure –host ckdb02-cockroachdb-public.defaultcockroachDB 操作进入cockroach sql –insecure显示所有库show databases;选择库:use 库名;显示数据库下的所有表:show tables;查看表基本结构语句DESCRIBEDESCRIBE 表名SHOW CREATE TABLE 表名实际中我一般使用DESC 表名来查看表的结构,我们可以查出各字段的字段名,数据类型,完整性约束条件。这种查询是用表格来显示表结构的,所以看起来比较漂亮,但是查出来的内容不是太多;使用SHOW CREATE TABLE 表名来查看表的结构,除了查出上面的信息之外,还可以查出表的存储引擎(ENGINE),自增的当前值,字符编码等信息。可以用G来结尾,使得结果容易阅读DELETE 语句用于删除表中的行。DELETE FROM table_nameWHERE some_column=some_value;delete from tmptables where 1=1lamp 请注意 SQL DELETE 语句中的 WHERE 子句!WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除! ...

January 26, 2019 · 4 min · jiezi

pushgateway on k8s 部署yaml

pushgateway on k8s 部署yamlprometheus pushgateway部署的yaml文件pushgateway的deployment文件内容apiVersion: apps/v1beta2kind: Deploymentmetadata: namespace: kube-ops name: pushgateway-ttt labels: app: pushgateway-ttt annotations: prometheus.io/scrape: “true” prometheus.io/port: “8080"spec: replicas: 1 revisionHistoryLimit: 0 selector: matchLabels: app: pushgateway-ttt strategy: type: RollingUpdate rollingUpdate: maxSurge: “25%” maxUnavailable: “25%” template: metadata: name: pushgateway-ttt labels: app: pushgateway-ttt spec: containers: - name: pushgateway-ttt image: prom/pushgateway:v0.7.0 imagePullPolicy: IfNotPresent livenessProbe: initialDelaySeconds: 600 periodSeconds: 10 successThreshold: 1 failureThreshold: 10 httpGet: path: / port: 9091 ports: - name: “app-port” containerPort: 9091 resources: limits: memory: “1000Mi” cpu: 1 requests: memory: “1000Mi” cpu: 1prom/pushgateway可以在hub.docker.io查到dockerfile文件及部署说明pushgateway的service文件内容apiVersion: v1kind: Servicemetadata: name: pushgateway-ttt namespace: kube-ops labels: app: pushgateway-tttspec: selector: app: pushgateway-ttt #type: NodePort ports: - name: pushgateway-ttt port: 9091 targetPort: 9091pushgateway的ingress文件内容apiVersion: extensions/v1beta1kind: Ingressmetadata: name: pushgateway-ingress namespace: kube-ops annotations: kubernetes.io/ingress.class: nginxspec: rules: - host: push-prometheus.ttt.mucang.cn http: paths: - path: / backend: serviceName: pushgateway-ttt servicePort: 9091在Prometheus中配置pushgateway及pull pushgateway数据配置# prometheus配置文件中配置pull pushgateway组件配置- job_name: ‘pushgateway’ scrape_interval: 60s metrics_path: /metrics static_configs: - targets: [“push-prometheus.xxx.xx.xx]# prometheus的deployment配置文件配置环境变量,这样prometheus才会去pull pushgateway缓存的数据env: - name: PUSH_GATEWAY value: “http://push-prometheus.ttt.mucang.cn” ...

January 9, 2019 · 1 min · jiezi

YAML语法简易入门

YAML 语法个人感觉这篇文档属于"搬运工"性质可以查看官方或者其他的博客资料,会有一大堆的内容YAML语言的设计参考了JSON,XML和SDL等语言。YAML 强调以数据为中心,简洁易读,编写简单。有意思的命名:AML全称是”YAML Ain’t a Markup Language”(YAML不是一种置标语言)的递归缩写。 在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种置标语言)。语法特点大小写敏感通过缩进表示层级关系禁止使用tab缩进,只能使用空格键 (个人感觉这条最重要)缩进的空格数目不重要,只要相同层级左对齐即可使用#表示注释支持的数据结构对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)纯量(scalars):单个的、不可再分的值双引号和单引号的区分双引号"":不会转义字符串里面的特殊字符,特殊字符作为本身想表示的意思。name: “123\n123”—————————输出: 123 换行 123如果不加引号将会转义特殊字符,当成字符串处理值的写法1.字符串使用”或”“或不使用引号value0: ‘hello World!‘value1: “hello World!“value2: hello World!2.布尔值true或false表示。3.数字12 #整数 014 # 八进制整数 0xC #十六进制整数 13.4 #浮点数 1.2e+34 #指数 .inf空值 #无穷大4.空值null或~表示5.日期使用 iso-8601 标准表示日期date: 2018-01-01t16:59:43.10-05:00在springboot中yaml文件的时间格式 date: yyyy/MM/dd HH:mm:ss6.强制类型转换(了解)YAML 允许使用个感叹号!,强制转换数据类型,单叹号通常是自定义类型,双叹号是内置类型。money: !!str123date: !Booleantrue内置类型列表!!int # 整数类型 !!float # 浮点类型 !!bool # 布尔类型 !!str # 字符串类型 !!binary # 也是字符串类型 !!timestamp # 日期时间类型 !!null # 空值 !!set # 集合 !!omap,!!pairs # 键值列表或对象列表!!seq # 序列,也是列表 !!map # 键值表7.对象(重点)Map(属性和值)(键值对)的形式: key:(空格)v :表示一堆键值对,空格不可省略。car: color: red brand: BMW一行写法car:{color: red,brand: BMW}相当于JSON格式:{“color”:“red”,“brand”:“BMW”}8.数组一组连词线开头的行,构成一个数组。brand: - audi - bmw - ferrari一行写法brand: [audi,bmw,ferrari]相当于JSON[“auri”,“bmw”,“ferrari”]9.文本块|:使用|标注的文本内容缩进表示的块,可以保留块中已有的回车换行value: | hello world!输出结果:hello 换行 world!+表示保留文字块末尾的换行,-表示删除字符串末尾的换行。value: |hellovalue: |-hellovalue: |+hello输出:hello\n hello hello\n\n(有多少个回车就有多少个\n)注意 “|” 与 文本之间须另起一行>:使用 > 标注的文本内容缩进表示的块,将块中回车替换为空格,最终连接成一行value: > helloworld!输出:hello 空格 world!注意 “>” 与 文本之间的空格10.锚点与引用使用 & 定义数据锚点(即要复制的数据),使用 * 引用锚点数据(即数据的复制目的地)name: &a yamlbook: abooks: - java - a - python输出book: yaml 输出books:[java,yaml,python]注意引用部分不能追加内容配置文件注入数据/* * 将配置文件中配置的每一个属性的值,映射到这个组件中 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定; * prefix = “person”:配置文件中哪个下面的所有属性进行一一映射 * * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能; * */@Component //实例化@ConfigurationProperties(prefix = “person”)//yaml或者properties的前缀public class Person { private String name; private Integer age; private Boolean flag; private Date birthday; private Map<String,Object> maps; private List<Object> tempList; private Dog dog; //省略getter和setter以及toString方法我们可以导入配置文件处理器,以后编写配置就有提示了,@ConfigurationPropertiesIDE会提示打开在线的帮助文档,配置依赖如下:<!–导入配置文件处理器,配置文件进行绑定就会有提示–><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional></dependency>application.yaml文件person: name: 胖先森 age: 18 flag: false birthday: 2018/12/19 20:21:22 #Spring Boot中时间格式 maps: {bookName: “西游记”,author: ‘吴承恩’} tempList: - 红楼梦 - 三国演义 - 水浒传 dog: dogName: 大黄 dogAge: 4在test中进行测试如下@RunWith(SpringRunner.class)@SpringBootTestpublic class Demo03BootApplicationTests { @Autowired private Person p1; @Test public void contextLoads() { System.out.println(p1); }}输出结果为:Person{name=‘胖先森’, age=18, flag=false, birthday=Wed Dec 19 20:21:22 CST 2018, maps={bookName=西游记, author=吴承恩}, tempList=[红楼梦, 三国演义, 水浒传], dog=Dog{dogName=‘大黄’, dogAge=4}}application.properties文件person123.name=刘备person123.age=20person123.birthday=2018/12/19 20:21:22person123.maps.bookName=水浒传person123.maps.author=罗贯中person123.temp-list=一步教育,步步为赢person123.dog.dogName=小白person123.dog.dogAge=5java代码修改前缀@Component //实例化@ConfigurationProperties(prefix = “person123”)//yaml或者properties的前缀public class Person { private String name; private Integer age; private Boolean flag; private Date birthday; private Map<String,Object> maps; private List<Object> tempList; private Dog dog; //省略getter和setter以及toString方法在test中进行测试如下@RunWith(SpringRunner.class)@SpringBootTestpublic class Demo03BootApplicationTests { @Autowired private Person p1; @Test public void contextLoads() { System.out.println(p1); }}输出结果为:Person{name=‘����’, age=20, flag=null, birthday=Wed Dec 19 20:21:22 CST 2018, maps={bookName=ˮ䰴�, author=�޹���}, tempList=[һ������, ����ΪӮ], dog=Dog{dogName=‘��’, dogAge=5}}属性文件中文乱码问题 ...

December 19, 2018 · 2 min · jiezi