在 AWS 上开始使用 OpenShift
设置你自己的 OpenShift 集群可能有点复杂,但在本文中,我将向你展示如何使其变得相当轻松。
OpenShift 是红帽提供的用于托管和扩展应用程序的平台即服务产品。它建立在谷歌流行的 Kubernetes 系统之上。
使用 OpenShift Online 快速启动和运行非常简单,因为它是一个云托管解决方案。设置你自己的集群稍微复杂一些,但在本文中,我将向你展示如何使其变得相当轻松。
这个项目的代码库位于 github.com/dwmkerr/terraform-aws-openshift。
创建基础设施
OpenShift 对其运行的硬件有一些相当具体的要求1。还需要设置 DNS,以及互联网访问等等。
总而言之,对于一个基础设置,你将需要类似这样的东西
也就是 (深吸一口气)
- 一个网络
- 一个公共子网,通过网关访问互联网
- 一个主节点,它将运行 OpenShift 主节点
- 一对节点主机,它们将运行额外的 OpenShift 节点
- 一个托管区域,它允许我们配置 DNS
- 一个堡垒,它允许我们通过 SSH 连接到主机,而无需直接暴露它们
- 某种基本的日志聚合,我正在使用 CloudWatch
这不是一个生产级设置,需要冗余的主节点等等,但它提供了基础知识。
与其手动设置此基础设施,不如使用 Terraform 脚本化。要设置基础设施,请克隆 github.com/dwmkerr/terraform-aws-openshift 代码库
$ git clone git@github.com:dwmkerr/terraform-aws-openshift
...
Resolving deltas: 100% (37/37), done.
然后使用 terraform CLI2 创建基础设施
$ cd terraform-aws-openshift/
$ terraform get && terraform apply
系统会要求你选择一个区域来部署网络,这里我使用的是 us-west-1
几分钟后,基础设施将被设置完成
快速浏览一下 AWS 控制台,即可看到我们设置的新主机
下一步是安装 OpenShift。
安装 OpenShift
有几种不同的安装 OpenShift 的方法,但我们将使用的方法称为“高级安装3”。这本质上涉及
- 创建一个“清单”,它指定 OpenShift 将安装在哪些主机上以及安装选项
- 下载高级安装代码
- 运行高级安装 Ansible Playbook
要创建清单,我们只需运行
sed "s/\${aws_instance.master.public_ip}/$(terraform output master-public_ip)/"
inventory.template.cfg > inventory.cfg
这会获取我们的“清单模板4”,并用我们主节点的公共 IP 填充它,该 IP 记录在 Terraform 输出变量中。
然后我们可以将清单复制到堡垒
ssh-add ~/.ssh/id_rsa
scp ./inventory.cfg ec2-user@$(terraform output bastion-public_dns):~
我们可以再次使用 Terraform 输出变量,这次获取堡垒 IP。最后,我们将我们的安装脚本通过管道传递到堡垒主机
cat install-from-bastion.sh | ssh -A ec2-user@$(terraform output bastion-public_dns)
有一个 错误,这意味着你可能会看到 ansible-playbook: command not found
,如果是这样,只需再次运行脚本即可。安装脚本克隆安装脚本并运行它们,使用我们提供的清单
这可能需要大约 10 分钟才能运行。就这样,OpenShift 就安装好了
open "https://$(terraform output master-public_dns):8443"
点击“高级”并继续,因为我们使用的是自签名证书,大多数浏览器都会发出警告
输入任何用户名和密码(系统配置为默认允许任何人访问它),你将看到 OpenShift 控制台
由于设置需要三个 t2.large
实例,而这些实例在免费套餐中不可用,你可能需要在完成后清理
terraform destroy
总结
希望你觉得这很有用,github 仓库的 README 中有更多详细信息和参考资料
欢迎评论和反馈!
历史
- 2017 年 2 月 2 日:初始版本
- 查看 https://docs.openshift.org/latest/install_config/install/prerequisites.html#system-requirements
- 使用 'brew install terraform',完整的说明在 README.md 中
- 查看 https://docs.openshift.org/latest/install_config/install/advanced_install.html
- 查看 https://github.com/dwmkerr/terraform-aws-openshift/blob/master/inventory.template.cfg