Kubectl创建比萨

2020-12-12 03:26:53

我最近创建了一系列有关Kubernetes自定义资源和控制器开发的文章和视频(请参见gum.co/kubernetes-crds),但是我错过了那吸引人的示例来展示自定义资源的全部含义。

首先,使用信用卡信息创建一个秘密(是的,请相信我),以便在付款时使用:

种类:PizzaCustomer apiVersion:ops.tips/v1alpha1元数据:名称:您的规格:firstName:巴拉克姓氏:奥巴马电子邮件:[email protected]电话:" 31241323" streetNumber:" 20" streetName:国王街城市:多伦多州:" ON"邮编:m5lz8j

创建了PizzaCustomer对象后,我们可以看到最近的可用商店:

$ kubectl get pizzastore store-123 -o yamlkind:PizzaStore元数据:名称:store-123spec:地址:| 51 Niagara St Toronto,ON M5V1C3 id:" 10391"电话:416-364-3939产品:-说明:独特的柠檬味(柠檬味)风味,清澈,干净,酥脆,不含咖啡因。 id:2LSPRITE名称:雪碧大小:2升

种类:PizzaOrder apiVersion:ops.tips/v1元数据:名称:ma-pizza规范:yeahSurePlaceThisOrder:true#否则,它将只计算价格storeRef:{name:store-123} customerRef:{name:you}付款:creditCardSecretRef:{名称:cc}项目:-代码:10屏幕数量:1

要跟踪披萨的状况,请查看订单状态:

可以看到,通过Argo和Tekton等项目,CI / CD成为Kubernetes的一部分,您可以在其中声明根据Kubernetes资源的流水线/工作流程,现在,我们可以在成功发布之后为团队提供精美的披萨。

apiVersion:argoproj.io/v1alpha1kind:Workflowmetadata:generateName:release-spec:入口点:pi-tmpl模板:-名称:主要步骤:--名称:单元测试模板:测试-名称:集成测试模板:测试参数:参数:-名称:类型值:集成--名称:发布模板:发布--名称:获取披萨模板:订单披萨-名称:订单披萨资源:操作:创建清单:|种类:PizzaOrder api版本:ops.tips/v1元数据:名称:比萨饼规格:yeahSurePlaceThisOrder:true storeRef:{name:store-123} customerRef:{name:you}付款方式:creditCardSecretRef:{name:cc}项目:-编号:10屏幕数量:2

我对你一无所知,但这听起来对我来说很正确\ _(ツ)_ /¯

作为合法的Kubernetes自定义资源,您可以像安装Tekton,kpack或类似的方式来安装它:将包含CustomResourceDefinition对象的清单提交给Kubernetes,将控制器具体化为Pod中的容器的Deployment,然后... '坐!

git clone https://github.com/cirocosta/pizza-controllercd pizza-controllerkapp deploy -a pizza-controller -f ./config/release.yaml#或..普通的旧kubectl#kubectl apply -f ./config/release .yaml

我认为这是通过自定义资源扩展kubernetes背后的概念的一个很酷的例子,它可能带给您一些思路,可以将Kubernetes对象的声明性带给控制器,以及将级别触发的方法带给控制器,从而使Kubernetes能够请求外部资源。

例如,像crossplane这样的项目可以为您带来很多好处,除了订购(而不是订购)比萨饼外,还可以订购…数据库(或类似的东西)。

对非加拿大人更加灵活(目前已在加拿大进行硬编码,但可以轻松更改) 目前,我得到了我的比萨饼。 前往https://github.com/cirocosta/pizza-controller