Akamai App Platform上手指南

178 阅读11分钟

Akamai App Platform(Akamai应用平台)已于最近正式推出!这是Akamai围绕Linode Kubernetes Engine(LKE)提供的一键式扩展解决方案,可供用户在使用Kubernetes时轻松添加以开发者和运维为中心的工具,从而实现自动化的自助服务,借此简化应用程序的生命周期工作。简单来说,Akamai App Platform能将Cloud Native Computing Foundation(CNCF,云原生计算基金会)所提倡的很多技术紧密连接在一起,为用户提供直接价值。


延伸阅读,点击链接了解Akamai Cloud Computing


本文将介绍使用Akamai App Platform配置LKE集群的步骤,以及如何在此基础上构建、部署并发布应用。

使用Akamai App Platform配置Kubernetes集群

Akamai App Platform目前还处于Beta测试阶段。在上手使用前,首先请登录或注册一个Akamai云计算账户,然后在Beta测试页面注册参加测试计划。

加入测试计划后,从左侧导航菜单选择Kubernetes,然后选择Create Cluster(创建集群)。在随后出现的Create a Kubernetes Cluster(创建Kubernetes集群)页面设置下列选项:

  • 在Cluster Label(集群标签)字段输入集群名称。该名称在当前账户下的所有群集中必须是唯一的,使用Cloud Manager仪表板时,我们需要通过该名称来区分自己名下的不同集群。
  • 从下拉菜单中选择区域。
  • 从下拉菜单中选择要部署到集群的Kubernetes版本。
  • 在App Platform for LKE选项下,选择Yes, enable App Platform for LKE(是的,启用App Platform for LKE)。
  • 在Add Node Pools(添加节点池)选项下,选择构成LKE集群的Linode工作节点要使用的硬件资源。在Beta测试阶段,App Platform for LKE要求节点池至少包含3个工作节点,每个节点至少有16 GB内存。目前不支持使用共享CPU。
  • 选择Add(添加),将节点池纳入配置。
  • 将节点池添加到配置之后,该节点池将会显示在Cloud Manager右侧的Cluster Summary(集群摘要)中,其中还会详细列出集群的硬件资源和每月成本。
  • 如果对集群的配置满意,请点击右侧的Create Cluster(创建集群)。随后会显示集群详情页以及节点池信息。

随后将开始创建LKE集群,并在准备就绪后自动安装App Platform。App Platform for LKE安装过程大约需要10到15分钟。安装完成后,Portal Endpoint(门户端点)URL会显示在集群详情页App Platform for LKE选项下。安装进度会每60秒刷新一次。如果安装仍在进行中,则不会显示门户端点URL,而是会显示“安装进行中”字样。

当LKE群集和App Platform均已就绪后,请单击所显示的门户端点URL:

随后将会看到如下图所示的登录页面:

登录前需要先准备好初始凭据。请在集群详情页打开“省略号”选项菜单,然后选择Download Kubeconfig(下载Kubeconfig)。该文件会保存到电脑的“下载”文件夹中。

随后在电脑上打开终端Shell,运行如下命令将刚才下载的Kubeconfig文件的路径保存到$KUBECONFIG环境变量中。在本例中,Kubeconfig文件位于Downloads文件夹里,不过大家可能需要根据实际情况修改具体路径。

export KUBECONFIG=~/Downloads/kubeconfig.yaml

接着执行如下命令获取用户名:

kubectl get secret platform-admin-initial-credentials -n keycloak --template={{.data.username}} | base64 -d

并执行如下命令获取密码:

kubectl get secret platform-admin-initial-credentials -n keycloak --template={{.data.password}} | base64 -d

接下来就可以使用上述凭证登录控制台并更改初始密码了。

为App Platform配置对象存储

登录到控制台后,我们首先需要配置对象存储。系统会显示一条消息,询问是否让App Platform为我们配置对象存储。

对象存储并非必须的,但强烈建议使用,因为这样可防止在为集成的应用程序使用存储卷时出现磁盘空间不足的错误。使用对象存储还能为平台使用的所有数据库和Git仓库创建备份。

