Spring boot 如果需要,可以在CI/CD管道中简单地应用相同的方法

Spring boot 如果需要,可以在CI/CD管道中简单地应用相同的方法,spring-boot,deployment,kubernetes,Spring Boot,Deployment,Kubernetes,我强烈建议您在使用更复杂的工具来解决相同的问题之前,遵循这一基本的“第一原则”方法。在许多情况下,您可以自己动手,不费吹灰之力,学习关键概念,并将更复杂的工具保存到以后,如果您真的需要的话 希望有帮助 我会将此工具用于每个git项目中的非机密数据。 在元数据中,您可以过滤播客 apiVersion: apps/v1 kind: Deployment metadata: labels: app: mycomponent env: dev tier: backend

我强烈建议您在使用更复杂的工具来解决相同的问题之前,遵循这一基本的“第一原则”方法。在许多情况下,您可以自己动手,不费吹灰之力,学习关键概念,并将更复杂的工具保存到以后,如果您真的需要的话


希望有帮助

我会将此工具用于每个git项目中的非机密数据。

在元数据中,您可以过滤播客

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mycomponent
    env: dev
    tier: backend
  name: mycomponent
  namespace: myapplication

kubectl get pods-n myapplication-l env=dev,tier=backend,app=mycomponent

我们以前使用过Spring云配置,现在想切换到Kubernetes配置图。知道我们如何使用Kubernetes Configmap实现类似的功能吗?谢谢您的建议!!Spring引导应用程序只接受配置映射的名称。我们可以将此参数作为命令行参数传递给应用程序?还有其他建议吗
spring:application:name:echo-configmap
Sorry@AV你是什么意思?通常,如果您有一个配置映射,您只需让它将其值作为一组环境变量直接装载到应用程序进程中,或者让配置映射装载到容器文件系统中,以便您的应用程序可以从中加载它(例如)“/etc/myapp/config”或其他类似的内容——这是一个后续问题。如果所有环境中都有相同的属性,并且我们不想在每个配置映射中重复它们,那么我们如何放置这些公共属性?@AV可能只是创建一个名为“共享”的配置映射,然后将其中的值装载到每个containerHi@DaveKerr:我也面临同样的问题。我没有使用头盔。我在单个配置映射中有多个配置文件(如本问题中所述)。但是spring boot应用程序只从application.properties获取值,尽管我激活了一些其他配置文件。这里有线索吗?提前谢谢你。。我们计划使用fabric8配置库来检测配置映射的更改并动态重新加载它们。由于spring应用程序采用application.yml中配置映射的名称,唯一的问题是如何根据环境动态更改它
spring:application:name:echo-configmap
如答案中所述,您可以为不同的环境使用不同的名称空间。每个都有自己的echo配置映射。这不能解决你的问题吗?谢谢你的回答。我们试图坚持库伯内特斯的基本概念,看看它们是如何运作的。赫尔姆听起来是个好主意。我们需要做一个原型。
spring:
  application:
    name: echo-configmap
apiVersion: v1
kind: ConfigMap
metadata:
  name: echo-configmap
data:
  application.properties: |-
    message=Hello from dev Kubernetes Configmap
  application_qa.properties: |-
    message=Hello from qa Kubernetes Configmap
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ printf "%s-%s" .Release.Name .Chart.Name }}
  labels:
    app: {{ .Chart.Name | trunc 63 | trimSuffix "-" }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
data:
  application.properties: |-
    message={{ .Values.properties.message }}
containers:
  - name: {{ .Chart.Name }}
    # [...]
    volumes:
      - name: property-volume
        mountPath: /etc/your-app/properties
volumes:
  - name: property-volume
    configMap:
      name: {{ printf "%s-%s" .Release.Name .Chart.Name }}
replicaCount: 1
image:
  repository: your-docker-image
  tag: your-docker-tag
properties:
  message: Hello!
$ helm install --name dev --set image.tag=latest --set replicaCount=1 path/to/chart
$ helm install --name prod --set image.tag=stable --set replicaCount=3 --set properties.message="Hello from prod" path/to/chart
k8s/configmaps/properties.dev.yaml
k8s/configmaps/properties.qa.yaml
k8s/configmaps/properties.sit.yaml
k8s/configmaps/properties.uat.yaml
 application-dev
 application-qa
 application-sit
 application-uat
#!/usr/bin/env bash
# apply-configmaps.sh
namespace="application-${ENVIRONMENT}"
for configmap in ./k8s/configmaps/*.${ENVIRONMENT}.yml; do
    echo "Processing ConfigMap $configmap"
    kubectl apply -n ${namespace} -f $configmap
done
ENVIRONMENT=dev ./update-configmaps.sh
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mycomponent
    env: dev
    tier: backend
  name: mycomponent
  namespace: myapplication