Правила брандмауэра по умолчанию частного кластера в GKE разрешают трафик только на портах 443
и 10250
. Это позволяет осуществлять связь с kube-apiserver
и kubelet
соответственно.
Linkerd
использует порты 8443
и 8089
для связи между элементом управления и прокси, развернутыми в плоскости данных .
Компонент отводов использует порт 8089
для обработки запросов к apiserver
.
Компонент прокси-инжектора и для служебного профиля , оба типа контроллеров доступа , для обработки запросов используется порт 8443
.
Документы Linkerd 2 содержат инструкции по настройке брандмауэра в частном кластере GKE: https://linkerd.io/2/reference/cluster-configuration/
Они включены ниже:
Getимя кластера:
CLUSTER_NAME=your-cluster-name
gcloud config set compute/zone your-zone-or-region
Получить кластер MASTER_IPV4_CIDR:
MASTER_IPV4_CIDR=$(gcloud container clusters describe $CLUSTER_NAME \
| grep "masterIpv4CidrBlock: " \
| awk '{print $2}')
Получить кластер СЕТЬ:
NETWORK=$(gcloud container clusters describe $CLUSTER_NAME \
| grep "^network: " \
| awk '{print $2}')
Получить кластер, автоматически сгенерированный NETWORK_TARGET_TAG:
NETWORK_TARGET_TAG=$(gcloud compute firewall-rules list \
--filter network=$NETWORK --format json \
| jq ".[] | select(.name | contains(\"$CLUSTER_NAME\"))" \
| jq -r '.targetTags[0]' | head -1)
Проверьте значения:
echo $MASTER_IPV4_CIDR $NETWORK $NETWORK_TARGET_TAG
# example output
10.0.0.0/28 foo-network gke-foo-cluster-c1ecba83-node
Создайте правила брандмауэра для прокси-инжектора и нажмите:
gcloud compute firewall-rules create gke-to-linkerd-control-plane \
--network "$NETWORK" \
--allow "tcp:8443,tcp:8089" \
--source-ranges "$MASTER_IPV4_CIDR" \
--target-tags "$NETWORK_TARGET_TAG" \
--priority 1000 \
--description "Allow traffic on ports 8843, 8089 for linkerd control-plane components"
Наконец, убедитесь, что брандмауэр создан:
gcloud compute firewall-rules describe gke-to-linkerd-control-plane