Первоначально опубликовано в 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 или кластере.
Предварительные условия
Если вы не настроили
gcloud
На вашей рабочей станции, затем обратитесь к моим Предыдущий блог Чтобы получить его и быстро. В качестве альтернативы вы можете использовать Google Cloud Shell Чтобы запустить команды.Убедитесь, что вы являетесь редактором проекта или владельца проекта или иметь достаточно разрешений для выполнения команд ниже.
Настройка гк-кластера
Выполните следующий шаг, чтобы создать новую кластер 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»