带你读《云原生应用开发 Operator原理与实践》第一章引言1.2Operator 介绍(三)

简介: 带你读《云原生应用开发 Operator原理与实践》第一章引言1.2Operator 介绍

1.2.2       Operator 应用案例


前面介绍了基于 CR 和相应的自定义资源控制器,我们可以自定义扩展Kubernetes生的模型元素,这样的自定义模型可以加入到原生KubernetesAPI管理;同时Operator开发者可以像使用原生 API 进行应用管理一样,通过声明式的方式定义一组业务应用的期状态,并且根据业务应用的自身特点编写相应控制器逻辑,以此完成对应用运行时刻生命周期的管理,并持续维护与期望状态的一致性。

在本节我们将介绍如何使用 Kubebuilder工具,快速构建一个 KubernetesOperator,通过创建 CRD完成一个简单的 Web应用部署,通过编写控制器相关业务逻辑,完成对CRD的自动化管理。

1. Kubebuilder介绍

 

Kubebuilder是一个用 Go语言构建 KubernetesAPI控制器和CRD的脚手架工具,通过使用 Kubebuilder,用户可以遵循一套简单的编程框架,编写 Operator 应用实例。

(1)依赖条件

goversionv1.13+。

dockerversion17.03+。

kubectlversionv1.11.3+。

AccesstoaKubernetesv1.11.3+ cluster。

(2)安装 Kubebuilder

在安装 Kubebuilder前,首先需要安装 Go 语言环境,针对不同的操作系统,安装方法可参考 Go语言官方文档。

安装完成后,我们通过如下命令验证是否安装完成:

$goversion

查看命令是否正确回显当前安装的 Go语言版本,输入如下命令查看Go 语言环境变量:

$goenv

我们可以看到 GOOSGOARCH等常用环境变量配置  ,然后安装Kubebuilder,具shell命令见代码清单 1-2。

os=$(goenvGOOS)arch=$(goenvGOARCH)

 

#downloadkubebuilderandextractittotmp

curl-Lhttps://go.kubebuilder.io/dl/2.3.1/${os}/${arch}|tar-xz-C/tmp/

 

#movetoalong-termlocationandputitonyourpath

#(you'llneedtosettheKUBEBUILDER_ASSETSenvvarifyouputitsomewhereelse)sudomv/tmp/kubebuilder_2.3.1_${os}_${arch}/usr/local/kubebuilder

exportPATH=$PATH:/usr/local/kubebuilder/bin

 

执行完成后,输入如下命令检查是否正确:

$kubebuilderversion

至此 Kubebuilder已安装完成,使用 kubebuilder-h可以查看帮助文档。

 

2. Welcome案例介绍

 

Welcome案例主要实现使用 OperatorCRD 部署一套完整的应用环境,可以实现根据自定义类型创建资源,通过创建一个 Welcome 类型的资源,后台自动创建 DeploymentService,通过 Web页面访问 Service 呈现应用部署,通过自定义控制器方式进行控制管理,整体流程如图 1-10所示。

 

image.png

 

1—10 案例应用交互流程

 

本案例中,我们需要创建Welcome自定义资源及对应的 Controllers,最终我们可以通过类似代码清单 1-3Yaml文件部署简单的 Web应用。

apiVersion:webapp.demo.welcome.domain/v1kind:Welcome

metadata:

name:welcome-samplespec:

name:myfriends

 

(1)Web应用介绍

本案例中,我们使用 Go语言 http模块创建了一个 Web服务,用户访问页面后会自动加载 NAMEPORT环境变量并渲染 index.html静态文件,代码逻辑见代码清1-4

funcmain(){

name:=os.Getenv("NAME")

hello:=fmt.Sprintf("Hello%s",name)

http.Handle("/hello/",http.StripPrefix("/hello/",http.FileServer(http.

Dir("static"))))

f,err:=os.OpenFile("./static/index.html",os.O_APPEND|os.O_

WRONLY|os.O_CREATE,0600)

iferr!=nil{

panic(err)

}

deferf.Close()

if_,err=f.WriteString(hello);err!=nil{panic(err)

}

port:=os.Getenv("PORT")ifport==""{

port="8080"

}

}

 

其中,NAME环境变量通过我们在 Welcome中定义的name 字段获取,我们在下面的控制器编写中会详细介绍获取字段的详细方法。我们将index.html放在Static文件夹下, 将工程文件打包为 Docker镜像,Dockerfile见代码清单 1-5。


FROMgolang:1.12asbuilder

#Copylocalcodetothecontainerimage.WORKDIR/

COPY..

COPYstatic

#Buildthecommandinsidethecontainer.

RUNCGO_ENABLED=0GOOS=linuxgobuild-v-omain

#UseaDockermulti-stagebuildtocreatealeanproductionimage.

FROMalpine

RUNapkadd--no-cacheca-certificates

#Copythebinarytotheproductionimagefromthebuilderstage.COPY--from=builder/main/usr/local/main

COPY--from=builderstatic/static

#Runthewebserviceoncontainerstartup.CMD["/usr/local/main"]

 

本案例中 Docker镜像文件已上传至dockerhub,可以通过 dockerpullsdfcdwefe/welcomedemo:v1进行下载。




