官方文档介绍 https://pkg.go.dev/cuelang.org/go/tools/flow
在k8s中 可以把他用在开发CD/CD中的cd流程 比如**kubevela**(https://kubevela.io/zh/docs/)就的就它搞的 非常不错
一个简单的代码示例
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960package mainimport ( "context" "cuelang....
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748input: { name: string & "myngx" namespace?: string | *"default" replicas: int | *1 port: int | *80}output: { deployment:{ apiVersion: "apps/v1" kind: "De...
具体的学习可以先去看看官方文档 或者去https://cuetorials.com/zh/introduction/ 看看
基本定义123user: { name: "test"}
之后输出 cue export xx.cue(文件名) 即可输出 可以指定只输出某个变量 使用-e 比如 cue export xx.cue -e user 这样就只会输出user这个变量 也可以指定起输出变成yaml 比如 cue export xx.cue -e user —out yaml
拆分对象想拆分某个对象可以这样做
123456789metadata: ...
kubectl输出的格式一般是设置好的 写死的 也就是各个资源的列表头的定义都是写死的 具体代码在
github.com/kubernetes/kubernetes/-/blob/pkg/printers/internalversion/printers.go
验证: 当我们输入
1kubectl describe pod xxx -v=10
可以看到kubectl的输出是转换成了table这种type形式输出的
如果kubectl无法解析成table的话, 他会自己解析成一个 no-Table Object 也就是说只显示NAME和AGE
下面是个例子
123456789101...
k8spatcher.go
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301...
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354package mainimport ( "context" "fmt" meatv1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/leaderelection" "k8s.io/client-go/tools/leaderelection/resourcelock" "kube-base3/lib/kubeCo...
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071func GenK8sUser(cn,o string) { caCert,caPriKey:= parseK8sCA(CAFILE,CAKEY) if cn == "" { goft.Error(fmt.Errorf("CN is required")) } //构建证书模板 certTemp...
1234567891011121314151617181920212223242526272829const CAFILE="./test/certs/ca.crt"const CAKEY="./test/certs/ca.key"func parseK8sCA(cafile,cakey string) (*x509.Certificate,*rsa.PrivateKey) { //parse ca.crt and ca.key caFile,err:= ioutil.ReadFile(CAFILE) if err != nil { log.Fatal(err) &...
这个yaml可以有三个横岗的那种 实现多个文件合并来apply
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687package mainimport ( "bytes" "context" "fmt" "io" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8...
如何查看config文件
1kubectl config view
或者在cat $HOME/.kube/config
简单事例1234567891011121314151617181920212223242526272829303132333435363738394041424344454647package mainimport ( "encoding/pem" "io/ioutil" "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/tools/clientcmd/api" "os")func caData() []byte ...