在Google Kubernetes Engine上安装Cloud Foundry Korifi

简化Google Kubernetes集群的管理,为应用程序开发人员和平台运营商提供便利,通过使用开源的Korifi安装Cloud Foundry抽象层。

托管的Kubernetes集群在软件开发人员中非常受欢迎。他们寻求托管提供商的原因有很多,其中主要原因是简化管理、提高可靠性和控制成本。在众多可用的提供商中,Google Cloud在软件开发人员中非常受欢迎,是一个很好的基础设施提供商选择。Google Kubernetes Engine是Google Cloud提供的托管Kubernetes服务,但开发人员需要更多的东西来管理他们的应用程序。

Cloud Foundry是一个强大的平台即服务(PaaS),可以帮助软件开发人员更轻松、更安全地构建、部署和管理应用程序。它可以安装在任何基于云的基础设施上,并将其转变为多租户、自助服务和可消费的资源。它的目标是帮助开发人员专注于构建应用程序,而不是管理基础设施。Cloud Foundry最初是为基于虚拟机的计算而构建的。十多年来,Cloud Foundry已成功应用于全球范围的工作负载。现在,这种相同的抽象也适用于基于Kubernetes的工作负载。Cloud Foundry Korifi是在Kubernetes本地自定义资源之上构建的Cloud Foundry API的实现。Korifi设计用于安装在任何基础设施提供商上。这在可用的托管Kubernetes提供中得到了极大简化,并且还在kind、k3s和其他Kubernetes版本上进行了本地开发的测试。使用Korifi可以部署使用任何语言或框架编写的应用程序。本教程将展示如何在Google Kubernetes Engine上安装Cloud Foundry Korifi。

先决条件

请安装以下工具以开始。

  • kubectl

  • cf CLI(版本5或更高)

  • Helm

  • gcloud CLI

安装步骤

第一步是创建一个Kubernetes集群。在使用Google Kubernetes Engine时,我们发现使用"Autopilot"创建集群会与Korifi所需的某些网络配置发生冲突。请选择"标准"模式来配置集群。你可以使用以下命令行命令创建集群:

arduino 复制代码
gcloud beta container --project "summit-labs" clusters create "korifi-demo-02" --zone "us-central1-c" --no-enable-basic-auth --cluster-version "1.25.8-gke.1000" --release-channel "regular" --machine-type "e2-standard-4" --image-type "COS_CONTAINERD" --disk-type "pd-balanced" --disk-size "100" --metadata disable-legacy-endpoints=true --scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --num-nodes "3" --logging=SYSTEM,WORKLOAD --monitoring=SYSTEM --enable-ip-alias --network "projects/summit-labs/global/networks/default" --subnetwork "projects/summit-labs/regions/us-central1/subnetworks/default" --no-enable-intra-node-visibility --default-max-pods-per-node "110" --security-posture=standard --workload-vulnerability-scanning=disabled --no-enable-master-authorized-networks --addons HorizontalPodAutoscaling,HttpLoadBalancing,GcePersistentDiskCsiDriver --enable-autoupgrade --enable-autorepair --max-surge-upgrade 1 --max-unavailable-upgrade 0 --no-enable-managed-prometheus --enable-shielded-nodes --node-locations "us-central1-c"

给出的命令是使用Google Cloud SDK(gcloud)工具的命令行指令,用于创建具有特定配置的Google Kubernetes Engine(GKE)集群。接下来,我们将安装以下依赖项:cert-Manager、kpack和Contour。Cert-Manager是一个专为Kubernetes集群设计的开源证书管理解决方案。可以使用单个kubectl apply命令安装它,路径中引用了最新版本的YAML定义。

bash 复制代码
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml

Kpack是一个与Kubernetes集成的开源项目,用于提供容器本地的构建过程。它使用云原生的Buildpacks来导出OCI兼容的容器。可以使用kubectl apply命令安装Kpack,绕过包含最新版本声明的yaml文件。

ruby 复制代码
kubectl apply -f https://github.com/pivotal/kpack/releases/download/v0.11.0/release-0.11.0.yaml

Contour是一个基于Envoy代理构建的用于Kubernetes的开源Ingress控制器。Ingress控制器是一个Kubernetes资源,用于管理集群内服务的入站网络流量。它充当网关,为运行在集群内部的服务提供外部访问。Contour专注于为Kubernetes中的Ingress提供高级功能和能力。

arduino 复制代码
kubectl apply -f https://projectcontour.io/quickstart/contour.yaml

