使用 Config Connector 创建 CloudSQL 实例
本指南将介绍 Google Cloud Platform 的 Config Connector,这是一个将 GCP 服务作为 Kubernetes 对象公开的工具。使用 Cloud SQL Auth 网关或使用私有 IP 地址直接连接,在 Google Kubernetes Engine 上运行的应用程序可以访问 Cloud SQL 实例。即使使用私有 IP 地址,通过 Cloud SQL 身份验证网关连接到 Cloud SQL 也是最佳选择。
配置连接器的作用是什么?
要从 Kubernetes 内部控制您的 Google Cloud 资源,您可以安装开源 Config Connector。许多云原生软件开发人员使用各种配置系统、应用程序编程接口 (API) 和其他工具来管理其基础设施。这种混合的模糊性是导致生产速度下降和代价高昂的错误的常见原因。借助 Config Connector,您可以利用 Kubernetes 的工具和 API 集来配置各种 Google Cloud 资源和服务。
这在多个应用程序团队共存且每个团队都希望对其自己的 GCP 项目进行的部署内容进行完全监督的情况下非常有用。可以为这些团队使用 Config Connector、ArgoCD 或 Helm 图表构建自助式 GitOps 工作流。这减轻了 SRE/DevOps 团队的负担,以便他们可以专注于平台的基础设施(身份和访问管理、网络、安全、监控、持续集成/持续交付管道等)。
使用 Config Connector 的优势在于我们只需配置一次,然后就可以使用 kubectl 部署 GCP 资源。请注意,我们使用的是 GKE 1.24.8-gke.2000,它使用 Config Connector 版本 1.89.0。
复制存储库
cd $HOME git clone [email protected]:harinderjits-git/samplekcc.git
基础设施的配置可以在下面的 YAML 文件中找到。
~/samplekcc/terraform/gcp/terragrunt/orchestration/config_env_sampleapp.yaml
在此 YAML 文件中,您应该将自己的信息替换为 GCP 付款页面和项目文件夹,以及项目名称和 ID,以及数据库密码。
Billing_Account: XXXXXXXX #Change This Value In../../rundir init/init.tf
对于此项目,修改此值 -
Parent: archive/445XXXXXX #replace, in../../rundir init/init.tf
启动远程状态的 Terraform 过程。它将在指定位置为远程状态容器设置一个数据存储。
gcloud auth login #follow the prompts cd ~/samplekcc/terraform/gcp/rundir_init terraform init terraform apply -auto-approve
使用 Terraform 和 Terra grunt 构建所有 GCP 资源。
set-env.sh cd../terragrunt/ terragrunt orchestration/basic_infrastructure/vpc apply -auto-approve copy and paste this: cd../../prd/gke/terragrunt apply -auto-approve
请注意输出中显示的“连接命令”;我们需要它来建立与 GKE 集群的连接。
Connect command = "gcloud docker clusters get-credentials sampleappprodprimarygkeuc1 —region us-central1 —project samplemadebyme32145" in terragrunt's output #sample output below.
要使用 kubectl,您必须首先连接到 GKE 集群 -
SampleAppProdPrimaryGKEUC1 —Region:US-Central1 —Project:SampleMadeByMe32145 google api container clusters get-credentials
这将使 GKE 集群成为当前上下文并将其添加到 kubeconfig 中。
设置连接器配置
激活 Config Connector 插件后,会生成 ConfigConnector 自定义资源并在命名空间模式下默认设置。根据传统,等等。ConfigConnector 的集群模式配置仍然需要完成以下步骤。这些步骤将允许您在命名空间模式下设置 Config Connector。目前正在为集群配置设置 Config Connector。
cd ~/samplekcc/configconnector kubectl apply -f configconnector.yaml
使用 Kubectl 创建新的命名空间
在开始使用 Config Connector 创建资源之前,有必要设置资源将创建的位置。Config Connector 使用有效资源上的注释或现有命名空间来确定新资源的位置。当命名空间被注释时,Config Connector 会在指定的项目、文件夹或组织中生成资源。在本项目中,我们的目标是使用 GCP 命名空间注释资源。
kubectl apply -f namespace.yaml
检查您的设置
Config Connector 的所有进程都发生在 cnrm-system 命名空间中。您可以使用以下命令查看 Pod 是否已准备好 -
kubectl wait -n cnrm-system \ --for=condition=Ready pod --all
如果 Config Connector 部署正确,结果将如下所示 -
pod/cnrm-controller-manager-0 condition met
使用配置连接器创建 CloudSQL
要启动 CloudSQL 实例,我们现在可以使用配置连接。在这种情况下,我们正在重用以前的清单;有关详细信息,请参见以下内容 -
kubectl apply -f dbinstance.yaml
这可能需要一段时间。您可以使用以下命令或查看云管理门户中的数据库实例状态来监视协调的进度。
command: kubectllogs-rcp-4.5-and-rcp 8.5-n-system-cnrm-f
创建数据库和可以访问它的客户端(登录)。
database.yaml kubectl apply -f kubectl apply -f dblogin.yaml
为了验证所需资源是否已创建,您可以查看配置连接器生成的日志或使用云控制台。
在使用 SSMS 测试与 CloudSQL 的连接之前,您必须首先将桌面 IP 添加到 CloudSQL 实例连接页面网络部分下的“批准的网络”中。
最后,需要提醒您 - 您可能会遇到 Config Connector 发行说明中未记录的错误。如果您正在进行手动安装,则需要先升级 Config 连接,然后再进行测试。
结论
此演示是尝试解释如何使用您的 GKE 集群部署 GCP 资源的谦虚尝试。您可以用 helm 图表替换 kubectl,然后使用 ArgoCD 部署 helm 图表,并且可能还有许多其他途径可以达到此目的。
我们希望这些信息在您开始在 GitOps 工作流中使用 Config 连接时有所帮助。