基础设施即代码

将基础设施和数据库视为代码。通过GitOps友好的工作流以声明式方式管理它们。

声明式API

在YAML配置文件中定义您的整个基础设施,类似于Kubernetes CRD。

数据库即代码

通过版本控制的配置管理数据库、用户和访问控制。

GitOps工作流

使用Git对您的基础设施进行版本控制,实现协作和可审计的变更。

声明模块

使用简单的YAML配置定义基础设施模块。以下是声明基本基础设施节点的示例:

# 用于代理、监控、告警等的基础设施集群...
infra: { hosts: { 10.10.10.10: { infra_seq: 1 } } }

# minio集群,兼容s3的对象存储
minio: { hosts: { 10.10.10.10: { minio_seq: 1 } }, vars: { minio_cluster: minio } }

# 用于高可用postgres DCS的etcd集群
etcd: { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }

# postgres示例集群: pg-meta
pg-meta: { hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary }, vars: { pg_cluster: pg-meta } }

声明集群

使用声明式配置创建具有高可用性的多节点PostgreSQL集群:

pg-test:
  hosts:
    10.10.10.11: { pg_seq: 1, pg_role: primary }
    10.10.10.12: { pg_seq: 2, pg_role: replica }
    10.10.10.13: { pg_seq: 3, pg_role: replica }
  vars: { pg_cluster: pg-test }

声明集群内部结构

配置集群内的数据库、用户和访问控制:

pg_databases:
  - name: meta
    baseline: cmdb.sql
    schemas: [pigsty]
    extensions:
      - { name: postgis, schema: public }
      - { name: timescaledb }
    comment: pigsty元数据库

pg_users:
  - name: dbuser_meta
    password: DBUser.Meta
    login: true
    roles: [dbrole_admin]
    pgbouncer: true
    comment: pigsty管理员用户

声明访问控制

定义全面的安全策略和访问规则:

pg_hba_rules:
  - {user: '${dbsu}', db: all, addr: local, auth: ident}
  - {user: '+dbrole_readonly', db: all, addr: intra, auth: ssl}
  - {user: '+dbrole_offline', db: all, addr: intra, auth: ssl}

pg_vip_enabled: true
pg_vip_address: 10.10.10.2/24
pg_vip_interface: eth1
patroni_ssl_enabled: true
pgbouncer_sslmode: require

PIGSTY