Swift + Docker + Kubernetes =来自macOS的出色部署

原始链接:阅读原始链接以获得更好的代码语法和格式!

Swift + Docker + Kubernetes =来自macOS的出色部署
目前,Kubernetes是DevOps行业中最热门的工具,用于自动化,管理和扩展部署…… shashikantjagtap.net Swift + Docker + Kubernetes =来自macOS的出色部署– XCTEQ
目前,Kubernetes是DevOps行业中最热门的工具,用于自动化,管理和扩展部署…… www.xcteq.co.uk

目前,Kubernetes是DevOps行业中最热门的工具,用于自动化,管理和扩展Web应用程序的部署。 但是,Kubernetes很少能够进入Swift和Apple的世界。 有服务器端Swift框架,例如Vapor,Kitura,Perfect等,它们正在做很棒的工作来在服务器上获得Swift。 为了使成熟的DevOps工具(如Docker或Terraform)能够提供部署,还正在进行着努力,以便公司可以在任何云平台上部署应用程序。 流行的云平台是AWS,Google Cloud,Azure,Heroku等。 在本文中,我们将看到在macOS上的本地Kubernetes集群上创建和部署Swift Web应用程序有多么容易。

要求

  • 安装了Docker桌面应用程序(Edge版本)的macOS Mojave
  • 带有docker-compose.yml的Dockerized服务器端Swift应用
  • Docker和Kubernetes部署的基础知识

在macOS上获取Docker + Kubernetes

随着Docker-Desktop的发布,在macOS上获取Docker和Kubernetes的过程变得如此轻松。 您只需要获取Docker-Desktop应用并在其上启用Kubernetes。 而已! 如果您熟悉命令行,但是还有其他解决方案可以在macOS(如Minikube)上本地部署Kubernetes,但是Docker-Desktop可以很好地工作并且可以通过UI轻松配置。 您需要获取嵌入了Kubernetes的最新Docker-Desktop应用程序。 此刻,我获得了包含所有服务的此版本

从Docker-Desktop启用Kubernetes服务非常容易。 只需转到首选项->选择Kubernetes选项卡,然后为本地部署启用以下功能。

几分钟后,您将看到Docker和Kubernetes服务正在运行。 在后台,Docker-Desktop已安装了Kubernetes的所有组件和CLI工具(如kubectl等)。 我们可以通过运行以下命令来检查Kubernetes集群信息,节点和上下文

  $ kubectl版本 
$ kubectl cluster-info
$ kubectl获取节点
$ kubectl config当前上下文

就是为了在macOS上获得Kubernetes和Docker。 很简单!

获取Dokerised和Microservized Swift应用程序

Dockerising和Microservising Swift应用程序的过程有些繁琐。 我们需要了解Web微服务架构,并将其应用于不断发展的Server Side Swift项目。 但是,Github上有一些可用的项目已完全进行了docker化,还有一些Server Side Swift提供程序免费为您提供了Dockerfile,您可以将其扩展为在Docker-Compose中使用基于微服务的体系结构。 无论如何,这是一个巨大的话题,需要单独讨论。 此时,我们需要带有docker-compose.yml文件的服务器端Swift应用程序,其中所有服务都针对容器化部署进行了定义。

有一篇很棒的文章将Dockerized Vapor应用程序放在这里,我们将使用相同的概念,但将其部署在本地Kubernetes集群上。 我已经用所有必需的源代码Swift-Kubernetes创建了一个Github存储库。 这里有一个很棒的Kitura存储库,可以在这里了解Kitura和Kubernetes。 同样,您可以将任何具有docker支持的服务器端应用程序用于部署,但对于本演示,我们将使用Swift-Kubernetes

  $ git clone https://github.com/Shashikant86/Swift-Kubernetes 
$ cd Swift-Kubernetes

现在,我们有了Dockerized和Microservized示例应用程序。 您可以运行docker-compose up来启动整个堆栈。 运行此命令后,您将看到三个运行不同服务的不同容器。

现在,我们的堆栈在本地运行。 下一步是将其部署在本地Kubernetes集群上。

在本地Kubernetes集群上部署它

在Docker-Desktop之前,部署到Kubeenetes需要大量使用命令行工具,例如,我们必须使用Minikube或此处提到的其他基于docker的部署选项。 但是,使用docker-for-desktop,只需运行一个命令即可。 唯一的要求是使用带有docker-compose.yml文件的dockerized应用程序。 让我们将堆栈部署到本地Kubernetes集群中。 假设您已经克隆了Swift-Kubernetes项目,我们可以从项目的根目录运行此命令。

  $ docker stack deploy --compose-file docker-compose.yml vapor-swift-stack 

