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

相关推荐
sbjdhjd10 分钟前
01| 裸机部署 K8S:从零搭建生产可用集群
运维·经验分享·云原生·kubernetes·开源·kubelet·kubeless
珂玥c9 小时前
k8s集群网络插件caclico切换为flannel
云原生·容器·kubernetes
Zhu7589 小时前
【问题处理】minIO(AIStor)在k8s部署后,API访问失败的问题,TLS
云原生·容器·kubernetes
Altruiste11 小时前
minikube 搭clickhouse 集群
clickhouse·kubernetes
古城小栈13 小时前
通过 Kind 快速构建 k8s 集群
云原生·kubernetes·kind
珂玥c15 小时前
kubeadm方式部署 k8s 1.21
云原生·容器·kubernetes
小义_15 小时前
【Kubernetes】(十九)监控与升级
云原生·容器·kubernetes
炸炸鱼.17 小时前
Kubernetes Pod 深度理解:从入门到实战
云原生·容器·kubernetes·pod
云游牧者17 小时前
K8S网络策略全解-NetworkPolicy与GlobalNetworkPolicy实战
网络·容器·kubernetes·cni
宇明一不急18 小时前
k8s 常用的正则表达式
云原生·容器·kubernetes