Рубрики
Uncategorized

Включение GKE TradeLoad Identity

Первоначально опубликовано на Pbhadani.com в этом блоге, я расскажу о личности рабочей нагрузки GKE … Помечено GoogleCloud, DevOps, Kubernetes, GCP.

Первоначально опубликовано в pbhadani.com В этом блоге я расскажу о функции личности рабочей нагрузки GKE и зачем использовать эту функцию.

Приложение, работающее на GKE, должна аутентифицироваться, чтобы использовать службы Google, такие как Google Cloud Storage (GCS), Cloud SQL, BigQuery и т. Д. Аутентификация может быть выполнена путем предоставления файла ключевой учетной записи службы JSON к приложению с использованием секретного пространства Kubernetes или другой метод, такой как хранилище. Но в этих подходах ключ учетной записи службы JSON (у которого 10 лет жизни) должен храниться в простом тексте в рамках POD или BASE64, закодированном в секретном пространстве Кубератеса. Кроме того, ключевой процесс вращения должен быть в месте, которое не забавный процесс.

Мы можем избежать использования ключа учетной записи службы, прикрепляя учетную запись службы к узлу Kubernetes, но все стручки, работающие на узле, получают одно и то же разрешение, которое не является идеальной вещью.

Мы хотим назначить учетную запись службы на POD, чтобы мы могли изолировать разрешения для разных стручков.

Ура, у нас есть функция личности рабочей нагрузки, доступная в бета-версии, которая решает эту проблему на GKE.

Согласно документации Google, « Identity рабочей нагрузки — это рекомендуемый способ доступа к услугам Google Cloud, изнутри GKE из-за его улучшенных свойств безопасности и управляемости. «

Личность рабочей нагрузки GKE позволяет вам прикрепить учетную запись службы к POD Kubernetes и удалить хлопот для управления учетными данными учетной записи службы JSON в POD или кластере.

Предварительные условия

  1. Если вы не настроили gcloud На вашей рабочей станции, затем обратитесь к моим Предыдущий блог Чтобы получить его и быстро. В качестве альтернативы вы можете использовать Google Cloud Shell Чтобы запустить команды.

  2. Убедитесь, что вы являетесь редактором проекта или владельца проекта или иметь достаточно разрешений для выполнения команд ниже.

Настройка гк-кластера

Выполните следующий шаг, чтобы создать новую кластер GKE и включить идентификацию рабочей нагрузки.

Шаг 1: Включить Облако IAM API Отказ

Шаг 2: Установите GCP по умолчанию.

  • Установить проект GCP
  export GCP_PROJECT_ID=

  gcloud config set project $GCP_PROJECT_ID
  • Установите регион по умолчанию и зону
  gcloud config set compute/region europe-west1

  gcloud config set compute/zone europe-west1-b

Шаг 3: Убедитесь, что у вас есть kubectl Команда установлена.

   gcloud components install kubectl

Выполнять следующее, чтобы проверить

   kubectl help

Шаг 4: Обновление gcloud команды.

   gcloud components update

Шаг 5: Создайте новую учетную запись службы Google (GSA).

  gcloud iam service-accounts create workload-identity-test

Примечания: Вы можете использовать существующую учетную запись службы. Требуется разрешение: IAM.SERVICEACCOUNTS.CREATE. на проекте GCP.

Шаг 6: Добавьте разрешения на учетную запись Google Service, требуемую приложением. Например, Роли/хранение .ObjectViewer.

  gcloud projects add-iam-policy-binding $GCP_PROJECT_ID \
  --member serviceAccount:workload-identity-test@${GCP_PROJECT_ID}.iam.gserviceaccount.com \
  --role roles/storage.objectViewer

Шаг 7: Настройте кластер GKE с Рабочая идентификация включено.

  export GKE_CLUSTER_NAME=gke-wi
  gcloud beta container clusters create $GKE_CLUSTER_NAME \
  --cluster-version=1.13 \
  --identity-namespace=$GCP_PROJECT_ID.svc.id.goog

Примечания: ГК-кластер может занять 5-10 минут, чтобы стать полностью функциональным. Требуется разрешение: Container.Clusters.Create на проекте GCP.

Шаг 8: Настроить kubectl Команда на вашем терминале.

  gcloud container clusters get-credentials $GKE_CLUSTER_NAME

Примечания: Это заполнит ~/.kube/config файл. Требуется разрешение: Container.Clusters.get на проекте GCP.

Шаг 9: (Необязательно) Создайте пространство имен Kubernetes, если вы не хотите использовать по умолчанию пространство имен.

  kubectl create namespace newspace

Шаг 10: Создайте учетную запись службы Kubernetes (KSA).

  kubectl create serviceaccount \
 --namespace newspace \
 workload-identity-test-ksa

Шаг 11: Свяжите учетную запись Google Service (GSA) и служб службы Kubernetes (KSA), так что KSA может использовать разрешения, предоставленные GSA.

  gcloud iam service-accounts add-iam-policy-binding \
  --role roles/iam.workloadIdentityUser \
  --member "serviceAccount:${GCP_PROJECT_ID}.svc.id.goog[newspace/workload-identity-test-ksa]" \
  workload-identity-test@${GCP_PROJECT_ID}.iam.gserviceaccount.com

Шаг 12: Добавить аннотацию

  kubectl annotate serviceaccount \
  --namespace newspace \
  workload-identity-test-ksa \
  iam.gke.io/gcp-service-account=workload-identity-test@${GCP_PROJECT_ID}.iam.gserviceaccount.com

Шаг 13: Создайте POD с созданным KSA для проверки.

  kubectl run --rm -it \
  --generator=run-pod/v1 \
  --image google/cloud-sdk:slim \
  --serviceaccount workload-identity-test-ksa \
  --namespace newspace \
  test-pod

Запуск выше команды войдет в POD и предоставляет его раковину Bash. Теперь запустите команду ниже, чтобы увидеть, какую учетную запись службы этому POD настроен с.

  gcloud auth list

Это должно распечатать имя GSA.

                           Credentialed Accounts
    ACTIVE  ACCOUNT
    *       workload-identity-test@workshop-demo-namwcb.iam.gserviceaccount.com

Очистка

Не забудьте очистить ресурсы, как только вам больше не нужна. Запустите следующие команды:

Шаг 1: Удалить кластер GKE.

  gcloud container clusters delete $GKE_CLUSTER_NAME

Шаг 2: Удалить учетную запись Google Service (GSA).

  gcloud iam service-accounts delete workload-identity-test@${GCP_PROJECT_ID}.iam.gserviceaccount.com

Ниже приведена запись терминала:

Надеюсь, что этот блог поможет вам ознакомиться с удовольствием рабочей нагрузки и надежно развертываю приложения на GKE.

Оригинал: «https://dev.to/pradeepbhadani/getting-started-with-terraform-35fg»