如果不想让App Platform为我们配置对象存储,请选择Skip for Now(暂时跳过)。请注意,如果跳过该步骤,数据库备份等功能将不可用。不过我们可以随时在Maintenance(维护)选项下启动一个向导来配置对象存储。

  • 单击Yes(是)。
  • 按照屏幕提示创建Personal Access Token(个人访问令牌),请务必为Object Storage类别选择Read/Write(读/写)权限。记得将API令牌信息复制出来。
  • 将刚才复制的访问令牌粘贴到向导,并选择要将存储桶创建到哪个区域:

  • 随后单击Submit(提交)。
    随后还需要在账户中创建需要的所有对象存储桶和访问密钥,App Platform将使用这些存储桶来存储备份、日志、指标、跟踪结果和映像信息。我们提供的个人访问令牌信息不会被存储起来。创建好的存储桶将采用类似lke为前缀的命名方式。
  • 启用Harbor 对象存储配置完成后,即可启用构成App Platform所需的所有应用程序。下文将从源代码构建映像,因此需要启用Harbor应用程序,因为构建自助服务的功能需要使用Harbor来存储所有容器映像。
  • 在左侧菜单中单击Apps(应用程序)。
  • 将鼠标悬停在Harbor应用程序上,单击启用按钮。
  • 在左上角单击Deploy Changes(部署变更)。

随后即可安装并配置Harbor。

创建Team

接下来还需要创建一个Team。Team可以理解为平台上的一个租户,类似于一个可以充当服务的命名空间。每个Team都可以有自己的成员,成员可以访问控制台,使用所有自助服务功能。我们将通过后续文章详细介绍Team功能。现在,先来创建一个Team:

  • 在页面顶部的View(视图)中选择Platform(平台)。
  • 单击左侧菜单中的Teams。
  • 单击Create Team(创建Team)。
  • 为Team设置名称。本例中我们使用“demo”作为名称。请注意,Team名称最多可包含12个字符,随后创建的命名空间将以“team-”为名。
  • 跳过所有其他选项,然后单击Submit(提交)。
  • 单击控制台左上角的Deploy Changes(部署变更)。

创建仓库

至此我们已经创建了一个Team,随后可以切换到Team视图,然后添加成员。在Team视图中,为名同样可以在左侧菜单中看到Apps选项,这一点与Platform视图是一样的。Team视图中会显示App Platform上所有Team的共享应用,以及当前Team的专用应用。

所有成员都可以访问Team中的应用。因为我们要创建一个映像,因此首先要创建一个带有简单应用的仓库,例如使用Nginx展示HTML单页:

  • 点击Gitea应用程序。Gitea是App Platform上运行的自托管Git服务,随时可供我们使用。
  • 选择Sign In with OpenID(使用OpenID登录):

  • 选择+ New Repository(新建仓库):

  • 为仓库设置名称,例如“demo”。
  • 选择Make Repository Private(设置为私有仓库),然后选择Initialize Repository(初始化仓库)。
  • 点击Create Repository(创建仓库)。

随后可以在仓库中添加一些代码。我们将使用Nginx创建一个简单的HTML单页应用程序。

为此可以创建一个包含以下内容的demo.html文件:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Sample Deployment</title>
    <style>
      body {
        color: #ffffff;
        background-color: #0099cc;
        font-family: Arial, sans-serif;
        font-size: 14px;
      }
      h1 {
        font-size: 500%;
        font-weight: normal;
        margin-bottom: 0;
      }
      h2 {
        font-size: 200%;
        font-weight: normal;
        margin-bottom: 0;
      }
      .centered-text {
          text-align: center;
      }
    </style>
  </head>
  <body>
  <div class="centered-text">
      <h1>Welcome to the App Platform</h1>
  </div>
  </body>
</html>

并在Dockerfile文件中添加如下的内容:

FROM nginxinc/nginx-unprivileged:stable
COPY demo.html /usr/share/nginx/html/index.html
EXPOSE 8080

构建、部署并发布应用

接下来我们需要构建、部署并发布应用。针对这些工作,App Platform提供了一组自助服务表单。为名可以使用名为“Builds”的自助服务表单从源代码构建映像,使用Catalog中的快速入门Helm模板部署应用程序,并使用“Services”自助服务表单发布应用程序。

