本周早些时候,我们推出了Akamai应用平台(Akamai App Platform),这是Linode Kubernetes Engine(LKE)的一键式扩展,可在使用Kubernetes时轻松添加以开发人员和运营为中心的工具、自动化和自助服务,以简化您的应用生命周期。Akamai应用平台将云原生计算基金会(CNCF)中的许多技术连接起来,以提供直接价值。
在本篇博文中,我们将引导您完成使用Akamai应用平台配置LKE集群的步骤,然后构建、部署并公开发布应用程序。
使用Akamai应用平台配置Kubernetes集群
Akamai应用平台现已推出测试版。因此,在我们开始之前,首先请确保您登录您的账户,或注册一个Akamai云计算账户。登录后,在测试版页面注册测试计划。
现在从左侧导航菜单中选择 Kubernetes,然后选择创建群集。创建 Kubernetes 集群页面就会出现。在页面顶部,你需要选择以下选项:
- 在群集标签字段中,为您的群集提供一个名称。该名称在您账户中的所有群集之间必须是唯一的。该名称是您在 Cloud Manager 面板中识别群集的方式。
- 从下拉菜单中选择您所在的地区。
- 从下拉菜单中选择要部署到群集的 Kubernetes 版本 。
- 在 "用于 LKE 的应用程序平台 "部分,选择 "是,启用用于 LKE 的应用程序平台"。
- 在 "添加节点池 "部分,选择构成您的 LKE 集群的 Linode 工作节点的硬件资源。在测试阶段,LKE 应用程序平台要求节点池至少有 3 个工作节点,每个节点至少有 16 GB 内存。目前不支持Shared CPU 。
- 选择添加,将节点池包括在配置中。
- 将节点池添加到配置中后,它会列在云管理器右侧的群集摘要中,详细说明群集的硬件资源和每月成本。
- 对群集配置满意后,选择屏幕右侧的创建群集。群集的详细信息页面就会出现,节点池也会列在该页面上。
现在将创建 LKE 集群,准备就绪后将安装 App Platform。安装用于 LKE 的 App Platform 大约需要 10 到 15 分钟。安装完成后,门户端点的 URL 将出现在群集详细信息页面的 "适用于 LKE 的 App Platform "部分。安装进度将每 60 秒检查一次。如果安装仍在进行中,则不会显示门户端点的 URL。取而代之的是 "安装中 "消息。
当 LKE 集群和应用程序平台的安装准备就绪后,请单击所提供的门户端点 URL:
现在您将看到以下登录页面:
要登录,首先需要获取初始凭据。在群集的详细信息页面,导航到省略号选项菜单,选择下载 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
现在使用获得的凭据登录控制台并更改初始密码。
为应用程序平台配置Object Storage
登录到控制台后,您需要做的第一件事就是配置Object Storage 。系统会显示一条信息,询问您 App Platform 是否要为您配置对象存储。
这不是必须的,但强烈建议使用,因为这将防止在为集成应用程序使用存储卷时出现磁盘空间不足的错误。使用Object Storage 还能为平台使用的所有数据库和所有 Git 仓库创建备份。
如果不想让应用平台为您配置对象存储,请选择立即跳过。请注意,在这种情况下,创建数据库备份等某些功能将不可用。您可以随时在维护部分启动向导。
- 点击
Yes
. - 按照说明创建个人访问令牌,并确保在Object Storage 类别中选择 "读/写"。复制 API 令牌。
- 将访问令牌粘贴到向导中,然后选择要创建存储桶的区域:
- 然后点击
Submit
.
现在将在您的账户中创建所有需要的Object Storage 桶和访问密钥,应用程序平台将配置为使用桶来存储备份、日志、指标、跟踪和图像。提供的个人访问令牌不会被存储。创建的数据桶将具有 lke<cluster-id>
前缀。
启用港湾
对象存储配置完成后,我们就可以启用所需的应用程序来构建应用程序平台了。在这篇文章中,我们要从源代码构建映像,因此需要启用 Harbor 应用程序,因为构建自助服务功能使用 Harbor 来存储所有容器映像。
- 在左侧菜单中点击
Apps
. - 将鼠标悬停在 Harbor 应用程序上,然后点击启用按钮。
- 在左上角点击
Deploy Changes
.
现在,Harbor 将被安装和配置以供使用。
创建团队
接下来,您需要创建一个团队。团队是平台上的一个租户。它就像一个作为服务的命名空间。每个团队都可以有自己的团队成员,成员可以访问控制台,使用所有自助服务功能。我们将在后面的文章中详细介绍团队。让我们创建一个团队:
- 确保选择
platform
在view
在顶部栏中。 - 点击
Teams
在左侧菜单中。 - 点击
Create Team
. - 填写团队名称。在示例中,我们使用的是团队名称 demo。请注意,团队名称最多有 12 个字符,创建的命名空间名称为
team-<team-name>
. - 跳过所有其他选项,点击
Submit
. - 点击
Deploy Changes
在控制台左上方。
创建存储库
现在我们已经创建了一个团队,可以切换到 team
视图,然后选择我们新创建的团队。在团队视图中,您还会看到左侧菜单中的应用程序部分,就像在平台视图中一样。团队视图中的应用程序包括应用程序平台上所有团队共享的应用程序和团队专用的应用程序。
所有团队成员都可以访问团队中的应用程序。因为我们要创建一个图片,所以我们首先要创建一个带有简单应用程序的资源库,使用Nginx 为单个 HTML 页面提供服务:
- 点击 Gitea 应用程序。Gitea 是在应用平台上运行的自托管 Git 服务,可以随时使用。
- 选择 "使用 OpenID 登录":
- 选择 "+ 新存储库":
- 为版本库添加名称。让我们将版本库命名为
demo
- 选择
Make Repository Private
并选择Initialize 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 提供了一组自助服务表单。您可以使用 "构建 "自助服务表单从源代码构建映像,使用目录中的一个快速入门 Helm 模板部署应用程序,并使用 "服务 "自助服务表单公开发布应用程序。
步骤 1:构建图像
- 确保选择
team
在view
在顶部栏中。请记住,您是以平台管理员身份登录的,可以同时看到平台和团队视图。 - 点击
Builds
在左侧菜单中。 - 点击
Create Build
. - 为 "构建 "添加名称。让我们将此构建命名为
demo
. - 使用(默认)Docker 构建模式,并添加我们刚刚创建的 Git 仓库的 URL。在 App Platform 的下一个版本中,您将可以根据可用的版本库选择 URL。
- 点击
Submit
. - 点击
Deploy Changes
左侧菜单栏顶部的
应用程序平台现在将创建并运行 Tekton 管道,从资源库克隆应用程序、构建镜像并将镜像推送到 Harbor。映像将被推送到 Harbor 中的私有注册表,只有团队成员才能访问该注册表。
现在,您可以打开应用程序部分的 Tekton 控制面板(在团队视图中!),查看构建状态。还可以点击左侧菜单中的 "构建"。在那里,你会看到项目创建的构建。点击 PipelineRun 链接,查看构建状态。
当管道准备就绪时,你可以在 Harbor 中看到图像。Go ,进入左侧菜单的应用程序部分,点击 Harbor。记住,你是以平台管理员身份登录的,你会看到应用程序平台创建的所有项目。点击我们创建的团队项目。在这里,你会看到一个名为 team-demo/demo
.
第 2 步:创建工作负载以部署映像
- 首先进入 "构建 "列表,复制镜像的存储库名称:
- 现在点击
Catalog
在左侧菜单中。 - 在目录中,点击
Quickstart-K8s-Deployment
图表 - 单击 "值 "选项卡。
- 为工作负载添加名称。让我们使用这个名称
demo
. - 在
Chart values fil
e 设置image.repository
到我们添加到剪贴板的注册表名称,并使用latest
为image.tag
. - 点击
Submit
在图表值的底部。 - 点击
Deploy Changes
在左侧菜单栏顶部
现在,App Platform 将创建 Argo CD ApplicationSet 以部署应用程序。请注意,数值和图表分别存储在不同的 Git 仓库中。
要查看 Argo CD 中的演示应用程序,请单击左侧菜单中的工作负载。在那里你会看到项目创建的工作负载。点击应用程序链接,查看工作负载的状态。
步骤 3:公开发布应用程序
要看到我们的应用程序上线,还需要做一些事情。应用平台使用Nginx Ingress 和 Istio,利用先进的入口架构。要公开应用程序,我们需要创建一个 Ingress 和一个 Istio VirtualService。幸运的是,App Platform 可以自动完成这一切。
- 现在点击
Services
菜单中的 - 点击
Create Service
. - 在下拉列表中,选择
demo
服务 - 根据
Exposure
单击External
. - 点击
Submit
然后Deploy Changes
.
在服务列表中,你会看到我们刚刚创建的服务和用于发布服务的 URL。点击 URL。
回顾
在这篇文章中,我们配置了一个 LKE 集群并启用了应用程序平台。然后,我们配置了对象存储,启用了 Harbor App,创建了一个团队并创建了一个代码库。然后,我们使用应用程序平台中的自助服务表单来构建、部署和公开一个应用程序。
安装 App Platform 后,您可以配置对象存储,这样所有集成在 App Platform 中的应用程序都可以使用此配置。无需再为Grafana Loki、Thanos、Harbor 和 Tempo 等应用程序配置对象存储而反复试验。有了Akamai上的App Platform,这一切都将为您完成。
利用 Teams 的多租户功能,您可以让多组用户独立工作,并让他们共享相同的基础架构和平台功能。用户可以使用自助服务表单在几分钟内构建、部署和公开他们的应用程序。
需要注意的是,我们这里介绍的只是冰山一角。App Platform 还能提供更多。我们很快将发布更多文章,深入介绍 App Platform,并向您展示如何创建秘密、配置网络策略、使用安全策略,以及使用平台功能实现 CI/CD、可观察性和安全性。
注释