K8s中,tomcat的一部分jvm參數,如何經過env環境變量傳遞?

這兩天解決的一個需求:shell

若是用戶沒有在deployment中設置env參數,則tomcat默認使用1G左右的內存;tomcat

若是用戶在deployment中提供了jvm參數,則tomcat將這部分的參數,覆蓋掉默認的jvm參數。jvm

這個實現思路是ok的,但在實現shell腳本時,老司機也遇到了新問題:spa

如何判斷一個有空格的環境變量是否存在?code

最後經過百度搞定。blog

有空格的環境變量的讀取,經過兩種辦法可解決,一種是改寫IFS,一種是用雙引號。內存

好比,deployment.yaml的部份內容以下:class

... env: - name: XXX_JAVA_OPTS value: "-Xms500m -Xmx950m -XX:MaxNewSize=250m -XX:+UseConcMarkSweepGC" ...

那鏡像裏的處理腳本以下:變量

if [ "$XXX_JAVA_OPTS" ];then JAVA_OPTS="$JAVA_OPTS $XXX_JAVA_OPTS" else JAVA_OPTS="$JAVA_OPTS -Xms800m -Xmx900m -XX:MaxNewSize=256m" JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC" fi

 

也可以下:百度

IFS_old=$IFS IFS= $'\n' if [ $XXX_JAVA_OPTS ];then JAVA_OPTS="$JAVA_OPTS $XXX_JAVA_OPTS" else JAVA_OPTS="$JAVA_OPTS -Xms800m -Xmx900m -XX:MaxNewSize=256m" JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC" Fi IFS=$IFS_old
相關文章
相關標籤/搜索