步骤1:构建映像

  • 在顶部的View中选择Team。请注意:当前我们是以平台管理员身份登录的,因此可以同时看到Platform和Team视图。
  • 单击左侧菜单中的Builds(构建)。
  • 单击Create Build(创建构建)。
  • 为构建添加名称,本例将以“demo”为名。
  • 使用(default) Docker Build模式,并添加刚才创建的Git仓库的URL。在App Platform的下一个版本中,为我们将可以从可用仓库列表中选择要使用的仓库URL。
  • 单击Submit(提交)。
  • 单击左侧菜单栏顶部的Deploy Changes(部署变更)。

App Platform将会创建并运行Tekton管道,从仓库中克隆应用程序,构建映像,并将映像推送到Harbor。映像将被推送到Harbor的私有注册表,只有Team成员才能访问。

随后我们就可以打开Apps选项下的Tekton仪表板(在Team视图下!),在这里可以了解构建的进行状态,还可以点击左侧菜单中的Builds选项,在这里查看每个项目所创建的构建。点击PipelineRun链接即可查看构建状态。

管道准备就绪后,即可在Harbor中看到映像了。进入左侧菜单的Apps选项,点击Harbor。请注意:我们是以平台管理员身份登录的,因此会看到App Platform创建的所有项目。点击所创建的团队项目,在这里可以看到一个名为team-demo/demo的资源库。

步骤2:创建用于部署映像的工作负载

  • 首先进入Builds列表,复制映像的仓库名:

  • 随后单击左侧菜单中的Catalog(目录)。
  • 在Catalog中单击Quickstart-K8s-Deployment图表。

  • 单击Values(值)选项卡。
  • 为工作负载设置名称,例如“demo”。
  • 在Chart values文件中,将image.repository设置为刚才复制到剪贴板中的注册表名称,并将image.tag设置为latest。
  • 单击底部的Submit(提交)。
  • 单击左侧菜单栏顶部的Deploy Changes(部署变更)。

随后App Platform将创建部署应用所需的Argo CD ApplicationSet。请注意,“值”和“图表”分别存储在不同的Git仓库中。

要在Argo CD中查看demo应用,请单击左侧菜单中的Workloads(工作负载),随后会看到项目创建的工作负载。点击应用程序链接即可查看工作负载的状态。

步骤3:发布应用

在这个应用程序上线前还需要做一些事情。App Platform使用了Nginx Ingress和Istio组成的一种先进的入口架构。要发布应用程序,首先需要创建两个VirtualService:一个Ingress和一个Istio。好在App Platform可以自动完成相关操作。

  • 单击菜单中的Services(服务)。
  • 单击Create Service(创建服务)。
  • 在下拉菜单中选择demo服务。

  • 在Exposure(暴露)下单击External(对外)。
  • 单击Submit(提交),然后单击Deploy Changes(部署变更)。

在服务列表中,我们可以看到刚刚创建的服务以及用于发布服务的URL。请点击这个URL。

总结

在本文中,我们配置了一个LKE集群并启用了Akamai App Platform。随后,我们配置了对象存储,启用了Harbor App,创建了一个Team和一个仓库。然后,我们使用App Platform中的自助服务表单构建、部署并发布了一个应用程序。

安装Akamai App Platform后,我们可以配置对象存储,这样所有集成在App Platform中的应用程序都将可以使用此配置。随后在为Grafana Loki、Thanos、Harbor和Tempo等应用配置对象存储时,就不再需要反复尝试。有了Akamai App Platform,这一切都能大幅简化。

凭借Team多租户功能,我们可以让多组用户独立工作,并让他们共享相同的基础架构和平台功能。用户可以使用自助服务表单在几分钟内构建、部署并发布自己的应用。

本文的内容仅仅只是冰山一角。Akamai App Platform还有更多丰富功能。欢迎关注Akamai稀土掘金机构号,我们将通过更多后续文章深入介绍Akamai App Platform,并向大家展示如何创建机密、配置网络策略、使用安全策略以及使用平台功能实现CI/CD、可观察性和安全性。

如果对此感兴趣,也欢迎通过下列方式注册并申请免费试用Akamai App Platform,亲自体验这个应用平台的强大功能和便利之处。


如果你喜欢我们的文章,欢迎关注我们↓↓↓

了解更多