# 安装
Nautes 支持基于公有云、私有云、主机、及 Kubernetes 集群进行安装,本文档以阿里云为例描述了在公有云安装 Nautes 的过程。
# 准备环境
- 安装机:AMD64 架构的 Linux 服务器,需要预先安装 Docker (opens new window)、Git、Bash,并确保 /opt/nautes 目录没有被占用。
- 公有云密钥:一个阿里云账号的访问密钥,如果您使用的是 RAM 用户,请确保 RAM 用户有 AliyunECSFullAccess 和 AliyunVPCFullAccess 权限。详情参考 创建 AccessKey (opens new window)。
安装程序会调用阿里云的 API 申请资源,这个过程会产生一定的费用(请参考 阿里云费用说明)。
受阿里云的计费规则限制,请确保上述阿里云账号内的余额大于100元人民币,否则安装程序无法调用阿里云的 API 申请资源。
# 执行安装
安装程序需要从 GitHub 获取相关配置(例如镜像等),请确保安装机与 GitHub 之间的网络连接正常。
创建安装程序的配置文件。
cat <<EOT >> vars.yaml
access_key: < your alicloud access key >
secret_key: < your alicloud secret key >
EOT
执行以下命令进行默认安装。
curl https://raw.githubusercontent.com/nautes-labs/installer/main/installer.sh | bash -
或者
curl -OL https://raw.githubusercontent.com/nautes-labs/installer/main/installer.sh
chmod +x installer.sh
./installer.sh
默认安装单节点的 K3s ,根据安装机公网带宽大小,整个安装过程预计耗时15~25分钟。安装成功后,您可以在 /opt/nautes 目录下找到安装后的组件信息。如果安装失败,您可以通过 /opt/nautes/out/logs 目录下的日志排查问题。
安装过程中出现任何问题,请参考 常见问题。
# 查看安装结果
/opt/nautes/flags 中存储了安装进度的标识文件。安装程序会根据标识文件跳过已完成的安装步骤。
/opt/nautes/terraform 中存储了 terraform 的状态文件,记录了安装程序在阿里云上申请的资源清单。
/opt/nautes/out 中存储了已安装组件的相关信息:
- GitLab 用于托管租户的配置库,用户应用的源代码、部署清单和流水线配置等。GitLab 的管理员密码,以及租户配置库的访问信息等存储在 gitlab 子目录下。
- Vault 用于存储和管理租户的密钥数据。Vault 的 unseal key 和 root token 存储在 vault 子目录下。
- Kubernetes 集群用于承载所有的租户管理组件。集群的 kubeconfig 存储在 kubernetes 子目录下。
- ArgoCD 用于监听租户配置库,并根据仓库中的配置声明向 Kubernetes 集群同步租户配置。ArgoCD 的管理员密码存储在 argocd 子目录下。
- Dex 用于提供基于 OIDC 协议的统一认证服务。dex 的客户端密钥存储在 kubernetes 子目录下。
除此之外,/opt/nautes/out 下其他子目录的相关信息:
- hosts:云服务器的 IP 地址和访问密钥。
- pki:访问组件需要使用的证书和签发证书的 CA。
- service:租户管理集群、Dex、ArgoCD、Vault、GitLab、Nautes API Server 的访问地址。
- logs:安装程序的日志。
Nautes API Server 的 Swagger UI 相对路径:/q/swagger-ui。
租户配置库:用于存储租户管理相关的配置信息。每个租户有一个租户配置库。
# 销毁环境
请确保未删除安装机上的 /opt/nautes 目录,并且执行销毁命令的目录下有安装程序的配置文件 vars.yaml。
销毁程序将删除所有从云服务中申请的资源,暂不支持单独对组件执行卸载。
curl https://raw.githubusercontent.com/nautes-labs/installer/main/installer.sh | bash -s destroy
或者
./installer.sh destroy
# 阿里云费用说明
安装程序所申请的云服务器的默认规格如下:
- 区域:中国香港-可用区B
- 镜像:Ubuntu 22.04 64位
- 实例规格:ecs.c6.large(2C4G)
- 系统盘:ESSD云盘 PL0 40G
- 网络:实例公网IP
- 数目: 2
- 用途:K3s、Vault
- 区域:中国香港-可用区B
- 镜像:Ubuntu 22.04 64位
- 实例规格:ecs.g5.large(2C8G)
- 系统盘:ESSD云盘 PL0 40G
- 网络:实例公网IP
- 数目: 1
- 用途: GitLab
安装程序默认使用 抢占式实例模式 (opens new window) 创建云服务器,该模式存在实例被自动释放的风险。如果您希望体验更稳定的环境,请在 vars.yaml 增加以下配置,让安装程序切换至 按量付费模式 (opens new window) 申请资源。
alicloud.save_money: false
两种付费模式的费用预估如下(不包含流量费):
按量付费:56.1¥/天
抢占式实例:13.5¥/天
实际产生的费用会受到市场价格波动的影响,以上预估值仅供参考。
# 自定义安装
# 使用指定版本的安装程序镜像
安装开始前,设置环境变量 INSTALLER_VERSION。
export INSTALLER_VERSION=vX.Y.Z
# 使用指定租户配置库模板
安装开始前,在 vars.yaml 文件中添加以下配置。
repos.tenant_template.url: https://github.com/nautes-labs/tenant-repo-template.git
repos.tenant_template.version: main
# 使用标准 K8s
安装开始前,在 vars.yaml 文件中添加以下配置。
deploy.kubernetes.type: k8s
deploy.kubernetes.node_num: 3
# 完整参数清单
请参考 vars.yaml.sample (opens new window)。
# 常见问题
安装 Nautes 过程中的步骤 [init-host : Create instance] 报错:code: 403, The resource is out of stock in the specified zone,应该怎么解决?
安装程序默认使用 抢占式实例模式 (opens new window) 创建指定规格的云服务器。
如果默认规格的云服务器库存不足,将出现以上错误。
查找报错信息中 in resource "alicloud_instance"
之后的实例名称,例如:gitlab、kubernetes、vault。
根据不同的实例名称,在 vars.yaml
文件中,按需添加对应参数以修改云服务器的默认规格。修改配置之后,请先销毁环境,再重新执行安装程序即可解决该问题。
# 以下参数值仅为建议实例类型,您可以修改实例类型为资源规格不低于建议实例类型的其他类型
# GitLab 的云服务器实例类型
gitlab_instance_type: ecs.g6.large
# Kubernetes 的云服务器实例类型
kubernetes_instance_type: ecs.c5.large
# Vault 的云服务器实例类型
vault_instance_type: ecs.c5.large