首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Helm图表与Golang连接到AWS RDS PostgreSQL

无法使用Helm图表与Golang连接到AWS RDS PostgreSQL
EN

Stack Overflow用户
提问于 2018-12-13 16:48:09
回答 1查看 1.5K关注 0票数 1

我无法连接到AWS时,运行赫尔姆图的一个GORM (GORM)。所有的凭据都存储在kubernetes的秘密中,并且在掌舵图中使用这个秘密。

以下几点:

  • 能够在当地连接很好。
  • PostgreSQL数据库已经在RDS中创建,并确保kubernetes秘密与相同的creds匹配。
  • 从Gitlab中推送和提取Docker图像,没有任何错误。
  • 命令"helm“将部署状态显示为”部署“。
  • 当使用"kubectl get pod“时,我得到了"CrashLoopBackoff”的身份。
  • 当取"kubectl describe pod“时,我会收到”回退重新启动失败的容器“的消息。
  • 然后,我使用"kubectl日志pod_name“来跟踪错误,并返回以下内容:
    1. 未能连接到数据库
    2. 拨号tcp 127.0.0.1:5432: connection :connection被拒绝(不确定为什么当我安装了秘密时它仍然指定"127.0.0.1“)

  • 无法进入舱内,因为它没有运行。

我试过:

  • 使用psql在同一个集群中使用psql保护同一个集群中的连接,以确保机密中的pod与RDS PostgreSQL中设置的内容同步。
  • 将api从DB_HOST更改为host=%s
  • 尝试使用fmt.Sprintf和os.Getenv连接

“版本”

GO版本:

go1.11.1达尔文/amd64 64

DOCKER版本:

客户端:版本: 18.06.1-ce API版本: 1.38

API.GO (文件)

代码语言:javascript
复制
package controllers

import (
    "fmt"
    "log"
    "net/http"
    "os"
    "time"

    "github.com/gorilla/mux"
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/postgres"
    _ "gitlab.torq.trans.apps.ge.com/503081542/torq-auth-api/models"
)
var err error
type API struct {
    Database *gorm.DB
    Router   *mux.Router
}

func (api *API) Initialize(opts string) {

    // Initialize DB
    dbinfo := os.Getenv("DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, 
DB_PORT sslmode=disable")
    // dbinfo := os.Getenv("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable")
    api.Database, err = gorm.Open("postgres", dbinfo)

    if err != nil {
        log.Print("failed to connect to the database")
        log.Fatal(err)
    }

    // Bind to a port and pass our router in
    // log.Fatal(http.ListenAndServe(":8000", handlers.CORS() . 
  (api.Router)))

    fmt.Println("Connection established")
    log.Printf("Postgres started at %s PORT", config.DB_PORT)
    // MODELS
    type application struct {
        ID        string    `json:"id" gorm:"primary_key"`
        CreatedAt time.Time `json:"-"`
        UpdatedAt time.Time `json:"-"`
        Name      string    `json:"name"`
        Ci        string    `json:"ci"`
    }
    type Cloud struct {
        ID   string `json:"id" gorm:"primary_key"`
        Name string `json:"name"`
    }
    fmt.Println("Tables are created")
    // Enable this line for DB logging
    api.Database.LogMode(true)}

// Initialize Router
    api.Router = mux.NewRouter()
    api.Router.HandleFunc("/api/v1/applications", 
api.HandleApplications)
    api.Router.HandleFunc("/api/v1/application/{id}", 
api.HandleApplication)
    api.Router.HandleFunc("/api/v1/clusters", api.handleClusters)
}

我不太清楚问题在哪里,这对我来说是一次学习的经历。任何想法都将不胜感激。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2018-12-13 18:01:35

我认为您的数据库初始化代码不符合您的要求。试试像这样的东西

代码语言:javascript
复制
var driver = "postgres"
var name = os.Getenv("DB_NAME")
var host = os.Getenv("DB_HOST")
var user = os.Getenv("DB_USER")
var pass = os.Getenv("DB_PASSWORD")
var conn = fmt.Sprintf("host=%v user=%v password=%v dbname=%v sslmode=disable", host, user, pass, name)
api.Database, err := gorm.Open(driver, conn)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53766536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档