相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
Cloud Native 安全 持续交付
构建未来:云原生架构的演进与实践
【2月更文挑战第30天】 随着数字化转型的深入,企业对于信息技术的需求日益复杂化和动态化。传统的IT架构已难以满足快速迭代、灵活扩展及成本效率的双重要求。云原生技术作为解决这一矛盾的关键途径,通过容器化、微服务、持续集成/持续部署(CI/CD)等手段,实现了应用的快速开发、部署及运维。本文将探讨云原生架构的最新发展,分析其如何助力企业构建更加灵活、高效的业务系统,并结合实际案例,展示云原生转型过程中的最佳实践和面临的挑战。
|
12天前
|
机器学习/深度学习 Cloud Native 持续交付
构建高效机器学习模型的策略与实践构建未来:云原生技术在企业数字化转型中的关键作用
【4月更文挑战第30天】 在机器学习领域,构建一个高效的模型不仅需要深厚的理论基础,还需结合先进的技术手段和策略。本文将探讨一系列提升模型性能的方法,包括数据预处理、特征选择、模型调参以及集成学习等。通过具体案例分析,揭示这些方法如何在实际问题中得以应用,并讨论它们对模型性能的影响。文中还将涉及最新的研究进展,为读者提供前瞻性的指导意义。 【4月更文挑战第30天】随着企业加速其数字化转型之旅,云原生技术已成为推动创新和灵活性的核心。本文深入探讨了云原生架构的原则,包括微服务、容器化、持续集成/持续部署(CI/CD)、以及声明式APIs。分析了这些技术如何共同促进可伸缩性、敏捷性和容错性,同时
|
12天前
|
Kubernetes 监控 Cloud Native
构建未来:云原生架构的演进与实践
【4月更文挑战第30天】 随着数字化转型的不断深入,企业对IT基础设施的要求日益提高。云原生技术以其独特的弹性、可扩展性和敏捷性成为推动现代应用开发的关键动力。本文将探讨云原生架构的核心组件、实施策略以及面临的挑战,旨在为读者提供一个关于如何有效构建和部署云原生应用的全面视角。
|
13天前
|
Cloud Native Devops 持续交付
构建未来应用:云原生架构在现代企业中的实践与挑战
【4月更文挑战第29天】 随着数字化转型的加速,企业正迅速转向云计算以支撑其业务敏捷性和创新。云原生技术,作为推动这一转型的关键因素,正在重新定义软件开发和运维模式。本文将深入探讨云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及DevOps文化,并分析这些技术如何帮助企业实现弹性、可扩展和高效的应用部署。同时,我们将讨论在采纳云原生实践中所面临的挑战,包括安全性、治理和人才缺口等问题。
|
13天前
|
运维 Cloud Native Devops
构建未来应用:云原生架构的演进与实践
【4月更文挑战第29天】在数字化转型的浪潮中,企业亟需灵活、高效的技术支撑来应对市场的快速变化。云原生架构以其独特的设计理念和技术栈,成为推动这一变革的关键力量。本文深入探讨了云原生的核心概念、关键技术和实施策略,旨在为企业提供一个清晰的云原生转型蓝图,助力其构建更加动态、可扩展的应用系统。
|
13天前
|
Kubernetes Cloud Native 持续交付
构建未来:云原生架构在现代企业中的应用与实践
【4月更文挑战第29天】 随着数字化转型的浪潮席卷各行各业,企业对于信息技术基础设施的要求日益提高。传统的IT架构已难以满足快速迭代、灵活扩展和持续创新的需求。本文聚焦于云原生架构,一种为云计算环境量身打造的设计理念和技术集合,旨在帮助企业构建更加灵活、可靠和高效的系统。通过对云原生核心组件的解析、实施策略的探讨以及成功案例的分析,我们揭示了云原生架构如何助力企业在竞争激烈的市场中保持领先地位。
|
18天前
|
人工智能 边缘计算 Cloud Native
云原生架构的未来展望与实践挑战
【4月更文挑战第24天】在数字化转型的浪潮中,云原生架构以其高度灵活、可扩展的特点成为企业技术战略的核心。本文深入探讨了云原生技术的最新发展趋势,分析了在实际部署和运维过程中面临的挑战,并提出了相应的解决方案。通过实例分析,本文旨在为企业实施云原生架构提供参考和指导。
|
18天前
|
Cloud Native Devops 持续交付
构建未来:云原生技术在现代IT架构中的演进与实践
【4月更文挑战第24天】 随着企业数字化转型的深入,云原生技术正成为推动创新和敏捷性的关键技术。本文聚焦于云原生技术的发展历程及其在现代IT架构中的应用,探讨了如何利用容器化、微服务、DevOps和持续集成/持续部署(CI/CD)等核心概念来优化资源利用率,提高系统弹性,并加速产品上市时间。通过分析多个行业案例,文章揭示了云原生实践对企业竞争力的显著影响,并提出了面向未来的IT架构战略建议。
|
29天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
23 4
|
1月前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在现代业务中的应用与实践
【4月更文挑战第7天】 随着数字化转型的浪潮不断推进,企业对于敏捷性、可扩展性和成本效益的需求日益增长。本文将探讨云原生架构如何应对这些挑战,提供一种创新的解决方案。我们将深入分析云原生的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)和DevOps文化,以及它们如何共同作用以支持业务的快速迭代和弹性运营。通过具体案例研究,本文揭示了采用云原生方法可以带来的商业价值和技术优势,并提供了实施云原生策略的实用建议。
24 1

热门文章

最新文章