45 lines
1.6 KiB
Markdown
45 lines
1.6 KiB
Markdown
# Terra Operator Manifests
|
|
|
|
## Minimal Setup for Namespace `terra`
|
|
|
|
### 1. Structure
|
|
- **Namespace**: `terra`
|
|
- **Storage**: внешний S3 (Nubes Cloud).
|
|
- **CRD**: `TerraformProviderRelease` definitions.
|
|
|
|
### 2. How to apply
|
|
```bash
|
|
kubectl apply -f operator/manifests/00-namespace.yaml
|
|
kubectl apply -f operator/manifests/02-crd.yaml
|
|
kubectl apply -f operator/manifests/04-operator-deployment.yaml
|
|
kubectl apply -f operator/manifests/05-registry-server.yaml
|
|
```
|
|
|
|
### 3. Usage
|
|
Create a release request:
|
|
```yaml
|
|
apiVersion: terra.core.nubes.ru/v1alpha1
|
|
kind: TerraformProviderRelease
|
|
metadata:
|
|
name: mycloud-v0-1-0
|
|
namespace: terra
|
|
spec:
|
|
providerName: "mycloud"
|
|
version: "0.1.0"
|
|
gitRepo: "https://github.com/Start-Ops/terraform-provider-mycloud.git"
|
|
gitRef: "v0.1.0"
|
|
```
|
|
|
|
---
|
|
|
|
## Простыми словами: что это и зачем
|
|
|
|
Это набор манифестов и небольшой сервис, который автоматизирует сборку Terraform‑провайдеров.
|
|
Идея простая: я описываю в CRD, какой провайдер и какую версию собрать, а оператор сам запускает Job,
|
|
собирает бинарники и складывает их в хранилище. Дальше registry‑server отдает эти артефакты Terraform‑клиентам.
|
|
|
|
Зачем это нужно:
|
|
- чтобы не собирать провайдеры руками;
|
|
- чтобы хранить артефакты в одном месте;
|
|
- чтобы Terraform мог скачивать провайдеры по обычному источнику.
|