如何为私有 GKE 集群启用 Gitlab CI/CD?

     2023-02-19     23

关键词:

【中文标题】如何为私有 GKE 集群启用 Gitlab CI/CD?【英文标题】:How to enable Gitlab CI/CD for Private GKE cluster? 【发布时间】:2020-07-13 07:08:32 【问题描述】:

我想设置 Gitlab CI/CD 的 AutoDevops 功能,为此我正在尝试将现有的 kubernetes 集群设置为我的环境。

但是,Gitlab 需要用于访问 Kubernetes API 的 Kubernetes Master API URL。 Kubernetes 公开几个 API,我们想要所有这些 API 通用的“基本”URL, 例如,https://kubernetes.example.com 而不是 https://kubernetes.example.com/api/v1。 我们将通过运行以下命令获取 API URL:

kubectl cluster-info | grep 'Kubernetes master' | awk '/http/ print $NF

返回 https://

在我的情况下,我有一个私人 IP 是 https://172.10.1.x

没有任何文档可以帮助为私有 GKE 集群设置 gitlab CI。

如何设置 gitlab 以借助正在运行的 VM 实例或 pod 的服务 IP 访问我的 kubernetes master?或者如果有任何解决方案/变通方法的建议可以实现这一点,请提供帮助。

Add Existing GKE cluster as Environment

【问题讨论】:

嗨,请检查this answer。它解决了一些不同的问题,但与您的问题有关。 Yasen,感谢您的回复,这个答案也很有用,因为我还必须设置 Gitlab 跑步者。我可以通过哪些方式访问 Gitlab ci 的 k8s 主 API。请检查我分享的链接。 还有其他解决方法吗? 【参考方案1】:

现在(2020 年 9 月)有替代方案,但它不是免费的(仅限 GitLab.com Premium/Ultimate),在 14.5+(2021 年 11 月)中免费。

见GitLab 13.4

GitLab Kubernetes 代理简介

GitLab 的 Kubernetes 集成长期以来无需手动设置即可部署到 Kubernetes 集群。许多用户都喜欢这种易用性,而另一些用户则遇到了一些挑战。

当前的集成要求您的集群对 Internet 开放,以便 GitLab 访问它。对于许多组织来说,这是不可能的,因为出于安全、合规或监管目的,他们必须锁定其集群访问权限。为了解决这些限制,用户需要在 GitLab 之上创建自定义工具,否则他们无法使用该功能。

今天,我们发布了 GitLab Kubernetes 代理:一种部署到 Kubernetes 集群的新方法。代理在您的集群内部运行,因此您无需将其打开到 Internet。代理通过从 GitLab 中提取新更改来编排部署,而不是 GitLab 将更新推送到集群。无论您使用哪种 GitOps 方法,GitLab 都能满足您的需求。

请注意,这是代理的第一个版本。目前,GitLab Kubernetes Agent 具有配置驱动的设置,并支持通过代码进行部署管理。一些现有的 Kubernetes 集成功能,例如 Deploy Boards 和 GitLab Managed Apps,尚不受支持。 Our vision 将最终实现这些功能,并提供与代理的新的以安全和合规为中心的集成。

https://about.gitlab.com/images/13_4/gitops-header.png -- 介绍 GitLab Kubernetes 代理

请参阅 Documentation 和 Issue。


另见GitLab 13.5(2020 年 10 月)

使用 Omnibus GitLab 安装 GitLab Kubernetes 代理

上个月,我们为使用 Helm 安装的自我管理 GitLab 实例引入了 GitLab Kubernetes Agent。

此版本增加了对official Linux package 的支持。

在这个新的 Kubernetes 集成中,代理通过从 GitLab 中提取新更改来编排部署,而不是 GitLab 将更新推送到您的集群。

您可以了解更多关于 how the Kubernetes Agent works now 和 check out our vision 的信息,以了解即将推出的内容。

请参阅 Documentation 和 Issue。


GitLab 13.11(2021 年 4 月)证实了这一点:

GitLab Kubernetes 代理可在 GitLab.com 上获得

GitLab Kubernetes 代理终于在 GitLab.com 上可用。通过使用代理,您可以从快速、基于拉取的集群部署中受益,同时 GitLab.com 管理代理的必要服务器端组件。

