簡體   English   中英

Helm Kubernetes 使用 NodeJs 應用程序設置 mysql

[英]Helm Kubernetes setup mysql with NodeJs application

我是 Kubernetes 和 helm 世界的新手,並嘗試在 Azure kKubernetes 服務上使用 Kubernetes 和 Helm 使用 MYSQL 數據庫部署 Nodejs 應用程序。

這是我到目前為止所做的:

我的Dockerfile

FROM node:10-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 32000
CMD [ "node", "app.js" ]

我已經使用此Dockerfile構建了映像,然后將其推送到我的ACR注冊表上的存儲庫。 這個應用程序正在使用mysql數據庫,所以在安裝我的應用程序的 helm chart 之前,我已經使用以下命令在我的集群上安裝了mysql helm chart:

helm install --name mysql --set mysqlRootPassword=rootpassword,mysqlUser=mysql,mysqlPassword=my-password,mysqlDatabase=mydatabase,persistence.existingClaim=mysql-pvc stable/mysql

之后,我將集群中的兩個變量導出為:

MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306

然后將端口作為后台進程轉發,例如:

kubectl port-forward svc/mysql 3306

之后,我安裝了自己的應用程序圖表,我通過運行helm create mychart創建了一個圖表,然后創建一個自定義values.yaml文件並在安裝時傳遞它,如下所示:

image:
    registry: helmcr.azurecr.io
    repository: helmcr.azurecr.io/helloworldtest01
    tag: 0.3
service:
    name: http
    type: LoadBalancer
    port: 32000
    internalPort: 32000
hosts:
    - name: mychart.local
      path: /

安裝兩個圖表后,應用程序應該連接到mysql但它說: CrashLoopBackOff

更新:這是我在我的數據庫中配置數據庫連接的方式

application:
module.exports = {
    adapters: {
        mysqlAdapt: mysqlAdapter
    },

  connections: {
    mysqlDB: {
        adapter: 'mysqlAdapt',
        host: process.env.MYSQL_SERVICE_HOST,
        database: 'mydatabase',
        user:'root',
        password:'my-password',
        port: process.env.MMYSQL_SERVICE_PORT,
        supportBigNumbers:true, //true/false
        debug:['ComQueryPacket'], //false or array of node-mysql debug options
        trace:true //true/false
    } 
  }
};

當我運行下面的命令來獲取日志時:

kubectl logs myrel09-mychart09-5b8bb86788-9k627 -p

這里是上述命令的輸出:

Wed, 06 Feb 2019 13:29:21 GMT body-parser deprecated bodyParser: use individual json/urlencoded middlewares at app.js:10:9
Wed, 06 Feb 2019 13:29:21 GMT body-parser deprecated undefined extended: provide extended option at node_modules/body-parser/index.js:105:29
Wed, 06 Feb 2019 13:29:21 GMT express deprecated app.del: Use app.delete instead at node_modules/express-resource/index.js:153:19
Load model crud
(node:1) [DEP0095] DeprecationWarning: timers.enroll() is deprecated. Please use setTimeout instead.

/usr/src/app/app.js:32
    if (err) throw err;
             ^
Error (E_UNKNOWN) :: Encountered an unexpected error
: Could not connect to MySQL:
Error: connect ECONNREFUSED 127.0.0.1:3306
    at afterwards (/usr/src/app/node_modules/sails-mysql/lib/connections/spawn.js:72:13)
    at /usr/src/app/node_modules/sails-mysql/lib/connections/spawn.js:40:7
    at Handshake.onConnect [as _callback] (/usr/src/app/node_modules/sails-mysql/node_modules/mysql/lib/Pool.js:54:9)
    at Handshake.Sequence.end (/usr/src/app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
    at Protocol.handleNetworkError (/usr/src/app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:364:14)
    at PoolConnection.Connection._handleNetworkError (/usr/src/app/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:421:18)
    at Socket.emit (events.js:189:13)
    at emitErrorNT (internal/streams/destroy.js:82:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
    at process._tickCallback (internal/process/next_tick.js:63:19)

當我嘗試從我的本地系統連接到這個mysql數據庫時,它連接成功,這意味着數據庫工作正常,但我的配置有問題。

這里有什么問題?

提前致謝!

由於您使用同一個集群來部署兩個應用程序,因此您也可以使用集群 ip。

如果你想使用端口轉發,我認為你應該使用節點的 ip 而不是 localhost ip。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM