Ktor没有从kubernetes配置Map中阅读设置

wkyowqbh  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(117)

我正在努力在kubernetes上部署简单的ktor应用程序,即使用config-map而不是application.yaml

fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)

fun Application.module() {
    val secret = environment.config.propertyOrNull("custom.secret")?.getString()?:"nothing"
    val config = environment.config.propertyOrNull("custom.url")?.getString()?:"url null"

    routing {
        get("/env") { call.respondText { secret } }
        get("/config") { call.respondText { config } }
    }
}

字符串
并且应用.yaml是:

custom:
  secret: "secretApplicationYaml"
  url: "urlApplicationYaml"


当我创建k8s部署时:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: cm-volume
  name: cm-volume
spec:
  replicas: 1
  selector:
    matchLabels:
      app: cm-volume
  template:
    metadata:
      labels:
        app: cm-volume
    spec:
      volumes:
        - name: from-file
          configMap:
            name: from-file
      containers:
      - image: bogmilos/volume-config-map:0.0.5
        name: volume-config-map
        volumeMounts:
          - name: from-file
            mountPath: config


使用各自的config-map:

apiVersion: v1
data:
  application.yaml: |
    ktor:
      environment: "dev"
      deployment:
        port: 8080
      application:
        modules:
          - config.server.MainKt.module
    custom:
      secret: "secretCM"
      url: "urlCM"
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: from-file


我的期望是ktor将在端点get("/env") { call.respondText { secret } }上返回secretCM的值,然而该值是来自secretApplicationYaml的值。我假设ktor应用程序被打包到fatjar中时,它只读取随它一起发布的application.yaml。当我进入容器并查看/config目录时,存储了包含正确信息的application.yaml。有人能帮帮我吗?我试图创建容器env变量,但没有成功,ktor只从附带的应用程序中读取。yaml

cbwuti44

cbwuti441#

如果您说/config目录中的application.yaml文件具有预期的内容,那么我假定您的ConfigMap配置是正确的。因此,看起来您的Ktor应用程序在获取配置文件时遇到了问题。
我假设在Dockerfile中的某个地方有一个类似于java -jar myApp.jar的入口点命令。由于在代码中使用了EngineMain,因此可以使用-config键提供外部配置文件:java -jar myApp.jar -config=/config/application.yaml
您可以在文档中找到有关Ktor应用的命令行配置的更多信息:https://ktor.io/docs/configuration-file.html#command-line

相关问题