GitLab Kubernetes 代理是 GitLab 的 Kubernetes 集成的核心构建块。 目前基于代理的集成支持基于拉取的部署和网络安全策略集成和警报,并且很快也将获得对基于推送的部署的支持。

与传统的基于证书的 Kubernetes 集成不同,GitLab Kubernetes 代理不需要向 GitLab 开放您的集群,并允许在集群内围绕 GitLab 的功能进行微调的 RBAC 控制。

参见Documentation 和issue。


见GitLab 14.5(2021 年 11 月)

GitLab Kubernetes 代理在 GitLab Free 中可用

将 Kubernetes 集群与 GitLab Kubernetes Agent 连接可简化集群应用程序的设置,并支持将 GitOps 安全部署到集群。

最初,GitLab Kubernetes Agent 仅适用于高级用户。

在我们对开源精神的承诺中,我们将 GitLab Kubernetes 代理和 CI/CD 隧道的核心功能移至 GitLab Free。 我们希望这些开源功能能够吸引许多没有专门的基础架构团队和对集群管理有严格要求的用户。 作为 GitLab Premium 产品的一部分,高级功能仍然可用。

参见Documentation 和Epic。

【讨论】:

非常感谢。如果成功了,我会调查并更新你☺️ @Chronograph3r GitLab 13.11 看起来很有希望。请参阅上面我编辑的答案。 非常感谢这位朋友,感激不尽

如何为 GitLab CI 运行器启用 Maven 工件缓存?

】如何为GitLabCI运行器启用Maven工件缓存?【英文标题】:HowtoenablemavenartifactcachingforGitLabCIrunner?【发布时间】:2016-10-1314:24:53【问题描述】:我们将GitLabCI与共享运行器一起使用来进行持续集成。对于每个构建,运行程序都会下... 查看详情

在创建 GKE 集群时启用自动扩缩