在Kubernetes集群上安装Contour后,它将生成外部可访问的IP地址。这将允许我们访问集群。需要查询Contour服务以确定我们将映射到集群的Ingress的IP地址。以下命令将帮助您完成这个操作:

ini 复制代码
kubectl get service envoy -n projectcontour -ojsonpath='{.status.loadBalancer.ingress[0]}'

该命令的输出将是一个IP地址,例如{"ip": "34.31.52.175"},它将作为基本域名在各个地方使用,并以nip.io作为后缀。安装需要一个容器注册表来运行。在这个安装过程中,我们将使用Google Artifact注册表。为了访问这个容器注册表,需要创建和配置一个凭据密钥。创建注册表凭据的命令如下:

arduino 复制代码
​kubectl --namespace "cf" create secret docker-registry image-registry-credentials
--docker-username="<docker-hub-username>"
--docker-password "<docker-hub-access-token>"

在这个安装过程中,需要使用以下值:

arduino 复制代码
kubectl --namespace "cf" create secret docker-registry image-registry-credentials --docker-server="us-central1-docker.pkg.dev" --docker-username="_json_key" --docker-password "$(awk -v RS= '{$1=$1}1' ~/Downloads/summit-labs-8ff7123608fe.json)"

创建了密钥后,使用以下Helm chart在GKE集群上安装Korifi。

ini 复制代码
helm install korifi https://github.com/cloudfoundry/korifi/releases/download/v0.7.1/korifi-0.7.1.tgz --namespace="korifi"  && 
--set=global.generateIngressCertificates=true --set=global.rootNamespace="cf" &&
--set=global.containerRegistrySecret="image-registry-credentials" --set=adminUserName="riyengar@cloudfoundry.org" &&
--set=api.apiServer.url="api.34.31.52.175.nip.io" --set=global.defaultAppDomainName="apps.34.31.52.175.nip.io" &&
--set=global.containerRepositoryPrefix="us-central1-docker.pkg.dev/summit-labs/korifi/korifi-" && 
--set=kpackImageBuilder.builderRepository="us-central1-docker.pkg.dev/summit-labs/korifi/kpack-builder" --wait
​

注意:我们使用nip.io作为可从外部访问集群的IP地址的后缀。Nip.io是一个通配符DNS提供商。安装完成后,使用cf CLI设置API端点并登录到集群。

lua 复制代码
cf api https://api.34.31.52.175.nip.io --skip-ssl-validation
​
cf login

可以使用以下命令来测试安装是否成功。

ruby 复制代码
cf create-org active
cf target -o active
cf create-space -o active ant
cf target -o active -s ant
cf push mighty-monkey -p ~/sandbox/korifi/tests/smoke/assets/test-node-app/

从哪里开始

Cloud Foundry Korifi是一个完全开源的项目。如果您正在寻找以下方式:

  • 简化应用程序开发人员的部署体验;

  • 在使用Kubernetes集群时实现运营卓越。

那么,我觉得Korifi是工具库中的一个很好的工具。

作者:Ram Iyengar

更多技术干货请关注公众号"云原生数据库"

squids.cn ,目前可体验全网zui低价RDS,免费的迁移工具DBMotion、SQL开发工具等

相关推荐
谷隐凡二3 小时前
Kubernetes主从架构简单解析:基于Python的模拟实现
python·架构·kubernetes
陈陈CHENCHEN3 小时前
SuperMap iManager for K8s 离线环境镜像仓库 Containerd 部署
kubernetes
会飞的小蛮猪6 小时前
Ubuntu24.04 基于Containerd部署K8s1.34(私服部署)
docker·云原生·kubernetes
间彧17 小时前
Kubernetes滚动发布详解
kubernetes
间彧18 小时前
在实际生产环境中,Kubernetes声明式API如何实现蓝绿部署、金丝雀发布等高级部署策略?
kubernetes
间彧18 小时前
Kubernetes声明式API相比传统命令式API在故障恢复场景下的具体优势有哪些?
kubernetes·github
间彧18 小时前
为什么说Kubernetes的API设计是其成功的关键因素之一?
kubernetes
间彧18 小时前
Kubernetes Deployment 配置简化实战:从复杂到高效
kubernetes
可爱的小小小狼21 小时前
k8s:服务网格Service Mesh(服务网格)istio和envoy
kubernetes·istio·service_mesh
稚辉君.MCA_P8_Java2 天前
Gemini永久会员 containerd部署java项目 kubernetes集群
后端·spring cloud·云原生·容器·kubernetes