在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开发工具等

相关推荐
YCyjs12 小时前
K8S群集调度二
云原生·容器·kubernetes
Hoxy.R12 小时前
K8s小白入门
云原生·容器·kubernetes
景天科技苑1 天前
【云原生开发】K8S多集群资源管理平台架构设计
云原生·容器·kubernetes·k8s·云原生开发·k8s管理系统
wclass-zhengge1 天前
K8S篇(基本介绍)
云原生·容器·kubernetes
颜淡慕潇1 天前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决
昌sit!1 天前
K8S node节点没有相应的pod镜像运行故障处理办法
云原生·容器·kubernetes
A ?Charis1 天前
Gitlab-runner running on Kubernetes - hostAliases
容器·kubernetes·gitlab
北漂IT民工_程序员_ZG1 天前
k8s集群安装(minikube)
云原生·容器·kubernetes
2301_806131362 天前
Kubernetes的基本构建块和最小可调度单元pod-0
云原生·容器·kubernetes
SilentCodeY2 天前
containerd配置私有仓库registry
容器·kubernetes·containerd·镜像·crictl