Kubernetes
July 20, 2023

Доступ из Kubernetes к внешним ресурсам с помощью Service

Для организации доступа из пода к какому-нибудь внешнему ресурсу, например, кластеру ClickHouse можно использовать External Service.

Доступ ко внешнему ресурсу по IP-адресу

cat <<EOF | kubectl apply -f -
apiVersion: "v1"
kind: "Service"
metadata:
  name: "clickhouse"
spec:
  ports:
    - name: "clickhouse"
      protocol: "TCP"
      port: 9000
      targetPort: 9000
      nodePort: 0
---
apiVersion: "v1"
kind: "Endpoints"
metadata:
  name: "clickhouse"
subsets:
  - addresses:
    - ip: "1.2.3.4"
    ports:
    - port: 9000
      name: "clickhouse"
EOF

Так, IP адрес 1.2.3.4 станет доступен по короткому имени clickhouse или полному кластерному clickhouse.svc.<namespace>.cluster.local

Доступ к внешнему ресурсу по доменному имени

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
  name: clickhouse
spec:
  type: ExternalName
  externalName: clickhouse.cameda.ru
EOF