】在创建GKE集群时启用自动扩缩【英文标题】:EnableautoscalingonGKEclustercreation【发布时间】:2017-01-2003:08:40【问题描述】:我尝试在GKE上创建一个自动缩放的容器集群。当我使用“--enable-autoscaling”选项时(如文档所示:https://clou... 查看详情

如何为 Gitlab 运行器启用通过 SSH 克隆?

】如何为Gitlab运行器启用通过SSH克隆?【英文标题】:HowdoIenablecloningoverSSHforaGitlabrunner?【发布时间】:2017-01-0514:42:30【问题描述】:我在我的WindowsGitlab运行器上通过HTTP克隆大型存储库时遇到了一些问题。我尝试了几种方法来进... 查看详情

使用 terraform 将公共 GKE 更改为私有 GKE 集群

】使用terraform将公共GKE更改为私有GKE集群【英文标题】:ChangePublicGKEtoPrivateGKEclusterusingterraform【发布时间】:2021-05-0102:56:02【问题描述】:如何将现有的GKE集群更改为GKE私有集群?我是否能够根据防火墙规则从Internet连接到Kubectl... 查看详情

从其他区域访问私有 GKE 集群?

】从其他区域访问私有GKE集群?【英文标题】:AccessprivateGKEclustersfromadifferentregion?【发布时间】:2020-04-2203:38:48【问题描述】:我使用以下命令创建了一个GKE集群:gcloudbetacontainerclusterscreate"cluster-asia-south1"\\--region"asia-south1"\\--pro... 查看详情

如何为现有的本地集群配置和启用 Azure Service Fabric 反向代理?

】如何为现有的本地集群配置和启用AzureServiceFabric反向代理?【英文标题】:HowtoconfigureandenableAzureServiceFabricReverseProxyforanexistingon-premisescluster?【发布时间】:2016-12-1706:54:26【问题描述】:AzureServiceFabric反向代理是否在本地集群... 查看详情

Terraformed 私有 GKE 集群自动化访问

】Terraformed私有GKE集群自动化访问【英文标题】:TerraformedprivateGKEclusterautomationaccess【发布时间】:2019-04-0523:15:40【问题描述】:我使用以下.tf在GoogleKubernetesEngine(GKE)上构建了一个私有Kubernetes集群(Terraform版本11.10):module"nat"sou... 查看详情

在具有私有 GKE 集群的 Terraform 上使用 Kubernetes 提供程序

】在具有私有GKE集群的Terraform上使用Kubernetes提供程序【英文标题】:UseKubernetesprovideronTerraformwithprivateGKEcluster【发布时间】:2021-05-2421:15:41【问题描述】:我想使用Terraform上的kubernetes提供程序与私有GKE集群进行交互。我可以成... 查看详情

使用私有 IP 从不同 VPC 网络中的 GKE 集群连接到 Cloud SQL

】使用私有IP从不同VPC网络中的GKE集群连接到CloudSQL【英文标题】:ConnecttoCloudSQLfromGKEclustersindifferentVPCNetworksusingPrivateIP【发布时间】:2020-11-2409:03:09【问题描述】:我有2个独立的GKEVPC原生集群(gke1、gke2)和一个ComputeEngine实例... 查看详情

在 gitlab CI 中连接到 kubernetes 集群时出现禁止错误

】在gitlabCI中连接到kubernetes集群时出现禁止错误【英文标题】:ForbiddenerrortoconnecttokubernetesclusteringitlabCI【发布时间】:2021-11-1017:37:03【问题描述】:我正在尝试在我的自托管gitlab实例中访问我的kubernetes集群,如docs中所述。deploy... 查看详情

如何使用 terraform 为自动创建的 GKE 集群和服务防火墙规则启用 Logconfig

】如何使用terraform为自动创建的GKE集群和服务防火墙规则启用Logconfig【英文标题】:HowtoEnableLogconfigforautomaticallycreatedGKECluster&Servicefirewallrulesusingterraform【发布时间】:2021-11-1520:47:38【问题描述】:在Terraform中,我在防火墙模... 查看详情

Docker 构建失败 - 带有 GKE 的 Gitlab CI。无法通过 tcp://localhost:2375 连接到 Docker 守护程序。 docker 守护进程是不是正在运行?

】Docker构建失败-带有GKE的GitlabCI。无法通过tcp://localhost:2375连接到Docker守护程序。docker守护进程是不是正在运行?【英文标题】:DockerBuildFails-GitlabCIwithGKE.CannotconnecttotheDockerdaemonattcp://localhost:2375.Isthedockerdaemonrunning?Docker构建失败-... 查看详情

如何为 HPA 自动缩放指标启用 KubeAPI 服务器

】如何为HPA自动缩放指标启用KubeAPI服务器【英文标题】:HowtoEnableKubeAPIserverforHPAAutoscalingMetrics【发布时间】:2019-05-1212:12:53【问题描述】:我正在使用Kube版本v1.13.0。由于Heapster从v1.11开始贬值,我一直坚持启用API服务器以用于... 查看详情

让 GitLab CI 克隆私有存储库

】让GitLabCI克隆私有存储库【英文标题】:GettingGitLabCItocloneprivaterepositories【发布时间】:2014-10-3014:31:26【问题描述】:我设置了GitLab和GitLabCI来托管和测试我的一些私人存储库。对于这个系统下的作曲家模块,我设置了Satis来解... 查看详情

ci/cd之搭建私有git仓库gitlab(代码片段)

私有仓库GitlabGitlab简介CI/CD安装GitlabGitlab使用Gitlab简介GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab官方文档:... 查看详情

ci/cd之搭建私有git仓库gitlab(代码片段)

私有仓库GitlabGitlab简介CI/CD安装GitlabGitlab使用Gitlab简介GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab官方文档:... 查看详情

如何为启用 2FA 的 github 帐户配置 Jenkins?

】如何为启用2FA的github帐户配置Jenkins?【英文标题】:HowtoconfigureJenkinsfor2FAenabledgithubaccount?【发布时间】:2021-12-1320:54:01【问题描述】:我的帐户启用了2FA,并且我的仓库是私有的。我正在尝试使用Jenkins将我的node.js应用程序部... 查看详情

使用来自 Gitlab Registry 的私有 Docker 镜像作为 CI 的基础镜像

】使用来自GitlabRegistry的私有Docker镜像作为CI的基础镜像【英文标题】:UsingaprivateDockerImagefromGitlabRegistryasthebaseimageforCI【发布时间】:2016-11-1104:51:23【问题描述】:如果我想使用来自GitlabRegistry的镜像作为另一个CI构建的基础镜像... 查看详情