首页 > 解决方案 > Quarkus:在执行新的 YML 之前是否需要删除部署 kubernetes 组件

问题描述

我正在尝试使用 kubernete 的 quarkus 插件,但我有很多问题。

在使用 quarkus 生成的 yml 进行第一次部署后,我遇到了下一个问题:

The Deployment "data-core" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/name":"data-core", "app.kubernetes.io/part-of":"core-app", "app.kubernetes.io/version":"db6a195"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable

元数据的部署是不可变的,所以在执行之前我确实需要通过 kubectl 删除:

kubectl apply -f target/kubernetes/kubernetes.yml

每次编译中的元数据更改,基于镜像 docker 版本

#CONFIG
com.lamark.app-name=${APP_NAME}
quarkus.package.output-name=${com.lamark.app-name}


# Log
quarkus.log.level=${LOG_LEVEL_ROOT:INFO}
#quarkus.log.category."io.smallrye".level=${LOG_LEVEL_ROOT:DEBUG}


#CLIENT SERVICIOS REST
data-core/mp-rest/url=http://data-core:8080


#DOCKER
quarkus.container-image.registry    =   xxxxxxxx.dkr.ecr.us-east-1.amazonaws.com
quarkus.container-image.build       =   true
quarkus.container-image.push        =   true
quarkus.container-image.name        =   ${com.lamark.app-name}
quarkus.container-image.tag         =   qwerty1234
quarkus.container-image.group       =


#KUBE
quarkus.kubernetes.replicas=1
quarkus.kubernetes.part-of=core-app
quarkus.kubernetes.image-pull-policy=Always




---
apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    app.quarkus.io/vcs-url: 
    app.quarkus.io/build-timestamp: 2020-09-05 - 04:14:31 +0000
    app.quarkus.io/commit-id: db6a19545f593d438489faf19c89875b14ea847b
  labels:
    app.kubernetes.io/name: data-core
    app.kubernetes.io/part-of: core-app
    app.kubernetes.io/version: qwerty1234
  name: data-core
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    app.quarkus.io/vcs-url: 
    app.quarkus.io/build-timestamp: 2020-09-05 - 04:14:31 +0000
    app.quarkus.io/commit-id: db6a19545f593d438489faf19c89875b14ea847b
  labels:
    app.kubernetes.io/name: data-core
    app.kubernetes.io/part-of: core-app
    app.kubernetes.io/version: qwerty1234
  name: data-core
spec:
  ports:
  - name: http
    port: 8080
    targetPort: 8080
  selector:
    app.kubernetes.io/name: data-core
    app.kubernetes.io/part-of: core-app
    app.kubernetes.io/version: qwerty1234
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    app.quarkus.io/vcs-url: 
    app.quarkus.io/build-timestamp: 2020-09-05 - 04:14:31 +0000
    app.quarkus.io/commit-id: db6a19545f593d438489faf19c89875b14ea847b
  labels:
    app.kubernetes.io/name: data-core
    app.kubernetes.io/part-of: core-app
    app.kubernetes.io/version: qwerty1234
  name: data-core
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: data-core
      app.kubernetes.io/part-of: core-app
      app.kubernetes.io/version: qwerty1234
  template:
    metadata:
      annotations:
        app.quarkus.io/vcs-url: 
        app.quarkus.io/build-timestamp: 2020-09-05 - 04:14:31 +0000
        app.quarkus.io/commit-id: db6a19545f593d438489faf19c89875b14ea847b
      labels:
        app.kubernetes.io/name: data-core
        app.kubernetes.io/part-of: core-app
        app.kubernetes.io/version: qwerty1234
    spec:
      containers:
      - env:
        - name: KUBERNETES_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: APP_NAME
          value: data-core
        image: xxxxxxx.dkr.ecr.us-east-1.amazonaws.com/data-core:qwerty1234
        imagePullPolicy: IfNotPresent
        name: data-core
        ports:
        - containerPort: 8080
          name: http
          protocol: TCP
      serviceAccount: data-core

标签: quarkus

解决方案


推荐阅读