Crossplane Provider for Google Cloud Platform 使用教程
provider-gcpCrossplane GCP provider项目地址:https://gitcode.com/gh_mirrors/pr/provider-gcp
1. 项目的目录结构及介绍
.
├── apis
│ ├── v1alpha1
│ │ ├── cloudsqlinstance_types.go
│ │ ├── cloudsqlinstance_types_test.go
│ │ ├── ...
│ ├── v1beta1
│ │ ├── ...
│ ├── ...
├── cmd
│ ├── provider
│ │ ├── main.go
├── config
│ ├── crds
│ │ ├── ...
│ ├── rbac
│ │ ├── ...
├── examples
│ ├── ...
├── pkg
│ ├── ...
├── scripts
│ ├── ...
├── go.mod
├── go.sum
├── Makefile
├── README.md
└── ...
目录结构介绍
- apis: 包含项目的API定义文件,按照不同的API版本进行分类。
- cmd: 包含项目的启动文件,通常是
main.go
。 - config: 包含项目的配置文件,如CRD(Custom Resource Definitions)和RBAC(Role-Based Access Control)配置。
- examples: 包含项目的示例代码,帮助用户理解如何使用该项目。
- pkg: 包含项目的核心代码,通常是业务逻辑的实现。
- scripts: 包含项目的脚本文件,如构建、测试等脚本。
- go.mod 和 go.sum: Go模块依赖管理文件。
- Makefile: 项目的构建和测试脚本。
- README.md: 项目的介绍文档。
2. 项目的启动文件介绍
cmd/provider/main.go
package main
import (
"os"
"github.com/crossplane-contrib/provider-gcp/pkg/controller"
"sigs.k8s.io/controller-runtime/pkg/client/config"
"sigs.k8s.io/controller-runtime/pkg/manager"
"sigs.k8s.io/controller-runtime/pkg/manager/signals"
)
func main() {
cfg, err := config.GetConfig()
if err != nil {
os.Exit(1)
}
mgr, err := manager.New(cfg, manager.Options{})
if err != nil {
os.Exit(1)
}
if err := controller.Setup(mgr); err != nil {
os.Exit(1)
}
if err := mgr.Start(signals.SetupSignalHandler()); err != nil {
os.Exit(1)
}
}
启动文件介绍
- main.go: 这是项目的入口文件,负责初始化Kubernetes客户端配置、创建管理器(Manager)并启动控制器(Controller)。
- config.GetConfig(): 获取Kubernetes集群的配置。
- manager.New(): 创建一个新的管理器实例。
- controller.Setup(): 设置并启动控制器。
- mgr.Start(): 启动管理器,监听信号并处理事件。
3. 项目的配置文件介绍
config/crds/
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: cloudsqlinstances.database.gcp.crossplane.io
spec:
group: database.gcp.crossplane.io
versions:
- name: v1alpha1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
forProvider:
type: object
properties:
region:
type: string
settings:
type: object
properties:
tier:
type: string
...
配置文件介绍
- CustomResourceDefinition (CRD): 定义了自定义资源(Custom Resource)的结构,允许用户在Kubernetes中创建和管理Google Cloud Platform的资源。
- spec: 定义了资源的规格,包括资源的属性和类型。
- forProvider: 定义了资源在Google Cloud Platform中的配置,如区域(region)、实例类型(tier)等。
通过以上配置文件,用户可以在Kubernetes中创建和管理Google Cloud Platform的资源,如Cloud SQL实例。
provider-gcpCrossplane GCP provider项目地址:https://gitcode.com/gh_mirrors/pr/provider-gcp