非常感謝任何幫助,我有幾個使用默認組態檔在 aks 中運行的 Spring Boot 應用程式,我正在嘗試使用 helm 從我的 deployment.yaml 更改組態檔
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "helm-chart.fullname" . }}
labels:
app.kubernetes.io/name: {{ include "helm-chart.name" . }}
helm.sh/chart: {{ include "helm-chart.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app.kubernetes.io/name: {{ include "helm-chart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ include "helm-chart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: 8080
protocol: TCP
env:
- name: SPRING_PROFILES_ACTIVE
value: "dev"
我最終得到的是我的 pod 被置于 crashloopbackoff 狀態,說
啟動 ApplicationContext 時出錯。要顯示條件報告,請在啟用“除錯”的情況下重新運行您的應用程式。
2022-01-12 12:42:49.054 錯誤 1 ??--- [主] osbdLoggingFailureAnalysisReporter:
應用程式無法啟動
描述:
配置為偵聽埠 8207 的 Tomcat 連接器無法啟動。該埠可能已在使用中,或者連接器可能配置錯誤。
我嘗試洗掉應用程式的現有 pod 和服務并進行了新部署,但仍然遇到相同的錯誤..
嘗試的方法:(在所有方法中創建docker檔案,創建pod,pod中的應用程式設定為dev組態檔但問題是它無法啟動應用程式并出現上述錯誤,當我洗掉組態檔設定時,一切都是作業完美,期望事實是應用程式設定為默認組態檔)
- 在泊塢窗檔案中:
選項a。CMD ["java","-jar","/app.jar", "--spring.profiles.active=dev"] 選項 b. CMD ["java","-jar","-Dspring.profiles.active=dev","/app.jar"]
- 如上所述在deployment.yml中更改
ps:我在 src/main/resources 上的應用程式中沒有屬性檔案,那里只有 application-(env).yml 檔案。
這個想法是首先設定組態檔,然后根據組態檔選擇 application_(env).yml
helm 的輸出
Release "app" has been upgraded. Happy Helming!
NAME: email-service
LAST DEPLOYED: Thu Jan 13 16:09:46 2022
NAMESPACE: default
STATUS: deployed
REVISION: 19
TEST SUITE: None
USER-SUPPLIED VALUES:
image:
repository: 957123096554.dkr.ecr.eu-central-1.amazonaws.com/app
service:
targetPort: 8207
COMPUTED VALUES:
image:
pullPolicy: Always
repository: 957123096554.dkr.ecr.eu-central-1.amazonaws.com/app-service
tag: latest
replicaCount: 1
service:
port: 80
targetPort: 8207
type: ClusterIP
Any help is appreciated , thanks
uj5u.com熱心網友回復:
首先,請檢查應用程式正在使用什么組態檔,搜索這樣的行(在日志中):
The following profiles are active: test
當我使用 Spring Boot v2.2.2.RELEASE 進行測驗時,application_test.yml沒有使用檔案,它必須重命名為application-test.yml,以便更好地突出差異:
application_test.yml # NOT working
application-test.yml # working as expected
我更喜歡的是(但它是特定于 Spring Boot 的),您可以像這樣使用 application.yml:
foo: 'foo default'
bar: 'bar default'
---
spring:
profiles:
- test
bar: 'bar test2'
為什么我更喜歡這個?因為您可以使用多個組態檔,例如profile1,profile2它的行為與最后一次獲勝一樣,我的意思是它將覆寫 fromprofile1的值profile2,因為它是按此順序定義的......這同樣不適用于 application-profileName.yml 方法.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/411129.html
標籤:
