📜  使用 Gitea 和 AKS 在 K8s 集群上安装私有 Git 服务器

📅  最后修改于: 2022-05-13 01:57:09.778000             🧑  作者: Mango

使用 Gitea 和 AKS 在 K8s 集群上安装私有 Git 服务器

在本文中,我们将使用 Helm 在 Azure Kubernetes 服务之上安装一个自托管的 Gitea 服务器,并设置一个 git 存储库。如今,拥有私有 Git 服务器可能会有所帮助。

Gitea是一个社区管理的与 Git 兼容的轻量级代码托管解决方案,用 Go 编写。它是在 MIT 许可下发布的。

Azure Kubernetes 服务 (AKS)是 Microsoft Azure 托管的 Kubernetes 服务

在本文中,我们将使用 az CLI 和 cloud shell 设置 AKS 集群。

执行:

在创建任何资源之前,我们需要验证 Microsoft.OperationsManagement 和 Microsoft.OperationalInsights 是否已在您的订阅中注册

az provider show -n Microsoft.OperationsManagement -o table
az provider show -n Microsoft.OperationalInsights -o table

如果未注册,请使用以下命令进行注册:

az provider register --namespace Microsoft.OperationsManagement
az provider register --namespace Microsoft.OperationalInsights

首先,我们需要创建一个资源组,因为所有 azure 资源都必须在一个特定的资源组中。我将要创建的所有资源都将在西欧地区(westeurope)。

az group create --name my-gitea-lab --location westeurope

安装 AKS 群集:

然后我们将在单个 VM 上部署 Azure Kubernetes 集群,并让它为我们生成 ssh 密钥:

az aks create --resource-group my-gitea-lab --name mygiteaAKSCluster --node-count 1 --node-vm-size standard_b2s --generate-ssh-keys

你可以在 Azure 文档中查看 VM 的价格和大小。对于 AKS,您至少需要 3.5 GB RAM 工作虚拟机,因此我们示例中最便宜的选项是standard_b2s。

注意:创建 AKS 群集时,会自动创建第二个资源组来存储 AKS 资源

新的 k8s 集群已准备就绪

要访问新创建的集群,您可以运行以下命令:

az aks get-credentials --resource-group my-gitea-lab --name mygiteaAKSCluster

helm CLI 已安装在 Azure Cloud Shell 中,但如果您使用的是其他环境 - 请确保使用以下命令安装了 helm 3 CLI 二进制文件:

which helm

让我们继续添加 gitea-charts helm 存储库

helm repo add gitea-charts https://dl.gitea.io/charts/
helm repo update

要自定义您的 Gitea 部署,您需要下载 values.yml 文件。您可以使用 Gitea 设置选项并提供自定义存储类,通过 Loadbalancer\Ingress 公开 Gitea,或设置 LDAP 或 Oauth2 集成。这里有一些例子:

  • service.http.type=LoadBalancer默认值为ClusterIP但由于我们部署在公共云中,我们将使用 LoadBalancer
  • ingress.enabled将启用入口,默认为 false。
  • service.ssh.port为 ssh 流量设置自定义端口。

部署 Gitea:

让我们使用 Helm 包管理器在 Azure Kubernetes 服务集群上引导 Gitea 部署

helm install gitea gitea-charts/gitea  --set service.http.type=LoadBalancer

您可以观看正在配置的负载均衡器

kubectl get --namespace default svc -w gitea-http

一旦出现外部 IP 运行这些命令以获取 Gitea URL:

export SERVICE_IP=$(kubectl get svc --namespace default gitea-http --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
echo http://$SERVICE_IP:3000

欢迎使用新部署的 Gitea!

默认用户名和密码可以在 values.yml 文件中找到

username: gitea_admin
 password: r8sA8CPHD9!bt6d

创建存储库:

登录后,让我们通过单击右上角的“+New Repository”创建一个新存储库

在 repo 创建过程中,您可以设置很多参数:

推送代码:

让我们在 cloud shell 中启动 git repo,添加 Readme 文件并将代码推送到我们的私有 Gitea 服务器:

git init
echo "Hello from Gitea Repo!" > README.md
git add README.md
git commit -m "first commit"
git remote add origin http://20.126.230.2:3000/gitea_admin/FirstRepo.git
git push -u origin master

现在我们可以看到远程服务器上的第一个提交!

清理:

要清理,需要删除 helm chart

helm delete gitea

并删除具有 AKS 群集和工作节点的资源组

az group delete --name my-gitea-lab --yes --no-wait

在本文中,我们介绍了使用 az CLI 安装 Azure Kubernetes 服务 (AKS)、自定义和安装 Gitea helm 图表、使用负载均衡器公开 Gitea 的步骤。然后我们创建了一个 git 存储库并将代码推送到 Gitea 服务器。