准备篇
: F! t; c3 i$ d2 y' R% j第1章 全面认识Knative 2* D9 j2 \: P; E# a9 d4 R9 _
1.1 Serverless的前世今生 23 E, E# H+ b# ?& u% c5 ], w
1.1.1 Serverless简介 2) J, k; K9 {+ m( Q' H% ^
1.1.2 Serverless的主要特征 3
7 [$ ^# F3 ~( p4 I P3 @; K @1.1.3 Serverless的优缺点 3
1 [1 e% z: j- ?, W1.1.4 Serverless的发展现状 45 K3 Z J' ]7 f
1.1.5 Serverless的使用场景 4
* D2 h6 D1 g2 ^# D8 a# Q; V1.2 什么是Knative 43 ], C2 b1 E* }$ C
1.2.1 Knative的产生背景及发展历程 5
6 A' i3 F' V# F9 R( V/ U1.2.2 Knative的架构设计 5# c% X+ Y7 R1 a( ~+ _
1.2.3 Knative的主要受众群 6
; v2 l! v% L9 Z1.2.4 Knative的商业托管服务产品 7, j+ C% z& I9 w$ J+ q
1.3 Knative开发运维需要具备的基础知识 7% J4 ` a' G- p4 H9 O, |9 ]1 ]7 M# N
1.3.1 容器 7# R7 }1 |3 `8 P: U+ ]" A6 s
1.3.2 Kubernetes 8
' D& X! ~# _' Z, ~ r' O2 S$ r1.3.3 Istio 95 A( D( g' i% j; }% F" e$ \% T$ x
1.4 本章小结 102 `2 Z# A+ Z+ J I8 P
第2章 搭建Knative运行环境 111 o7 d" [+ Z( m, l& i1 F
2.1 在Kubernetes平台上安装Knative 11
/ Y2 u# o5 z+ n$ ^# [2.1.1 Istio平台的安装 12
! S% Q9 r0 w+ c+ F2.1.2 安装Knative Serving组件 13
4 d* W2 {. m2 w1 Z: P2.1.3 安装Knative Eventing组件 14
/ ?2 m/ f: k+ S* {! E) b4 i2.1.4 安装可观察性组件 14
- z! D% D8 s, a' g! K2.2 部署HelloWorld应用 15- l7 Q, U ^- ^+ X6 x
2.2.1 Serving Hello World范例 15
# s' X) [8 b# \' l2.2.2 Eventing Hello World范例 16
& J1 j- K e) M/ d! w! B1 T2.3 本章小结 19
* v2 n' f( l0 _基础篇
5 a4 a8 V. J; M7 `第3章 Knative的服务管理组件Serving 22
- B% U: Q& W1 n' ]9 s7 o3.1 Serving的架构设计 22
; G1 A& n% m* U e2 J1 w3.2 Knative相关的Kubernetes Service 23; ^3 @- l0 @2 U, q' @
3.3 Autoscaler的工作流程 24) O0 v2 E* T+ k0 c
3.4 Queue Proxy 25
- m5 b& h3 n8 X4 X3.5 本章小结 26
7 e& `( P- p0 {第4章 Knative的事件驱动组件Eventing 27- N( m( J6 R: I0 D8 a0 m( P: h3 y `
4.1 Eventing的架构设计 27; h" @$ g: {3 c4 R1 e9 _3 ?
4.1.1 总体设计目标 28
! X8 H& P1 F6 e% ]4.1.2 Eventing的基础概念 28
3 w2 P2 R8 W& Z: i6 C3 f" h% W9 c4.1.3 事件传递方式 29# i' L) S" |2 y+ v& W1 P
4.2 关于CloudEvent 309 @3 {- {; | y2 I# e
4.2.1 CloudEvent简介 30
/ I, x/ O. I: J) B4.2.2 术语 30
, F5 O2 O9 t% t0 t" f8 N t" e# k' G4.2.3 上下文属性 32
$ x) a7 Z2 F" u4.2.4 事件数据 348 g2 s) {+ H& @) }8 m$ e' M% j
4.2.5 大小限制 346 u! s7 T5 b7 V9 J. T2 _' u
4.2.6 隐私与安全 35
2 j& |* @# o' R8 t! H" ?4.2.7 示例 35
$ @! Y: Z2 G4 Q0 |3 j& A4.3 事件源 350 y& Z7 L- X1 c& |4 Z, ^0 K2 d, \
4.3.1 核心事件源 35
/ h3 D4 v( t. R3 l7 ]2 e9 [4.3.2 社区贡献的事件源 36
$ Z" l9 {8 D0 \4.3.3 Google Cloud Source 363 v5 u1 e$ {# ?* s M
4.4 Broker/Trigger事件模型 36( z5 a/ F7 C- ^3 Z
4.4.1 工作原理 37
& l4 s: T2 K3 n! H$ f0 ]3 p4.4.2 默认代理配置 37
: s% w+ m. k$ _; F3 F. `4.4.3 Broker/Trigger模型范例 38
3 t3 E" m3 ~3 f1 H6 s% A4.5 事件注册表 395 f$ Z& Z0 d+ j3 W. v( t
4.5.1 事件发现 39
# g. n* {; q0 A; t0 Q9 b4.5.2 事件订阅 40
" q* d4 P+ U% w4.5.3 填充事件注册表 42' |! g4 L. {1 X8 _
4.6 事件流控制 43
* a' m! I# {- j5 y7 j4.6.1 Sequence 43
p3 D, u+ p. ?% u# A4.6.2 Parallel 44! Q7 {( I4 G8 b1 ]( Y' d# b \
4.7 事件通道 45- k. F. g4 h/ _- g/ z
4.7.1 当前可用的通道 45
& f$ c! R) E9 {! R- v- m4.7.2 默认通道设置 45
6 t" v6 J/ g1 m3 X/ g! a4.8 本章小结 46
8 M7 v# O I1 v第5章 基于Tekton的CI/CD平台 47( s) `% E7 D. D2 P9 E" r: _
5.1 Tekton概述 47
; j* _7 R. l5 a/ O, T* u5.1.1 Tekton的优势 47, H: w7 W" W/ E
5.1.2 Tekton的组件构成 48* l3 p& }! S1 y9 _+ v
5.1.3 Tekton的资源对象 48
; Q; n: c) `! u. M0 Q5.2 Tekton的概念模型 49
' v2 b# {. {1 T M: E5.2.1 Step、Task和Pipeline 49
. ^. {3 ?0 x& s3 T0 ?: `5.2.2 输入与输出资源 503 S% S% o' |* U/ O v
5.2.3 TaskRun与PipelineRun 51
+ E3 i; X9 g v3 \: v5 ?5.2.4 Tekton的运作方式 51
E8 d8 Z4 w; _) ~5 \5.3 Tekton Pipeline资源对象详解 52
) p( l5 J* O, z) i- w2 q5.3.1 Task 52" h9 f* A+ |9 A9 P) b
5.3.2 TaskRun 66
8 d# |5 Q. j+ W, K) \& B X2 J5.3.3 Pipeline 74
* {: s, A! l# @3 g" v |5.3.4 PipelineRun 97) i" u E, z+ @: G* V7 A
5.3.5 条件资源 111! o- _/ e2 [ b, a+ c) p; A) g
5.3.6 变量替换 113# F* a! O% ~0 U. a" \4 {
5.3.7 基于Git与Docker Registry的身份验证 117
! ]3 F( v' |9 Z4 @9 f9 Y5.3.8 基于Kubectl向Kubernetes集群持续部署 1245 ~ e [+ D& G* F
5.4 Trigger 126
7 ]. R4 e" h8 p. Y$ X8 P' `$ F5.4.1 TriggerTemplate 126- ?9 n! S D/ C# c% Z" u' z8 O7 n/ L
5.4.2 TriggerBinding 128& |, r! k% S9 E% \2 E9 E5 j, N4 ?2 T
5.4.3 EventListener 131+ R" f! e2 t/ p/ z5 U- R# A M
5.4.4 将EventListener暴露给外部 138
3 d: @ A3 w; v% _' [5.4.5 ClusterTriggerBinding 1381 a4 d8 Q5 {7 I0 ?
5.4.6 CEL表达式扩展 139! h. ]! x7 g0 t6 o
5.5 Dashborad简介 140. D. v( M; A* [) r& h1 f. O
5.5.1 Dashboard主要支持功能 140& @; j# f m8 I5 ~! s
5.5.2 Dashboard常用功能示例 141
1 N5 s! X- N: Q, `5.6 安装Tekton Pipeline及相关组件 143$ b$ G, o% U1 o5 y( |, w3 `
5.6.1 Tekton Pipeline安装 143
, ]' D1 }5 Z0 D. V' B! F3 U) X5.6.2 Tekton Dashborad安装 145, m6 c' }7 K& @
5.6.3 Tekton Trigger安装 145
8 ]# s. S$ L( C( ]+ P" A0 c; _5.7 应用CI/CD配置示例 146% M- D7 T; u& f. n0 T$ U! d4 R
5.7.1 Java语言配置示例 146
1 `1 e' r7 `' n- B# ~5.7.2 PHP语言配置示例 151! f" X: I p3 h
5.8 本章小结 155
+ ?: H; j; R, j" D2 |4 }; Q实战篇 Y1 ^9 A/ X0 o, H' S
第6章 基于Knative的云原生应用的设计实现 158
* t: `; D( N' s( F* W6.1 云原生应用的设计原则 158
9 I; l# @& F& ?6.2 使用Knative的服务管理组件管理应用 160
' s; l5 V* d1 T' s6.2.1 部署一个Knative Service 161
% v# j6 `3 x3 f" k( A Q1 R$ n6.2.2 更新Knative Service Configuration 1642 \1 i; M" |; D7 w# o- C: p
6.2.3 流量分发到不同版本 166- B+ ]% f8 v: P$ b% N# b- h, ~& l% [
6.2.4 蓝绿部署与灰度发布 167
- N$ n/ p$ r0 |) M8 O6.2.5 Knative Service的弹性伸缩配置 1700 N3 h* |8 q0 t O0 Y
6.3 使用事件驱动组件解耦服务依赖 172, i5 a! u, a7 j$ P/ ^3 C
6.3.1 部署一个Knative事件驱动应用 172
# Q% k% @7 B7 {8 z4 o, c6.3.2 使用通道与订阅方式传递事件 175" J9 B! w5 Q5 S+ d& w
6.3.3 与Apache Kafka集成 177
) Q6 t, `8 D y1 H; h U6.3.4 ContainerSource事件源 180
7 h/ [( J& w; m0 @4 t# Y; [% y6.3.5 PingSource事件源 182
% E+ H, Z! i" U2 e6.3.6 Parallel 1835 l: k" z @0 D L/ o" L
6.3.7 Sequence 1873 l. \) G4 D6 ] m
6.3.8 SinkBinding 190
8 h- l$ J9 c5 o! {( ^1 E6.3.9 GitHub事件源 191
4 [+ Y; m4 P" }' |$ a& @, J6.4 本章小结 1941 K6 j2 Q# d2 F! n# N7 }
扩展篇 java8.com
. P$ x8 }! R8 j! `/ v/ F5 X2 g第7章 Serving组件的扩展配置 196) u( q3 \4 `* }& G/ w$ p
7.1 自动扩缩容的配置 196
& i9 h. u2 G8 R: i, c1 `$ P7.1.1 全局或修订版范围设置 196
/ }; k# H" }$ }' R8 F7.1.2 Class 197
% \( P' V! G/ Z/ e( p; u9 D& ^7.1.3 度量指标 198
- ]7 Y- F# c1 G7.1.4 目标值 198
& h8 `- v6 q7 r5 V( `$ n1 ?/ ^7.1.5 缩放边界 2027 L. o' u# X7 j1 `; ~* ?$ L& L' E
7.1.6 KPA特性设置 203
9 c' H! v( X: o: z. n7.2 路由管理 208
$ X* {5 b8 D# U1 g# V. g1 E$ W7.2.1 定制Knative服务的主域名 208( C3 h* n( o# v