PS:在运行deploy命令时,如果遇到类似Docker Swarm的问题,则要求您运行docker swarm init,除非您想将其部署在Docker Swarm上,否则请不要这样做。 作为Docker的产品,他们更喜欢Docker Swarm作为协调器,但本教程适用于Kubernetes。 因此,您可以改为运行此命令

  $ $ docker stack deploy --orchestrator kubernetes --compose-file docker-compose.yml vapor-swift-stack 

使用此命令,我们已在本地Kubernetes集群上部署了整个堆栈。 这包括服务,节点,吊舱和部署。 我们可以使用以下命令来验证有关部署的所有信息

  $ docker stack services vapor-swift-stack 
$ kubectl获得部署
$ kubectl获得服务
$ kubectl获取豆荚

恭喜你! 您已在Kubernetes上成功部署了Swift Web应用程序。

获取Kubernetes仪表板

现在,我们已经从命令行看到了所有部署。 可以通过仪表板直观地看到它。 Kubernetes提供了Web UI仪表板,以在表单网页中直观显示信息。 您可以按照此页面上的说明进行操作,但在摘要中,我们可以使用以下命令并创建管理员用户令牌来获取该信息。

  $ kubectl创建-f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml 
$ kubectl代理

您将在端口8001上本地提供仪表板。但是,由于我们需要用户帐户令牌,因此您仍无法访问它。 我们还需要在名为dashboard-adminuser.yaml的文件中创建一个包含详细信息的服务帐户,然后运行以下命令来获取令牌。

  $ kubectl -n kube-system描述秘密$(kubectl -n kube-system获得秘密| grep管理员用户| awk'{print $ 1}') 

是。 那就对了! 我将蓝色方块隐藏了令牌的一部分。 我敢肯定,那里没有什么敏感的,只是以防万一,为了安全起见,又不给生活增加另一个问题,我已经介绍了它。 获得令牌后,您可以粘贴令牌并通过本地主机URL访问Kubernetes仪表板。

  http:// localhost:8001 / api / v1 / namespaces / kube-system / services / https:kubernetes-dashboard:/ proxy / 

使用Kubernetes仪表板,我们可以访问有关部署的信息负载。 您可以在此处阅读有关如何阅读仪表板的更多信息。

您可以使用简单的命令关闭整个Kubernetes集群。

  $ docker stack rm蒸气交换堆栈 

这将拆除整个堆栈,服务,吊舱,部署。

Docker-Desktop的替代品

如果您不想使用Docker-Desktop,还有其他各种选择,如果您是命令行用户,这些选择并不难。 让我们讨论其中的两个。

  • 迷你库

还有一种命令行方法可以在本地管理Kubernetes集群,即Minikube。 您可以使用Homebrew酒桶在本地安装MiniKube。

  $ brew cask安装minikube 

Kubernetes站点上已经有很多文档,以及如何使用Minikube,因此这里不再赘述。 但是,需要牢记的一件事是上下文。 从docker-for-desktop切换回Minikube。 您必须确保上下文是正确的。 您可以使用以下命令来验证。

  $ kubectl config当前上下文 

此命令将打印当前上下文。 如果未将其设置为Minikube,则使用以下命令对其进行显式设置

  $ kubectl config use-context迷你库 

现在您已设置为使用Minikube。

  • Kompose

Kompose是另一个易于安装和运行Kubernetes集群的工具。 您可以使用自制软件安装Kompose

  $ brew install kompose 

使用Kompose,我们可以使用单个命令构建整个堆栈,如果我们的应用程序具有docker-compose.yml文件,则可以启动并运行该堆栈。

  $拼凑起来 

同样,我们可以使用kompose down命令删除整个堆栈。 Kompose的另一个伟大功能是将现有docker compose文件转换为Kubernetes部署和服务文件。 这是进行可扩展Kubernetes部署的简单方法之一。

拥有所有这些文件后,我们可以使用kubectl create命令轻松创建部署和服务。

接下来是什么?

在这一阶段,我们已经在Kubernetes本地集群上部署了Swift应用程序。 您可以使用Kubernetes做很多事情,例如自动化CI / CD管道,扩展部署等。下一步将在基于云的服务(如AWS,Azure,Google Cloud等)上部署集群。 它们都具有Kubernetes支持,您不能错过它。 将带有Kubernetes集群的Swift Web应用程序部署到云中并使其对全世界可用将是一件了不起的事情。

结论

除了Github上的IBM Kitura Kubernetes项目之外,服务器端Swift社区目前对Kubernetes的支持还不是很好。 但是,许多服务器端Swift框架(如Vapor,Perfect)有很大的机会来支持Kubernetes。 他们已经在支持Swift应用程序的容器化部署,我们可以使用Kubenetes使Swift部署更具可伸缩性,可管理性和可扩展性。 让我知道你的想法? 如果您喜欢本文,请随时在DevOps和Swift社区中分享。

===================================

像XCBlog的XCTEQ发布的帖子一样? 您可能还会喜欢我们在 Github 上的一些开源项目, 或者在 Twitter LinkedIn 上关注我们