Nesta página, você encontra informações sobre como configurar o Diretório de serviços com o Google Kubernetes Engine (GKE) e registrar automaticamente seus clusters do GKE no Diretório de serviços. É possível configurar o Diretório de serviços para o GKE com clusters do GKE Autopilot ou clusters do GKE Standard. Para informações sobre os dois modos, consulte Escolher um modo de operação do GKE.
Para saber mais sobre o Diretório de serviços para o GKE, consulte Visão geral do Diretório de serviços para o GKE.
Limitações
O Diretório de serviços para o GKE tem as seguintes limitações:
- Só é possível registrar serviços usando a integração do Diretório de serviços com o GKE. É necessário registrar entradas, gateways e outros recursos manualmente usando a API do Diretório de serviços.
- É necessário registrar os clusters do GKE usando as frotas antes de sincronizar os serviços nesses clusters com o Diretório de serviços. Para detalhes sobre como registrar clusters do GKE, consulte Como registrar um cluster.
- Todos os recursos do Diretório de serviços são registrados no projeto da frota, não no projeto do cluster.
- Não é possível modificar as entidades do Diretório de serviços registradas usando essa integração. É necessário fazer todas as mudanças nos recursos de serviço do GKE para que elas sejam propagadas ao Diretório de serviços.
Antes de começar
- Faça login na sua Google Cloud conta do. Se você não conhece o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em cenários reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- É necessário registrar o cluster do GKE em uma frota. Para registrar o cluster do GKE, siga as instruções em Como registrar um cluster.
Configurar o cluster do GKE
Para configurar o cluster do GKE, siga estas etapas.
- Ative o recurso de frota do Diretório de serviços do GKE.
- Configure a política de registro do Diretório de serviços.
- Implante o serviço do GKE.
Ativar o recurso de frota do Diretório de serviços do GKE
Para ativar o recurso de frota do Diretório de serviços do GKE, execute
o gcloud container hub comando.
gcloud
gcloud alpha container hub service-directory enable
Configurar a política de registro do Diretório de serviços para o serviço
A política de registro define quais tipos de serviços no GKE são importados automaticamente pelo Diretório de serviços. A lista a seguir mostra as opções configuráveis para essa política:
resources: o tipo de recursos do GKE que são importados. É possível especificar vários tipos de recursos. Os recursos são identificados porGroupeKind. Por padrão, oGroupécore. SomenteKind: serviceestá disponível.selector: um seletor de rótulos do GKE que corresponde a rótulos de chave:valor aplicados ao recurso do GKE. Por padrão, nenhum recurso é selecionado.annotationsToSync: as chaves de anotação no recurso que são sincronizadas com o Diretório de serviços. Se essa lista estiver vazia, os recursos serão sincronizados com o Diretório de serviços sem anotações.
Cada namespace precisa definir uma única política. Essa política precisa ter name:
"default". O controlador não permite nem reconcilia outros nomes.
Configurar uma ServiceDirectoryRegistrationPolicy.
O manifesto a seguir descreve uma ServiceDirectoryRegistrationPolicy:
apiVersion: networking.gke.io/v1alpha1 kind: ServiceDirectoryRegistrationPolicy metadata: # Only the name "default" is allowed. name: default # The ServiceDirectoryRegistrationPolicy is a namespaced resource namespace: NAMESPACE spec: resources: # Kind specifies the types of Kubernetes resources that can be synced into Service Directory. - kind: Service # Selector is a label selector for the resource types specified in Kind. selector: matchLabels: LABELS # annotationsToSync specifies the annotations that are matched and imported. # Any annotations that do not match this set of keys will not be imported into Service Directory. annotationsToSync: - ANNOTATIONS
Substitua:
NAMESPACE: o nome do namespace. Só pode haver umServiceDirectoryRegistrationPolicyem um namespace. Se houver várias políticas em um único namespace, o GKE escolherá uma política para ser a ativa e marcará as outras como inativas.LABELS: o seletor de rótulos, comosd-import: "true". Esse valor se aplica aos recursos especificados no tipo. Por padrão, nenhum recurso é selecionado.ANNOTATIONS: uma lista de anotações que são correspondentes e importadas, como- cloud.google.com/load-balancer-type. Se um recurso do GKE selecionado tiver uma das anotações na lista, a anotação e os valores dela serão sincronizados com o Diretório de serviços com o recurso. Se essa lista estiver vazia, os recursos serão sincronizados com o Diretório de serviços sem anotações.
Salve o manifesto como registration_policy.yaml.
Aplique o manifesto ao cluster.
Para aplicar o manifesto ao cluster, execute o comando kubectl apply -f:
kubectl apply -f registration_policy.yaml
Implantar o serviço do GKE
Implante o serviço e o
aplicativo do balanceador de carga de rede de passagem externa do GKE no cluster do GKE da sua região. Por exemplo, se
sua região for us-central1, implante-o em um cluster do GKE
gke-us-central1.
Isso importa o serviço do GKE para o Diretório de serviços.
Crie um arquivo YAML e aplique-o como qualquer outro recurso do GKE. Confira um manifesto para um serviço do tipo LoadBalancer:
apiVersion: v1
kind: Service
metadata:
name: hello-app-service
labels:
sd-import: "true"
annotations:
cloud.google.com/load-balancer-type: "Internal"
spec:
type: LoadBalancer
selector:
app: hello
ports:
- name: tcp-port
protocol: TCP
port: 80
targetPort: 8080
Confira um manifesto para uma Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: hello
name: hello-app
spec:
replicas: 2
selector:
matchLabels:
app: hello
template:
metadata:
labels:
app: hello
spec:
containers:
- image: gcr.io/google-samples/hello-app:1.0
name: hello
ports:
- containerPort: 8080
protocol: TCP
Para verificar, execute a consulta do Diretório de serviços para o serviço usando o
gcloud service-directory services resolve
comando:
gcloud
gcloud beta service-directory services resolve SERVICE_NAME \ --location=LOCATION \ --namespace=NAMESPACE
Substitua:
SERVICE_NAME: o nome ou identificador totalmente qualificado do serviço, por exemplo,hello-app-serviceLOCATION: o nome da região do serviço, por exemplo,us-central1NAMESPACE: o nome do namespace do serviço, por exemplo,default
A saída mostra o serviço e é semelhante a esta:
service:
endpoints:
- address: 10.140.0.5
metadata:
cloud.google.com/load-balancer-type: "Internal"
name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app-service/endpoints/my-cluster-12345
port: 80
network: projects/123456789/locations/global/networks/default
name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app-service
Faturamento
O Diretório de serviços não cobra pelos recursos criados pela integração do GKE. No entanto, há uma cobrança pelas chamadas de API. Para detalhes de preços, consulte Preços do Diretório de serviços.
A seguir
- Para uma visão geral do Diretório de serviços, consulte a Visão geral do Diretório de serviços.
- Para encontrar soluções para problemas comuns que podem acontecer ao usar o Diretório de serviços, consulte Solução de problemas.