使用 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 资源
要访问新创建的集群,您可以运行以下命令:
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
默认用户名和密码可以在 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 服务器。