云资源自动化 for Crossplane 是一款基于当前业界流行的多云管理开源工具 Crossplane 开发的腾讯云产品。作为构建于 Kubernetes 之上的扩展,通过与腾讯云的云资源服务相结合,用户能够以 Kubernetes 方式使用基础设施即代码原则管理云上基础设施,轻松实施跨云平台的 DevOps 和多云部署等场景。
云资源自动化 for Crossplane 已经提供超过260个 CRD,覆盖计算、存储、网络、容器服务、负载均衡、中间件、数据库等腾讯云产品。借助 Crossplane,您可以快速管理业务所依赖的腾讯云基础设施。
Crossplane 使用 Kubernetes 风格的声明式 API,允许开发人员和运维人员使用熟悉的工具和工作流程来管理腾讯云基础设施,可以无缝接入当前业务已有的 DevOps 流程,不会对业务造成迁移负担。
Crossplane 作为 CNCF 沙箱项目,它同时遵循了 CNCF 的最佳实践和标准。使用者可以结合 Helm 来部署腾讯云资源;可以结合 OPA 设置准入规则,实施基于策略的腾讯云资源管理;可以与 Prometheus 和 Grafana 集成,以提供对腾讯云资源的实时监控和报警功能。
Crossplane 通过定义 Kubernetes 控制器,监控管理的腾讯云资源状态并提供状态同步。如果有人修改或删除了 Kubernetes 之外的资源,Crossplane 会撤销更改或重新创建已删除的腾讯云资源,以确保资源的一致性和可靠性。
起源于开源技术,您只需要为所创建的云基础资源付费,本产品不会产生云资源的额外使用成本或者影响云资源的价格。
当企业希望减少对单一云厂商的依赖,充分利用每个云厂商的相对优势,优化云的使用和成本时,云资源自动化 for Crossplane 为企业多云部署提供基础。
云资源自动化 for Crossplane 作为控制平面,提供 CLI/API/UI 等多种使用方式,以便使用者根据自己的业务需求选择适合的方式将其集成到已有的 Devops 流程。
云资源自动化 for Crossplane 让应用程序以及依赖基础设施的部署,都可以通过 Kubernetes Yaml 进行描述,通过 Kubectl 进行部署,数据的共享也更加的安全和高效。
腾讯云 Crossplane Provider 基于 Terraform Provider 开发。您可以通过以下配置来获取 Terraform 日志。
您可以通过 ControllerConfig 来设置开启对应的日志。
1. 在 Provider 配置 spec 中添加 controllerConfigRef,示例配置如下:
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-tencentcloud
spec:
package: xpkg.upbound.io/crossplane-contrib/provider-tencentcloud:v0.7.1
controllerConfigRef:
name: debug-config
2. 设置 ControllerConfig,示例配置如下:
apiVersion: pkg.crossplane.io/v1alpha1
kind: ControllerConfig
metadata:
name: debug-config
spec:
args:
- --debug
env:
- name: TF_LOG
value: TRACE
- name: TF_LOG_PATH
value: /tmp/terraform-trace.log
TF_LOG_PATH
用于设置日志路径。配置生效后,将在 tmp 目录下,生成对应的日志。
由于 Crossplane 使用的是 Kubernetes 容器,日志将存放在运行 Provider 的 pod 上。
执行如下命令,获取当前集群下的 pod:
kubectl get pods -n crossplane-system
输出如下:
NAME READY STATUS RESTARTS AGE
crossplane-6494656b8b-qr62x 1/1 Running 1 (3h35m ago) 6d4h
crossplane-rbac-manager-8458557cdd-lfn8q 1/1 Running 1 (3d ago) 6d4h
provider-tencentcloud-13db077a7bf0-66567f785-clb7g 1/1 Running 0 43m
找到以 “provider-tencentcloud-” 开头且状态为 “Running” 的 pod。然后,您可以使用 kubectl exec
命令进入容器中:
kubectl exec -it provider-tencentcloud-13db077a7bf0-66567f785-clb7g /bin/bash -n crossplane-system
使用 vi
命令查看对应的日志:
kubectl exec -it provider-tencentcloud-13db077a7bf0-66567f785-clb7g /bin/bash -n crossplane-system
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.bash-5.1$ vi /tmp/terraform-trace.log
如果您在使用 Crossplane 管理云资源之前已经通过腾讯云控制台创建了资源,您可以按照以下步骤将它们作为受管资源导入,并让 Crossplane 对其进行管理。受管资源的 managementPolicies 字段可以将外部资源导入 crossplane。
Crossplane 支持 手动 或 自动 导入资源。
要导入 Provider 中的现有外部资源,请创建一个带有 "crossplane.io/external-name" 注解的新托管资源,并指定资源名称或 ID。
以导入 VPC 实例为例:
apiVersion: vpc.tencentcloud.crossplane.io/v1alpha1
kind: VPC
metadata:
name: example-import-vpc
annotations:
crossplane.io/external-name: "vpc-nntzt8p1"
spec:
forProvider:
cidrBlock: "10.1.0.0/16"
name: "crossplane-import"
其中:
metadata.name 字段为托管资源的名称,由用户指定。
metadata.annotations 中 crossplane.io/external-name 的值设置为待导入资源的实例 ID。
如果托管资源存在必选字段,需在 spec.forProvider 中指定;否则将 forProvider 设置为 {}
。以上述配置为例,cidrBlock 和 name 为 VPC 资源的必选值,导入时,需填入该资源的实际值。
使用 kubectl apply -f
命令执行上述配置,示例如下:
kubectl apply -f import_vpc.yml
与手动导入类似,请参见 自动 导入方式进行操作。