Go 클라이언트 라이브러리를 사용하여 Spanner Omni에 연결

이 문서에서는 Go 클라이언트 라이브러리를 구성하여 Spanner Omni에 대한 보안 연결을 설정하는 방법을 보여줍니다. 데이터베이스 관리 클라이언트 또는 데이터베이스 클라이언트를 만들 때 클라이언트 옵션을 설정하여 이러한 연결을 설정합니다.

Go 클라이언트 라이브러리는 일반 텍스트, TLS, mTLS 연결을 지원합니다. 모든 연결 유형의 경우 option.WithoutAuthentication()을 포함하여 Spanner Omni 엔드포인트로 사용자 인증 정보를 Google Cloud 전송하지 않도록 합니다.

자세한 내용은 Spanner 문서의 Go에서 Spanner 시작하기 를 참조하세요.

시작하기 전에

Go 클라이언트 라이브러리를 Spanner Omni에 연결하려면 IsExperimentalHost: true 구성을 사용해야 합니다. 이 옵션은 라이브러리가 Spanner의 관리형 버전이 아닌 Spanner Omni의 로컬 또는 온프레미스 배포에 연결되도록 지정합니다.

이 구성 옵션을 사용하려면 환경이 다음 요구사항을 충족해야 합니다.

  • Go 클라이언트 라이브러리는 v1.91.0 이상이어야 합니다.

  • Go 출시 버전은 버전 1.25 이상이어야 합니다.

일반 텍스트 통신

일반 텍스트 통신을 설정하려면 다음 코드를 실행합니다.

import ("google.golang.org/grpc/credentials/insecure")

adminClient, err := database.NewDatabaseAdminClient(ctx,
    option.WithEndpoint(OMNI_ENDPOINT),
option.WithoutAuthentication(),
option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())),
)

clientConfig := ClientConfig{
        IsExperimentalHost: true,
    }
databaseClient, err := spanner.NewClientWithConfig(ctx, db,
clientConfig,
    option.WithEndpoint(OMNI_ENDPOINT),
option.WithoutAuthentication(),
option.WithGRPCDialOption(grpc.WithTransportCredentials(insecure.NewCredentials())),
)

TLS 연결

TLS 연결을 설정하려면 다음 코드를 실행합니다.

func createClients(ca_certificate, database, omniEndpoint string){
    // TLS CA cert configuration
caCert, err := os.ReadFile(ca_certificate)
    capool := x509.NewCertPool()
capool.AppendCertsFromPEM(caCert)
    creds := credentials.NewTLS(&tls.Config{RootCAs: capool})

    adminClient, err := database.NewDatabaseAdminClient(ctx,
        option.WithEndpoint(omniEndpoint),
option.WithGRPCDialOption(grpc.WithTransportCredentials(creds)),
option.WithoutAuthentication(),
)
clientConfig := ClientConfig{
        IsExperimentalHost: true,
    }
databaseClient, err := spanner.NewClientWithConfig(ctx, db,
clientConfig,
        option.WithEndpoint(omniEndpoint),
option.WithoutAuthentication(),
option.WithGRPCDialOption(grpc.WithTransportCredentials(creds)),
)
}

mTLS 연결

mTLS 연결을 설정하려면 다음 코드를 실행합니다.

func createClients(ca_certificate, client_certificate, client_key, database, omniEndpoint string){
    // mTLS cred configuration
    caCert, err := os.ReadFile(ca_certificate)
        capool := x509.NewCertPool()
        capool.AppendCertsFromPEM(caCert)
        cert := tls.LoadX509KeyPair(client_certificate, client_key)
        creds := credentials.NewTLS(&tls.Config{Certificates: []tls.Certificate{cert}, RootCAs: capool})

        adminClient, err := database.NewDatabaseAdminClient(ctx,
            option.WithEndpoint(omniEndpoint),
            option.WithoutAuthentication(),
    option.WithGRPCDialOption(grpc.WithTransportCredentials(creds))
    )
    clientConfig := ClientConfig{
            IsExperimentalHost: true,
        }
    databaseClient, err := spanner.NewClientWithConfig(ctx, db,
    clientConfig,
            option.WithEndpoint(omniEndpoint),
    option.WithoutAuthentication(),
    option.WithGRPCDialOption(grpc.WithTransportCredentials(creds)),
    )
}