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 GKE com clusters do GKE Autopilot ou 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 GKE, consulte a Visão geral do Diretório de serviços para GKE.
Limitações
O Diretório de serviços para 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 Diretório de serviços.
- É preciso registrar os clusters do GKE usando Frotas antes de sincronizar os serviços nesses clusters com o Diretório de serviços. Para saber detalhes sobre como registrar seus clusters do GKE, consulte Registrar um cluster.
- Todos os recursos do Service Directory 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. Você precisa fazer todas as mudanças nos próprios recursos do serviço do GKE para que elas sejam propagadas ao Diretório de Serviços.
Antes de começar
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 Cloud de Confiance project.
- Registre seu cluster do GKE em uma frota. Para registrar seu 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 GKE do Service Directory.
- Configure a política de registro do Diretório de serviços.
- Implante o serviço do GKE.
Ativar o recurso de frota do GKE do Service Directory
Para ativar o recurso de frota do GKE do Service Directory, execute o comando gcloud container hub.
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 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 a lista estiver vazia, os recursos serão sincronizados com 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.
Configure um ServiceDirectoryRegistrationPolicy.
O manifesto a seguir descreve um 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 vai escolher uma para ser a política ativa e marcar as outras como inativas.LABELS: o seletor de rótulos, comosd-import: "true". Esse valor se aplica aos recursos especificados em "kind". Por padrão, nenhum recurso é selecionado.ANNOTATIONS: uma lista de anotações que são correspondidas 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 a lista estiver vazia, os recursos serão sincronizados com 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 regional do GKE no cluster do GKE da sua região. Por exemplo, se a região for us-central1, implante em um cluster do GKE gke-us-central1.
Isso importa seu serviço do GKE para o Diretório de serviços.
Crie um arquivo YAML e aplique-o como qualquer outro recurso do GKE. Veja 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
Veja um manifesto de um 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 seu serviço usando o comando
gcloud service-directory services resolve:
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-central1.NAMESPACE: o nome do namespace do serviço, por exemplo,default
A saída mostra seu 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
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 mais detalhes, consulte os preços do Service Directory.
A seguir
- Para uma visão geral do Diretório de serviços, consulte a Visão geral do Service Directory.
- Para encontrar soluções para problemas comuns que podem ser encontrados ao usar Diretório de serviços, consulte Solução de problemas.