在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所需的某些网络配置发生冲突。请选择“标准”模式来配置集群。你可以使用以下命令行命令创建集群:

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定义。

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文件。

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提供高级功能和能力。

kubectl apply -f https://projectcontour.io/quickstart/contour.yaml

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

kubectl get service envoy -n projectcontour -ojsonpath='{.status.loadBalancer.ingress[0]}'

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

kubectl --namespace "cf" create secret docker-registry image-registry-credentials
--docker-username="<docker-hub-username>"
--docker-password "<docker-hub-access-token>"

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

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。

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端点并登录到集群。

cf api https://api.34.31.52.175.nip.io --skip-ssl-validation

cf login

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

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

更多技术干货尽在wx“云原生数据库

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容