Chon为我推荐一个DevOps语言

前两天Chon为我推荐了Pkl,Apple的开源项目,用来写配置文件的编程语言。这是它的主页:https://pkl-lang.org/index.html

name = "Swallow"

job {
  title = "Sr. Nest Maker"
  company = "Nests R Us"
  yearsOfExperience = 2
}

这里还有实现Kubernetes资源的例子:https://github.com/apple/pkl-k8s-examples

import "@k8s/K8sResource.pkl"
import "@k8s/api/apps/v1/Deployment.pkl"
import "@k8s/api/core/v1/Service.pkl"

resources: Listing<K8sResource> = new {
  new Service {
    metadata {
      name = "frontend"
      labels {
        ["app"] = "guestbook"
        ["tier"] = "frontend"
      }
    }
    spec {
      type = "NodePort"
      ports {
        new {
          port = 80
        }
      }
      selector {
        ["app"] = "guestbook"
        ["tier"] = "frontend"
      }
    }
  }

  new Deployment {
    metadata {
      name = "frontend"
    }
    spec {
      selector {
        matchLabels {
          ["app"] = "guestbook"
          ["tier"] = "frontend"
        }
      }
      replicas = 3
      template {
        metadata {
          labels {
            ["app"] = "guestbook"
            ["tier"] = "frontend"
          }
        }
        spec {
          containers {
            new {
              name = "php-redis"
              image = "gcr.io/google-samples/gb-frontend:v4"
              resources {
                requests {
                  ["cpu"] = "100m"
                  ["memory"] = "100Mi"
                }
              }
              env {
                new {
                  name = "GET_HOSTS_FROM"
                  value = "dns"
                }
              }
              ports {
                new {
                  containerPort = 80
                }
              }
            }
          }
        }
      }
    }
  }
}

output {
  value = resources
  renderer = (K8sResource.output.renderer as YamlRenderer) {
    isStream = true
  }
}

Pkl本身就是可编程的语言,而不仅仅是数据,所以这个配置文件就比YAML灵活很多。以前我们把Kubernetes资源转换成Helm Charts的时候需要写很多模版标签,非常的难用。以后应该转换成Pkl。

此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表回复