Поскольку я не получил ни одного стандартного кластера GKE через Terraform (см. Проблема с разрешениями GKE для gcr.io с учетной записью службы, основанной на terraform ), теперь я создал один с отдельным пулом узлов. Однако я все еще не могу получить контейнер basi c, извлеченный из частного репозитория eu.gcr.io.
Мой terraform yml выглядит следующим образом.
resource "google_container_cluster" "primary" {
name = "gke-cluster"
location = "${var.region}-a"
node_locations = [
"${var.region}-b",
"${var.region}-c",
]
network = var.vpc_name
subnetwork = var.subnet_name
remove_default_node_pool = true
initial_node_count = 1
# minimum kubernetes version for master
min_master_version = var.min_master_version
master_auth {
username = var.gke_master_user
password = var.gke_master_pass
}
}
resource "google_container_node_pool" "primary_preemptible_nodes" {
name = "gke-node-pool"
location = "${var.region}-a"
cluster = google_container_cluster.primary.name
version = var.node_version
node_count = 3
node_config {
preemptible = true
metadata = {
disable-legacy-endpoints = "true"
}
# based on project number
service_account = "328126791642-compute@developer.gserviceaccount.com"
oauth_scopes = [
"https://www.googleapis.com/auth/compute",
"https://www.googleapis.com/auth/devstorage.read_only"
"https://www.googleapis.com/auth/logging.write",
"https://www.googleapis.com/auth/monitoring",
]
}
}
все создается очень хорошо. Затем я хочу развернуть в кластере с
. Я создаю эти развертывания со следующим файлом yml (deploy.yml)
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-deployment
spec:
replicas: 1
selector:
matchLabels:
component: api
template:
metadata:
labels:
component: api
spec:
containers:
- name: api
image: eu.gcr.io/project-dev/api:latest
imagePullPolicy: Always
ports:
- containerPort: 5060
, и он продолжает давать:
Failed to pull image "eu.gcr.io/project-dev/api:latest": rpc error: code =
Unknown desc = Error response from daemon: pull access denied for eu.gcr.io/project-dev/api,
repository does not exist or may require 'docker login': denied: Permission denied for
"latest" from request "/v2/project-dev/lcm_api/manifests/latest".
Предупреждение Failed 94s (x2 более 111s) kubelet, gke-cluster-dev-node-pool-90efd247-7vl4 Ошибка: ErrImagePull
У меня есть открытая облачная оболочка в кластере kubernetes и
docker pull eu.gcr.io/project-dev/api:latest
работает просто отлично.
У меня серьезно заканчиваются идеи здесь (и я думаю вернуться к AWS). Может ли это иметь какое-то отношение к разрешениям, которые контейнер выдвигает в eu.gcr.io?
Я использую:
docker login -u _json_key --password-stdin https://eu.gcr.io < /home/jeroen/.config/gcloud/tf_admin.json
локально, где tf_admin. json - учетная запись службы мой административный проект, который создал инфраструктурный проект. Я тогда пу sh
docker push eu.gcr.io/project-dev/api:latest
Еще одна идея. Из документации и других вопросов, связанных со стековым потоком (см., Например, GKE - ErrImagePull, извлекаемый из реестра контейнеров Google ), представляется, что ключ имеет правильную учетную запись службы и oauth-области. Как я могу проверить, что он использует правильный сервис-аккаунт при вытягивании? И правильно ли назначены области?