From fa3d75a390f2536d7220e28c259b4c51309d6030 Mon Sep 17 00:00:00 2001 From: Kanthi Subramanian Date: Mon, 1 Dec 2025 12:13:36 -0600 Subject: [PATCH 1/3] Added high level architecture diagram for ice-rest-catalog with etcd backend --- doc/architecture.md | 39 +++ doc/ice-rest-catalog-architecture.drawio | 244 +++++++++++++++++++ doc/ice-rest-catalog-architecture.drawio.png | Bin 0 -> 153122 bytes 3 files changed, 283 insertions(+) create mode 100644 doc/architecture.md create mode 100644 doc/ice-rest-catalog-architecture.drawio create mode 100644 doc/ice-rest-catalog-architecture.drawio.png diff --git a/doc/architecture.md b/doc/architecture.md new file mode 100644 index 0000000..6b59adf --- /dev/null +++ b/doc/architecture.md @@ -0,0 +1,39 @@ +# ICE REST Catalog Architecture + +![ICE REST Catalog Architecture](ice-rest-catalog-architecture.drawio.png) + +## Components + +- **ice-rest-catalog**: Stateless REST API service (Kubernetes Deployment) +- **etcd**: Distributed key-value store for catalog state (Kubernetes StatefulSet) +- **Object Storage**: S3-compatible storage for data files +- **Clients**: ClickHouse or other Iceberg-compatible engines + +## Design Principles + +### Stateless Catalog + +The `ice-rest-catalog` is completely stateless and deployed as a Kubernetes Deployment with multiple replicas. It can be scaled horizontally without coordination. The catalog does not store any state locally—all metadata is persisted in etcd. + +### State Management + +All catalog state (namespaces, tables, schemas, snapshots, etc.) is maintained in **etcd**, a distributed, consistent key-value store. Each etcd instance runs as a StatefulSet pod with persistent storage, ensuring data durability across restarts. + +### Service Discovery + +`ice-rest-catalog` uses **DNS+SRV** records to discover and connect to the etcd cluster. This allows dynamic discovery of etcd endpoints without hardcoded addresses. The catalog queries the etcd headless service for available instances. + +### High Availability + +- Multiple `ice-rest-catalog` replicas behind a load balancer +- etcd cluster with Raft consensus (quorum-based replication) +- Persistent volumes for etcd data +- S3 for durable object storage + +## Data Flow + +1. **Client → Catalog**: HTTPS requests to ice-rest-catalog service +2. **Catalog → etcd**: DNS+SRV discovery, then read/write operations on :2379 +3. **Catalog → S3**: Direct read/write of Parquet/metadata files +4. **etcd Cluster**: Internal Raft consensus on :2380 + diff --git a/doc/ice-rest-catalog-architecture.drawio b/doc/ice-rest-catalog-architecture.drawio new file mode 100644 index 0000000..67f70d8 --- /dev/null +++ b/doc/ice-rest-catalog-architecture.drawio @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/ice-rest-catalog-architecture.drawio.png b/doc/ice-rest-catalog-architecture.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..356b51b62874b04688009737ba599ace3d95da0d GIT binary patch literal 153122 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 literal 0 HcmV?d00001 From a7af569fb8b87996c448206146a09698561cd326 Mon Sep 17 00:00:00 2001 From: Kanthi Subramanian Date: Mon, 1 Dec 2025 12:26:55 -0600 Subject: [PATCH 2/3] updated architecture.md --- doc/architecture.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/doc/architecture.md b/doc/architecture.md index 6b59adf..80efa1a 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -21,19 +21,14 @@ All catalog state (namespaces, tables, schemas, snapshots, etc.) is maintained i ### Service Discovery -`ice-rest-catalog` uses **DNS+SRV** records to discover and connect to the etcd cluster. This allows dynamic discovery of etcd endpoints without hardcoded addresses. The catalog queries the etcd headless service for available instances. +`ice-rest-catalog` uses **DNS+SRV** records to discover and connect to the etcd cluster. +The catalog uses jetcd library to interact with etcd https://github.com/etcd-io/jetcd. +The etcd cluster can be accessed using dns+srv as it allows dynamic discovery of etcd endpoints without hardcoded addresses. ### High Availability - Multiple `ice-rest-catalog` replicas behind a load balancer -- etcd cluster with Raft consensus (quorum-based replication) +- etcd cluster. - Persistent volumes for etcd data - S3 for durable object storage -## Data Flow - -1. **Client → Catalog**: HTTPS requests to ice-rest-catalog service -2. **Catalog → etcd**: DNS+SRV discovery, then read/write operations on :2379 -3. **Catalog → S3**: Direct read/write of Parquet/metadata files -4. **etcd Cluster**: Internal Raft consensus on :2380 - From 4516e5584f9ce0b4f2680bb13ca337a19912cc22 Mon Sep 17 00:00:00 2001 From: Kanthi Subramanian Date: Tue, 2 Dec 2025 12:56:20 -0600 Subject: [PATCH 3/3] Added k8s manifest and documentation on how to replace minio with s3. --- doc/.ice.yaml | 7 + doc/architecture.md | 1 - doc/ice-rest-catalog-k8s.yaml | 590 ++++++++++++++++++++++++++++++++++ doc/k8s_setup.md | 110 +++++++ 4 files changed, 707 insertions(+), 1 deletion(-) create mode 100644 doc/.ice.yaml create mode 100644 doc/ice-rest-catalog-k8s.yaml create mode 100644 doc/k8s_setup.md diff --git a/doc/.ice.yaml b/doc/.ice.yaml new file mode 100644 index 0000000..a0e9c16 --- /dev/null +++ b/doc/.ice.yaml @@ -0,0 +1,7 @@ +uri: http://localhost:8181 +s3: + endpoint: http://localhost:9000 + pathStyleAccess: true + accessKeyID: minio + secretAccessKey: minio123 + region: us-east-1 \ No newline at end of file diff --git a/doc/architecture.md b/doc/architecture.md index 80efa1a..f0ce9ae 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -31,4 +31,3 @@ The etcd cluster can be accessed using dns+srv as it allows dynamic discovery of - etcd cluster. - Persistent volumes for etcd data - S3 for durable object storage - diff --git a/doc/ice-rest-catalog-k8s.yaml b/doc/ice-rest-catalog-k8s.yaml new file mode 100644 index 0000000..e0c0781 --- /dev/null +++ b/doc/ice-rest-catalog-k8s.yaml @@ -0,0 +1,590 @@ +# ============================================================================= +# ice-rest-catalog Kubernetes Manifests +# ============================================================================= +# Deploy with: kubectl apply -f ice-rest-catalog-k8s.yaml +# +# For kind cluster access (run these commands to access services locally): +# kubectl port-forward svc/ice-rest-catalog 8181:8181 -n iceberg-system & +# kubectl port-forward svc/minio 9000:9000 -n iceberg-system & +# kubectl port-forward svc/minio 9001:9001 -n iceberg-system & +# +# Access URLs: +# - ice-rest-catalog: http://localhost:8181 +# - minio API: http://localhost:9000 +# - minio console: http://localhost:9001 +# +# For production use, consider using LoadBalancer or Ingress instead of NodePort +# ============================================================================= + +--- +# Namespace +apiVersion: v1 +kind: Namespace +metadata: + name: iceberg-system + labels: + app.kubernetes.io/name: iceberg-system + app.kubernetes.io/part-of: ice-rest-catalog + +--- +# ============================================================================= +# SECRETS & CONFIGMAPS +# ============================================================================= + +# MinIO Credentials Secret +apiVersion: v1 +kind: Secret +metadata: + name: minio-credentials + namespace: iceberg-system + labels: + app.kubernetes.io/name: minio + app.kubernetes.io/part-of: ice-rest-catalog +type: Opaque +stringData: + MINIO_ROOT_USER: "minio" + MINIO_ROOT_PASSWORD: "minio123" + +--- +# ice-rest-catalog Configuration +apiVersion: v1 +kind: ConfigMap +metadata: + name: ice-rest-catalog-config + namespace: iceberg-system + labels: + app.kubernetes.io/name: ice-rest-catalog +data: + config.yaml: | + # etcd connection - uses DNS SRV discovery via headless service + uri: etcd:http://etcd.iceberg-system.svc.cluster.local:2379 + + # S3/MinIO warehouse configuration + warehouse: s3://warehouse + + # S3 settings for MinIO + s3: + endpoint: http://minio.iceberg-system.svc.cluster.local:9000 + pathStyleAccess: true + accessKeyID: minio + secretAccessKey: minio123 + region: us-east-1 + + # Server address + addr: 0.0.0.0:8181 + + # Anonymous access for development/testing + anonymousAccess: + enabled: true + accessConfig: {} + +--- +# ice-rest-catalog Secrets +apiVersion: v1 +kind: Secret +metadata: + name: ice-rest-catalog-secrets + namespace: iceberg-system + labels: + app.kubernetes.io/name: ice-rest-catalog +type: Opaque +stringData: + S3_ACCESS_KEY_ID: "minio" + S3_SECRET_ACCESS_KEY: "minio123" + +--- +# ============================================================================= +# ETCD CLUSTER +# ============================================================================= + +# etcd Headless Service for DNS SRV discovery +apiVersion: v1 +kind: Service +metadata: + name: etcd + namespace: iceberg-system + labels: + app.kubernetes.io/name: etcd + app.kubernetes.io/part-of: ice-rest-catalog +spec: + clusterIP: None + publishNotReadyAddresses: true + ports: + - name: client + port: 2379 + targetPort: 2379 + - name: peer + port: 2380 + targetPort: 2380 + selector: + app.kubernetes.io/name: etcd + +--- +# etcd StatefulSet +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: etcd + namespace: iceberg-system + labels: + app.kubernetes.io/name: etcd + app.kubernetes.io/part-of: ice-rest-catalog +spec: + serviceName: etcd + replicas: 3 + podManagementPolicy: Parallel + selector: + matchLabels: + app.kubernetes.io/name: etcd + template: + metadata: + labels: + app.kubernetes.io/name: etcd + app.kubernetes.io/part-of: ice-rest-catalog + spec: + terminationGracePeriodSeconds: 30 + containers: + - name: etcd + image: quay.io/coreos/etcd:v3.5.12 + ports: + - name: client + containerPort: 2379 + - name: peer + containerPort: 2380 + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: ETCD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: ETCD_DATA_DIR + value: /var/lib/etcd + - name: ETCD_INITIAL_CLUSTER_STATE + value: new + - name: ETCD_INITIAL_CLUSTER_TOKEN + value: etcd-cluster-iceberg + - name: ETCD_LISTEN_PEER_URLS + value: http://0.0.0.0:2380 + - name: ETCD_LISTEN_CLIENT_URLS + value: http://0.0.0.0:2379 + - name: ETCD_ADVERTISE_CLIENT_URLS + value: http://$(POD_NAME).etcd.$(POD_NAMESPACE).svc.cluster.local:2379 + - name: ETCD_INITIAL_ADVERTISE_PEER_URLS + value: http://$(POD_NAME).etcd.$(POD_NAMESPACE).svc.cluster.local:2380 + - name: ETCD_INITIAL_CLUSTER + value: etcd-0=http://etcd-0.etcd.iceberg-system.svc.cluster.local:2380,etcd-1=http://etcd-1.etcd.iceberg-system.svc.cluster.local:2380,etcd-2=http://etcd-2.etcd.iceberg-system.svc.cluster.local:2380 + volumeMounts: + - name: etcd-data + mountPath: /var/lib/etcd + resources: + requests: + cpu: 100m + memory: 256Mi + limits: + cpu: 500m + memory: 512Mi + livenessProbe: + httpGet: + path: /health + port: 2379 + initialDelaySeconds: 15 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /health + port: 2379 + initialDelaySeconds: 5 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 3 + volumeClaimTemplates: + - metadata: + name: etcd-data + labels: + app.kubernetes.io/name: etcd + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + +--- +# ============================================================================= +# MINIO (S3-Compatible Storage) +# ============================================================================= + +# MinIO NodePort Service for external access +apiVersion: v1 +kind: Service +metadata: + name: minio + namespace: iceberg-system + labels: + app.kubernetes.io/name: minio + app.kubernetes.io/part-of: ice-rest-catalog +spec: + type: NodePort + ports: + - name: api + port: 9000 + targetPort: 9000 + nodePort: 30900 + - name: console + port: 9001 + targetPort: 9001 + nodePort: 30901 + selector: + app.kubernetes.io/name: minio + +--- +# MinIO Headless Service +apiVersion: v1 +kind: Service +metadata: + name: minio-headless + namespace: iceberg-system + labels: + app.kubernetes.io/name: minio +spec: + clusterIP: None + ports: + - name: api + port: 9000 + targetPort: 9000 + selector: + app.kubernetes.io/name: minio + +--- +# MinIO StatefulSet +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: minio + namespace: iceberg-system + labels: + app.kubernetes.io/name: minio + app.kubernetes.io/part-of: ice-rest-catalog +spec: + serviceName: minio-headless + replicas: 1 + podManagementPolicy: Parallel + selector: + matchLabels: + app.kubernetes.io/name: minio + template: + metadata: + labels: + app.kubernetes.io/name: minio + app.kubernetes.io/part-of: ice-rest-catalog + spec: + terminationGracePeriodSeconds: 30 + containers: + - name: minio + image: minio/minio:RELEASE.2024-01-31T20-20-33Z + args: + - server + - /data + - --console-address + - ":9001" + ports: + - name: api + containerPort: 9000 + - name: console + containerPort: 9001 + env: + - name: MINIO_ROOT_USER + valueFrom: + secretKeyRef: + name: minio-credentials + key: MINIO_ROOT_USER + - name: MINIO_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: minio-credentials + key: MINIO_ROOT_PASSWORD + volumeMounts: + - name: minio-data + mountPath: /data + resources: + requests: + cpu: 100m + memory: 256Mi + limits: + cpu: 1000m + memory: 1Gi + livenessProbe: + httpGet: + path: /minio/health/live + port: 9000 + initialDelaySeconds: 30 + periodSeconds: 20 + timeoutSeconds: 10 + readinessProbe: + httpGet: + path: /minio/health/ready + port: 9000 + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + volumeClaimTemplates: + - metadata: + name: minio-data + labels: + app.kubernetes.io/name: minio + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 50Gi + +--- +# MinIO Bucket Setup Job +apiVersion: batch/v1 +kind: Job +metadata: + name: minio-bucket-setup + namespace: iceberg-system + labels: + app.kubernetes.io/name: minio-setup + app.kubernetes.io/part-of: ice-rest-catalog +spec: + ttlSecondsAfterFinished: 300 + template: + metadata: + labels: + app.kubernetes.io/name: minio-setup + spec: + restartPolicy: OnFailure + initContainers: + - name: wait-for-minio + image: busybox:1.36 + command: + - sh + - -c + - | + echo "Waiting for MinIO to be ready..." + until wget -q --spider http://minio.iceberg-system.svc.cluster.local:9000/minio/health/ready; do + echo "MinIO not ready, waiting..." + sleep 5 + done + echo "MinIO is ready!" + containers: + - name: mc + image: minio/mc:RELEASE.2024-01-31T08-59-40Z + command: + - sh + - -c + - | + mc alias set myminio http://minio.iceberg-system.svc.cluster.local:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD + mc mb --ignore-existing myminio/warehouse + echo "Bucket 'warehouse' created successfully!" + env: + - name: MINIO_ROOT_USER + valueFrom: + secretKeyRef: + name: minio-credentials + key: MINIO_ROOT_USER + - name: MINIO_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: minio-credentials + key: MINIO_ROOT_PASSWORD + +--- +# ============================================================================= +# ICE-REST-CATALOG +# ============================================================================= + +# ServiceAccount +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ice-rest-catalog + namespace: iceberg-system + labels: + app.kubernetes.io/name: ice-rest-catalog + +--- +# ice-rest-catalog NodePort Service for external access +apiVersion: v1 +kind: Service +metadata: + name: ice-rest-catalog + namespace: iceberg-system + labels: + app.kubernetes.io/name: ice-rest-catalog + app.kubernetes.io/part-of: ice-rest-catalog +spec: + type: NodePort + ports: + - name: http + port: 8181 + targetPort: 8181 + nodePort: 30181 + protocol: TCP + selector: + app.kubernetes.io/name: ice-rest-catalog + +--- +# ice-rest-catalog Deployment +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ice-rest-catalog + namespace: iceberg-system + labels: + app.kubernetes.io/name: ice-rest-catalog + app.kubernetes.io/part-of: ice-rest-catalog +spec: + replicas: 3 + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 + selector: + matchLabels: + app.kubernetes.io/name: ice-rest-catalog + template: + metadata: + labels: + app.kubernetes.io/name: ice-rest-catalog + app.kubernetes.io/part-of: ice-rest-catalog + spec: + terminationGracePeriodSeconds: 30 + serviceAccountName: ice-rest-catalog + initContainers: + - name: wait-for-etcd + image: busybox:1.36 + command: + - sh + - -c + - | + echo "Waiting for etcd cluster to be ready..." + until wget -q --spider http://etcd.iceberg-system.svc.cluster.local:2379/health; do + echo "etcd not ready, waiting..." + sleep 5 + done + echo "etcd is ready!" + - name: wait-for-minio + image: busybox:1.36 + command: + - sh + - -c + - | + echo "Waiting for MinIO to be ready..." + until wget -q --spider http://minio.iceberg-system.svc.cluster.local:9000/minio/health/ready; do + echo "MinIO not ready, waiting..." + sleep 5 + done + echo "MinIO is ready!" + containers: + - name: ice-rest-catalog + image: altinity/ice-rest-catalog:latest + ports: + - name: http + containerPort: 8181 + protocol: TCP + args: + - "-c" + - "/etc/ice-rest-catalog/config.yaml" + env: + - name: AWS_ACCESS_KEY_ID + valueFrom: + secretKeyRef: + name: ice-rest-catalog-secrets + key: S3_ACCESS_KEY_ID + - name: AWS_SECRET_ACCESS_KEY + valueFrom: + secretKeyRef: + name: ice-rest-catalog-secrets + key: S3_SECRET_ACCESS_KEY + - name: AWS_REGION + value: "us-east-1" + volumeMounts: + - name: config + mountPath: /etc/ice-rest-catalog + readOnly: true + resources: + requests: + cpu: 200m + memory: 512Mi + limits: + cpu: 1000m + memory: 1Gi + livenessProbe: + httpGet: + path: /v1/config + port: 8181 + initialDelaySeconds: 30 + periodSeconds: 15 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /v1/config + port: 8181 + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + volumes: + - name: config + configMap: + name: ice-rest-catalog-config + +--- +# PodDisruptionBudget +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: ice-rest-catalog + namespace: iceberg-system + labels: + app.kubernetes.io/name: ice-rest-catalog +spec: + minAvailable: 2 + selector: + matchLabels: + app.kubernetes.io/name: ice-rest-catalog + +--- +# HorizontalPodAutoscaler +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: ice-rest-catalog + namespace: iceberg-system + labels: + app.kubernetes.io/name: ice-rest-catalog +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: ice-rest-catalog + minReplicas: 3 + maxReplicas: 10 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 70 + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: 80 diff --git a/doc/k8s_setup.md b/doc/k8s_setup.md new file mode 100644 index 0000000..7722437 --- /dev/null +++ b/doc/k8s_setup.md @@ -0,0 +1,110 @@ +### k8s setup + +The file ice-rest-catalog-k8s.yaml contains the following components: + +| Component | K8s Resource Type | Replicas | Purpose | +|-----------|-------------------|----------|---------| +| ice-rest-catalog | Deployment | 3 | Stateless REST catalog service (horizontally scalable) | +| etcd | StatefulSet | 3 | Distributed key-value store for catalog metadata | +| minio | StatefulSet | 1 | S3-compatible object storage for Iceberg data | + +``` +kubectl get pods -n iceberg-system +NAME READY STATUS RESTARTS AGE +etcd-0 1/1 Running 0 19h +etcd-1 1/1 Running 0 19h +etcd-2 1/1 Running 0 19h +ice-rest-catalog-dcdd9cb99-6gd8h 1/1 Running 0 15h +ice-rest-catalog-dcdd9cb99-bh7kt 1/1 Running 0 15h +ice-rest-catalog-dcdd9cb99-hdx8c 1/1 Running 0 15h +minio-0 1/1 Running 0 19h +``` + +--- + +### Replacing MinIO with AWS S3 + +For production deployments, you can replace MinIO with AWS S3. Follow these steps: + +#### 1. Remove MinIO Resources + +Delete or comment out these sections from `ice-rest-catalog-k8s.yaml`: +- `minio-credentials` Secret +- `minio` Service (NodePort) +- `minio-headless` Service +- `minio` StatefulSet +- `minio-bucket-setup` Job + +#### 2. Update the ConfigMap + +Replace the `ice-rest-catalog-config` ConfigMap with S3 settings: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: ice-rest-catalog-config + namespace: iceberg-system +data: + config.yaml: | + uri: etcd:http://etcd.iceberg-system.svc.cluster.local:2379 + + # Use your S3 bucket path + warehouse: s3://your-bucket-name/warehouse + + # S3 settings (remove endpoint and pathStyleAccess for real S3) + s3: + region: us-east-1 + + addr: 0.0.0.0:8181 + + anonymousAccess: + enabled: true + accessConfig: {} +``` + +#### 3. Update the Secret with AWS Credentials + +```yaml +apiVersion: v1 +kind: Secret +metadata: + name: ice-rest-catalog-secrets + namespace: iceberg-system +type: Opaque +stringData: + S3_ACCESS_KEY_ID: "" + S3_SECRET_ACCESS_KEY: "" +``` + +#### 4. Remove MinIO Init Container + +In the `ice-rest-catalog` Deployment, remove the `wait-for-minio` init container: + +```yaml +initContainers: + - name: wait-for-etcd + # ... keep this one + # Remove the wait-for-minio init container +``` + +#### 5. Create the S3 Bucket + +Ensure your S3 bucket exists before deploying: + +```bash +aws s3 mb s3://your-bucket-name --region us-east-1 +``` + +#### Summary of Changes + +| Resource | Action | +|----------|--------| +| `minio-credentials` Secret | Remove | +| `minio` Service | Remove | +| `minio-headless` Service | Remove | +| `minio` StatefulSet | Remove | +| `minio-bucket-setup` Job | Remove | +| `ice-rest-catalog-config` ConfigMap | Update (remove endpoint, pathStyleAccess) | +| `ice-rest-catalog-secrets` Secret | Update (use AWS credentials) | +| `ice-rest-catalog` Deployment | Remove `wait-for-minio` init container |