TSB 中的 GitOps
本文档解释了如何在 TSB 中使用 GitOps 工作流。该文档假设已在管理平面集群和/或应用程序集群中启用了 GitOps。
TSB 中 GitOps 支持的主要思想是允许:
- 管理员团队可以直接在管理平面集群中创建 TSB 配置资源。
- 应用程序团队可以直接在应用程序集群中创建 TSB 配置资源。
应用程序团队可以像推送应用程序本身的更改一样推送应用程序配置的更改,并允许将应用程序部署资源和 TSB 配置打包在一起,例如在同一个 Helm 图中。
为了实现这一点,所有 TSB 配置对象都存在于 Kubernetes 自定义资源定义(CRD)中,以便可以轻松应用于集群。如下图所示,一旦资源应用到集群中,它们将被自动协调并转发到管理平面。
TSB Kubernetes 自定义资源
用于 TSB 配置的 Kubernetes 自定义资源与任何其他 Kubernetes 资源一样。以下示例显示了一个 Workspace
定义:
apiVersion: tsb.tetrate.io/v2
kind: Workspace
metadata:
name: bookinfo
annotations:
tsb.tetrate.io/organization: tetrate
tsb.tetrate.io/tenant: engineering
spec:
namespaceSelector:
names:
- "*/bookinfo"
它们与您可以使用 tctl 应用的资源非常相似,不同之处在于:
spec
的内容在 YAML API 参考中定义。规格与您在tctl
中使用的规格相同。- 元数据部分不具有 TSB 属性,如
organization
、tenant
等。相反,必须使用以下适当的注释提供层次结构信息:- tsb.tetrate.io/organization
- tsb.tetrate.io/tenant
- tsb.tetrate.io/workspace
- tsb.tetrate.io/trafficGroup
- tsb.tetrate.io/securityGroup
- tsb.tetrate.io/gatewayGroup
- tsb.tetrate.io/istioInternalGroup
- tsb.tetrate.io/application
- 除以下内容之外,
apiVersion
和kind
属性对于所有资源都是相同的:- API 组
api.tsb.tetrate.io/v2
改为tsb.tetrate.io/v2
。
- API 组
请参阅 TSB Kubernetes API 以下载 TSB Kubernetes CRD。
使用 Istio 直连模式资源
在使用 GitOps 与 Istio 直连模式资源时,需要为资源添加一个附加标签:
labels:
istio.io/rev: "tsb"
例如,在 Gateway 组中的 Gateway 对象如下所示:
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
name: bookinfo-gateway
namespace: bookinfo
labels:
istio.io/rev: tsb
annotations:
tsb.tetrate.io/organization: tetrate
tsb.tetrate.io/tenant: tetrate
tsb.tetrate.io/workspace: bookinfo
tsb.tetrate.io/gatewayGroup: bookinfo
spec:
selector:
app: tsb-gateway-bookinfo
servers:
- hosts:
- "bookinfo.tetrate.io"
port:
number: 80
name: http
protocol: HTTP
这是为了防止集群中正在运行的 Istio 立即处理该资源,因为它只应该由 TSB 中继读取,然后推送到管理平面。有一个验证 Webhook 将检查所有需要此标签的资源,如果缺少它,则会拒绝它们。
应用 TSB 自定义资源
TSB 自定义资源可以使用 kubectl
正常应用。例如,要应用上面示例中的工作区,您只需运行:
kubectl apply -f workspace.yaml
kubectl get workspaces -A
NAMESPACE NAME PRIVILEGED TENANT AGE
bookinfo bookinfo engineering 4m20s
如果您想要验证对象是否已在管理平面中正确创建,您也可以使用 tctl
在那里查看对象:
$ tctl get ws bookinfo
NAME DISPLAY NAME DESCRIPTION
bookinfo
与持续部署解决方案集成
TSB GitOps 功能允许您轻松将 TSB 配置工作流与 CI/CD 解决方案集成。以下页面提供了一些配置示例,您可以按照这些示例来了解它的工作原理: