Configure a sincronização a partir de mais de uma fonte de informação fidedigna

Esta página explica como configurar mais do que uma fonte de dados de âmbito de raiz e espaço de nomes criando objetos RootSync e RepoSync.

Ter uma origem de verdade raiz permite-lhe sincronizar as configurações com âmbito de cluster e com âmbito de espaço de nomes. Uma origem de verdade raiz pode usar credenciais ao nível do administrador para aplicar políticas em espaços de nomes de aplicações e substituir alterações locais que se afastam do estado que declarou nas suas configurações. Normalmente, um administrador central rege as origens de verdade principais.

As origens de verdade com âmbito do espaço de nomes são opcionais e podem conter configurações com âmbito do espaço de nomes sincronizadas com um espaço de nomes específico em todos os clusters. Pode delegar a configuração e o controlo de uma fonte de verdade com âmbito de espaço de nomes a utilizadores não administrativos. Embora a sincronização de configuração detete automaticamente as alterações da fonte de informação fidedigna, pode adicionar uma camada adicional de deteção de desvio adicionando um webhook de admissão a uma fonte de informação fidedigna com âmbito de espaço de nomes. Para ver detalhes sobre como o fazer, consulte o artigo Evite a deriva de configuração.

Antes de começar

  • Crie ou certifique-se de que tem acesso a uma fonte de verdade não estruturada que pode conter as configurações com as quais o Config Sync é sincronizado. O Config Sync suporta repositórios Git, gráficos Helm e imagens OCI como fonte de informações fidedignas. As fontes de verdade com âmbito de espaço de nomes têm de usar o formato não estruturado.
  • Crie ou certifique-se de que tem acesso a um cluster numa plataforma e versão suportadas do Google Kubernetes Engine e que cumpre os requisitos do Config Sync.

Crie uma RoleBinding

É necessário um RoleBinding para conceder autorizações ao RepoSync que criar neste guia. Para criar o RoleBinding, conclua os seguintes passos:

  1. Na origem raiz, declare uma configuração RoleBinding que conceda à conta de serviço SERVICE_ACCOUNT_NAME autorização para gerir objetos no espaço de nomes. O Config Sync cria automaticamente a conta de serviço SERVICE_ACCOUNT_NAME quando a configuração do RepoSync é sincronizada com o cluster.

    Um RoleBinding pode referenciar um Role no mesmo espaço de nomes. Em alternativa, um RoleBinding pode fazer referência a um ClusterRole e associar esse ClusterRole ao espaço de nomes do RoleBinding. Embora deva seguir o princípio do menor privilégio concedendo autorizações detalhadas a um Role definido pelo utilizador, pode definir um ClusterRole ou usar funções orientadas para o utilizador, e referenciar o mesmo ClusterRole em vários RoleBindings em diferentes espaços de nomes.

    Default ClusterRoles

    Guarde o manifesto RoleBinding que faz referência a um ClusterRole predefinido, por exemplo, admin ou edit, como FILENAME:

    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: syncs-repo
      namespace: NAMESPACE
    subjects:
    - kind: ServiceAccount
      name: SERVICE_ACCOUNT_NAME
      namespace: config-management-system
    roleRef:
      kind: ClusterRole
      name: CLUSTERROLE_NAME
      apiGroup: rbac.authorization.k8s.io
    

    Substitua o seguinte:

    • FILENAME: o nome do manifesto RoleBinding.
    • NAMESPACE: adicione o nome do seu espaço de nomes.
    • SERVICE_ACCOUNT_NAME: adicione o nome da conta de serviço do reconciliador. Se o nome do RepoSync for repo-sync, SERVICE_ACCOUNT_NAME é ns-reconciler-NAMESPACE. Caso contrário, é ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH. Por exemplo, se o nome do RepoSync for prod, o nome do SERVICE_ACCOUNT_NAME seria ns-reconciler-NAMESPACE-prod-4. O número inteiro 4 é usado como prod contém 4 carateres.
    • CLUSTERROLE_NAME: adicione o nome do ClusterRole predefinido.

    Funções definidas pelo utilizador

    Pode declarar um ClusterRole ou um Role concedendo uma lista de autorizações a cada recurso gerido pelo objeto RepoSync. Isto permite autorizações detalhadas. Consulte a secção Referir-se a recursos para ver mais detalhes.

    Por exemplo, o seguinte ClusterRole ou Role concede autorizações para gerir objetos Deployment e ServiceAccount:

    # ROOT_REPO/namespaces/NAMESPACE/sync-role.yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ROLE_KIND
    metadata:
      namespace: NAMESPACE # only set this field for a 'Role'
      name: RECONCILER_ROLE
    rules:
    # Update 'apiGroups' and 'resources' to reference actual resources managed by 'RepoSync'.
    - apiGroups: ["apps"]
      resources: ["deployments"]
      verbs: ["*"]
    - apiGroups: [""]
      resources: ["serviceaccounts"]
      verbs: ["*"]
    

    Guarde o manifesto RoleBinding que faz referência ao ClusterRole ou Role como FILENAME:

    # ROOT_REPO/namespaces/NAMESPACE/FILENAME.yaml
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: syncs-repo
      namespace: NAMESPACE
    subjects:
    - kind: ServiceAccount
      name: SERVICE_ACCOUNT_NAME
      namespace: config-management-system
    roleRef:
      kind: ROLE_KIND
      name: RECONCILER_ROLE
      apiGroup: rbac.authorization.k8s.io
    

    Substitua o seguinte:

    • FILENAME: o nome do manifesto RoleBinding.
    • ROLE_KIND: defina ClusterRole ou Role.
    • NAMESPACE: adicione o nome do seu espaço de nomes.
    • SERVICE_ACCOUNT_NAME: adicione o nome da conta de serviço do reconciliador. Se o nome do RepoSync for repo-sync, SERVICE_ACCOUNT_NAME é ns-reconciler-NAMESPACE. Caso contrário, é ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH. Por exemplo, se o nome do RepoSync for prod, o nome do SERVICE_ACCOUNT_NAME seria ns-reconciler-NAMESPACE-prod-4. O número inteiro 4 é usado como prod contém 4 carateres.
    • RECONCILER_ROLE: adicione o nome do ClusterRole ou Role.
  2. Aplique o RoleBinding:

    kubectl apply -f FILENAME
    

Limitações

Escolha o seu método de configuração preferido

Escolha entre um dos dois métodos para configurar as suas origens:

Controle as fontes numa origem de informação fidedigna principal

Para controlar origens com uma origem raiz, precisa de uma RoleBinding para autorizar o acesso. Se não tiver nenhum, consulte a secção Crie uma RoleBinding.

Controle as origens principais numa origem principal de informação fidedigna

O Config Sync suporta a sincronização a partir de mais de uma fonte de informação fidedigna. O administrador central pode usar uma fonte de informações fidedignas raiz para gerir todas as outras fontes. Uma vez que o Config Sync gere os objetos RootSync, este método impede quaisquer alterações locais às configurações RootSync no cluster.

Para usar este método, conclua as seguintes tarefas:

  1. Guarde um dos seguintes manifestos como root-sync.yaml. Use a versão do manifesto que corresponde ao tipo de origem das suas configurações.

    Git

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: git
      sourceFormat: ROOT_FORMAT
      git:
        repo: ROOT_REPOSITORY
        revision: ROOT_REVISION
        branch: ROOT_BRANCH
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        secretRef:
          name: ROOT_SECRET_NAME
        noSSLVerify: ROOT_NO_SSL_VERIFY
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • ROOT_SYNC_NAME: adicione o nome do objeto RootSync.
    • ROOT_FORMAT: adicione unstructured para usar um repositório não estruturado ou adicione hierarchy para usar um repositório hierárquico. Estes valores são sensíveis a maiúsculas e minúsculas. Este campo é opcional e o valor predefinido é hierarchy. Recomendamos que adicione unstructured, uma vez que este formato permite organizar as configurações da forma mais conveniente para si.
    • ROOT_REPOSITORY: adicione o URL do repositório Git a usar como repositório raiz. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa o protocolo HTTPS. Este campo é obrigatório.
    • ROOT_REVISION: adicione a revisão do Git (etiqueta ou hash) ou o ramo a partir do qual sincronizar. Este campo é opcional e o valor predefinido é HEAD. Quando usar um hash, tem de ser um hash completo e não uma forma abreviada.
    • ROOT_BRANCH: adicione a ramificação do repositório a partir da qual quer sincronizar. Este campo é opcional e o valor predefinido é master. Recomendamos que use o campo revision para especificar um nome de ramificação para simplificar. Se o campo revision e o campo branch forem especificados, revision tem prioridade sobre branch.
    • ROOT_DIRECTORY: adicione o caminho no repositório Git ao diretório de raiz que contém a configuração que quer sincronizar. Este campo é opcional e a predefinição é o diretório de raiz (/) do repositório.
    • ROOT_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • ssh: Use um par de chaves SSH
      • cookiefile: use um cookiefile
      • token: usar um token
      • gcpserviceaccount: use uma conta de serviço Google para aceder a um Cloud Source Repositories.
      • gcenode: use uma conta de serviço Google para aceder a um Cloud Source Repositories. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.

      Para mais informações sobre estes tipos de autenticação, consulte o artigo Conceder acesso só de leitura do Config Sync ao Git.

      Este campo é obrigatório.

    • ROOT_EMAIL: se adicionou gcpserviceaccount como o seu ROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, tem de adicionar a chave pública do segredo ao fornecedor do Git. Este campo é opcional.

    • ROOT_NO_SSL_VERIFY: para desativar a validação do certificado SSL, defina este campo como true. O valor predefinido é false.

    • ROOT_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor de Git tem de usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

      Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte Campos RootSync.

    Este manifesto cria um objeto RootSync que usa o Git como origem.

    OCI

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: oci
      sourceFormat: ROOT_FORMAT
      oci:
        image: ROOT_IMAGE
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • ROOT_SYNC_NAME: adicione o nome do objeto RootSync.
    • ROOT_FORMAT: adicione unstructured para usar um repositório não estruturado ou adicione hierarchy para usar um repositório hierárquico. Estes valores são sensíveis a maiúsculas e minúsculas. Este campo é opcional e o valor predefinido é hierarchy. Recomendamos que adicione unstructured, uma vez que este formato permite organizar as configurações da forma mais conveniente para si.
    • ROOT_IMAGE: o URL da imagem OCI a usar como repositório raiz, por exemplo, LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Por predefinição, a imagem é extraída da etiqueta latest, mas pode extrair imagens através de TAG ou DIGEST. Especifique TAG ou DIGEST em PACKAGE_NAME:
      • Para puxar por TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Para puxar por DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • ROOT_DIRECTORY: adicione o caminho no repositório ao diretório de raiz que contém a configuração que quer sincronizar. Este campo é opcional e a predefinição é o diretório de raiz (/) do repositório.
    • ROOT_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • gcenode: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.
      • gcpserviceaccount: use uma conta de serviço Google para aceder a uma imagem.

      Este campo é obrigatório.

    • ROOT_EMAIL: se adicionou gcpserviceaccount como o seu ROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor de OCI tem de estar a usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

    Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte Campos RootSync.

    Este manifesto cria um objeto RootSync que usa uma imagem OCI como origem.

    Leme

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: helm
      sourceFormat: ROOT_FORMAT
      helm:
        repo: ROOT_HELM_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: ROOT_AUTH_TYPE
          gcpServiceAccountEmail: ROOT_EMAIL
          secretRef:
            name: ROOT_SECRET_NAME
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • ROOT_SYNC_NAME: adicione o nome do objeto RootSync.
    • ROOT_FORMAT: adicione unstructured para usar um repositório não estruturado ou adicione hierarchy para usar um repositório hierárquico. Estes valores são sensíveis a maiúsculas e minúsculas. Este campo é opcional e o valor predefinido é hierarchy. Recomendamos que adicione unstructured, uma vez que este formato permite organizar as configurações da forma mais conveniente para si.
    • ROOT_HELM_REPOSITORY: o URL do repositório Helm a usar como repositório raiz. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa o protocolo HTTPS. Este campo é obrigatório.
    • HELM_CHART_NAME: adicione o nome do seu gráfico Helm. Este campo é obrigatório.
    • HELM_CHART_VERSION: a versão do seu gráfico. Este campo é opcional. Se não for especificado nenhum valor, é usada a versão mais recente.
    • HELM_RELEASE_NAME: o nome do lançamento do Helm. Este campo é opcional.
    • HELM_RELEASE_NAMESPACE: o espaço de nomes de destino para uma versão. Só define um espaço de nomes para recursos que contenham namespace: {{ .Release.Namespace }} nos respetivos modelos. Este campo é opcional. Se não for especificado nenhum valor, é usado o espaço de nomes predefinido config-management-system.
    • HELM_INCLUDE_CRDS: defina como true se quiser que o modelo Helm também gere uma CustomResourceDefinition. Este campo é opcional. Se não for especificado nenhum valor, a predefinição é false e não é gerado nenhum CRD.
    • VALUE: valores a usar em vez dos valores predefinidos que acompanham o gráfico Helm. Formate este campo da mesma forma que o ficheiro values.yaml do gráfico Helm. Este campo é opcional.
    • ROOT_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • token: use um nome de utilizador e uma palavra-passe para aceder a um repositório Helm privado.
      • gcenode: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.
      • gcpserviceaccount: use uma conta de serviço Google para aceder a uma imagem.

      Este campo é obrigatório.

    • ROOT_EMAIL: se adicionou gcpserviceaccount como o seu ROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: adicione o nome do seu segredo se token for o ROOT_AUTH_TYPE. Este campo é opcional.

    • ROOT_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor do Helm tem de usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

    Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte Campos RootSync.

    Este manifesto cria um objeto RootSync que usa o Helm como origem.

  2. Confirme as alterações à origem principal de dados fidedignos:

     git add .
     git commit -m 'Setting up a new root source of truth.'
     git push
    
  3. Pode repetir os passos acima se precisar de configurar várias origens principais. Também pode armazenar configurações de vários objetos RootSync numa origem principal de referência sincronizada por outro objeto RootSync para gerir vários objetos RootSync de forma centralizada no estilo GitOps.

Controle objetos com âmbito de espaço de nomes numa origem de verdade raiz

As fontes de informação fidedigna com âmbito do espaço de nomes podem ser geridas por uma fonte de informação fidedigna raiz. Uma vez que as origens com âmbito do espaço de nomes são geridas pela sincronização de configuração, este método impede quaisquer alterações locais às definições de origens com âmbito do espaço de nomes.

Para usar este método, conclua as seguintes tarefas:

  1. Na origem de dados principal, declare uma configuração namespace:

    # ROOT_SOURCE/namespaces/NAMESPACE/namespace.yaml
    apiVersion: v1
    kind: Namespace
    metadata:
      name: NAMESPACE
    

    Substitua NAMESPACE por um nome para o seu espaço de nomes.

  2. Na origem de informação fidedigna raiz, crie um dos seguintes objetos RepoSync no mesmo espaço de nomes. Use o manifesto que corresponde ao tipo de origem para as suas configurações:

    Git

    #ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: git
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      git:
        repo: NAMESPACE_REPOSITORY
        revision: NAMESPACE_REVISION
        branch: NAMESPACE_BRANCH
        dir: "NAMESPACE_DIRECTORY"
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        secretRef:
          name: NAMESPACE_SECRET_NAME
        noSSLVerify: NAMESPACE_NO_SSL_VERIFY
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • REPO_SYNC_NAME: adicione o nome do objeto RepoSync. O nome deve ser exclusivo no espaço de nomes.
    • NAMESPACE: adicione o nome do seu espaço de nomes.
    • NAMESPACE_REPOSITORY: adicione o URL do repositório Git a usar como repositório do espaço de nomes. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo, o https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa o protocolo HTTPS. Se não introduzir um protocolo, o URL é tratado como um URL HTTPS. Este campo é obrigatório.
    • NAMESPACE_REVISION: adicione a revisão de Git (etiqueta ou hash) ou a ramificação a partir da qual sincronizar. Este campo é opcional e o valor predefinido é HEAD. Quando usar um hash, tem de ser um hash completo e não uma forma abreviada.
    • NAMESPACE_BRANCH: adicione a ramificação do repositório a partir da qual quer sincronizar. Este campo é opcional e o valor predefinido é master. Recomendamos que use o campo revision para especificar um nome de ramificação para simplificar. Se o campo revision e o campo branch forem especificados, revision tem prioridade sobre branch.
    • NAMESPACE_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • ssh: Use um par de chaves SSH
      • cookiefile: use um cookiefile
      • token: usar um token
      • gcpserviceaccount: use uma conta de serviço Google para aceder a um repositório no Cloud Source Repositories.
      • gcenode: use uma conta de serviço Google para aceder a um repositório no Cloud Source Repositories. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.

        Para mais informações sobre estes tipos de autenticação, consulte o artigo Conceder acesso só de leitura do Config Sync ao Git.

      Este campo é obrigatório.

    • NAMESPACE_EMAIL: se adicionou gcpserviceaccount como o seu NAMESPACE_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: adicione o nome que pretende dar ao seu segredo. Este campo é opcional.

    • NAMESPACE_NO_SSL_VERIFY: para desativar a validação do certificado SSL, defina este campo como true. O valor predefinido é false.

    • NAMESPACE_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor de Git tem de usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

      Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte o artigo Campos do RepoSync.

    OCI

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: oci
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      oci:
        image: NAMESPACE_IMAGE
        dir: NAMESPACE_DIRECTORY
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • REPO_SYNC_NAME: adicione o nome do objeto RepoSync. O nome deve ser exclusivo no espaço de nomes.
    • NAMESPACE: adicione o nome do seu espaço de nomes.
    • NAMESPACE_IMAGE: o URL da imagem OCI a usar como origem do espaço de nomes, por exemplo, LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Por predefinição, a imagem é extraída da etiqueta latest, mas pode extrair imagens através de TAG ou DIGEST. Especifique TAG ou DIGEST no PACKAGE_NAME:

      • Para puxar por TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Para puxar por DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • NAMESPACE_DIRECTORY: adicione o caminho na origem ao diretório de raiz que contém a configuração que quer sincronizar. Este campo é opcional e a predefinição é o diretório de raiz (/) da origem.

    • NAMESPACE_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • gcenode: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.
      • gcpserviceaccount: use uma conta de serviço Google para aceder a uma imagem.

      Este campo é obrigatório.

    • NAMESPACE_EMAIL: se adicionou gcpserviceaccount como o seu ROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor de OCI tem de estar a usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

      Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte Campos RootSync.

    Leme

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: helm
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      helm:
        repo: NAMESPACE_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: NAMESPACE_AUTH_TYPE
          gcpServiceAccountEmail: NAMESPACE_EMAIL
          secretRef:
            name: NAMESPACE_SECRET_NAME
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • REPO_SYNC_NAME: adicione o nome do objeto RepoSync. O nome deve ser exclusivo no espaço de nomes.
    • NAMESPACE: adicione o nome do seu espaço de nomes.
    • NAMESPACE_REPOSITORY: o URL do repositório Helm a usar como repositório raiz. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa o protocolo HTTPS. Este campo é obrigatório.
    • HELM_CHART_NAME: adicione o nome do seu gráfico Helm. Este campo é obrigatório.
    • HELM_CHART_VERSION: a versão do seu gráfico. Este campo é opcional. Se não for especificado nenhum valor, é usada a versão mais recente.
    • HELM_RELEASE_NAME: o nome do lançamento do Helm. Este campo é opcional.
    • HELM_RELEASE_NAMESPACE: o espaço de nomes de destino para uma versão. Só define um espaço de nomes para recursos que contenham namespace: {{ .Release.Namespace }} nos respetivos modelos. Este campo é opcional. Se não for especificado nenhum valor, é usado o espaço de nomes predefinido config-management-system.
    • HELM_INCLUDE_CRDS: defina como true se quiser que o modelo Helm também gere uma CustomResourceDefinition. Este campo é opcional. Se não for especificado nenhum valor, a predefinição é false e não é gerado nenhum CRD.
    • VALUE: valores a usar em vez dos valores predefinidos que acompanham o gráfico Helm. Formate este campo da mesma forma que o ficheiro values.yaml do gráfico Helm. Este campo é opcional.
    • ROOT_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • token: use um nome de utilizador e uma palavra-passe para aceder a um repositório Helm privado.
      • gcenode: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.
      • gcpserviceaccount: use uma conta de serviço Google para aceder a uma imagem.

      Este campo é obrigatório.

    • NAMESPACE_EMAIL: se adicionou gcpserviceaccount como o seu ROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: adicione o nome do seu segredo se token for o ROOT_AUTH_TYPE. Este campo é opcional.

    • NAMESPACE_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor do Helm tem de usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

      Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte Campos RootSync.

  3. Se estiver a usar gcpserviceaccount como tipo de autorização e não tiver a Workload Identity Federation para o GKE ativada, tem de criar uma associação de políticas do IAM entre a conta de serviço do Kubernetes para cada espaço de nomes e a conta de serviço Google. Consulte o artigo Conceda acesso ao Git para ver instruções sobre como criar esta associação.

  4. Confirme as alterações à origem principal de dados fidedignos:

     git add .
     git commit -m 'Setting up a new namespace-scoped source of truth.'
     git push
    
  5. Se necessário, crie um segredo com base no seu método de autenticação preferido. Se usou none como o seu tipo de autenticação, pode ignorar este passo.

    O Secret tem de cumprir os seguintes requisitos:

    • Crie o segredo no mesmo espaço de nomes que o RepoSync.
    • O nome do segredo tem de corresponder ao nome spec.git.secretRef que definiu em repo-sync.yaml.
    • Tem de adicionar a chave pública do segredo ao fornecedor do Git.
  6. Para validar a configuração, use kubectl get num dos objetos na origem do espaço de nomes. Por exemplo:

    kubectl get rolebindings -n NAMESPACE
    
  7. Pode repetir os passos acima se precisar de configurar mais do que uma origem com âmbito do espaço de nomes.

Controle origens com âmbito de espaço de nomes numa origem com âmbito de espaço de nomes

O Config Sync suporta a sincronização a partir de mais de uma origem de informação fidedigna com âmbito de espaço de nomes por espaço de nomes. As fontes de informação fidedigna com âmbito de espaço de nomes podem ser geridas numa fonte de informação fidedigna com âmbito de espaço de nomes no mesmo espaço de nomes.

Para usar este método, conclua as seguintes tarefas:

  1. Na fonte de informação fidedigna com âmbito do espaço de nomes, crie um dos seguintes RepoSync objetos no mesmo espaço de nomes. Use o manifesto que corresponde ao tipo de origem para as suas configurações:

    Git

    #ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: git
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      git:
        repo: NAMESPACE_REPOSITORY
        revision: NAMESPACE_REVISION
        branch: NAMESPACE_BRANCH
        dir: "NAMESPACE_DIRECTORY"
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        secretRef:
          name: NAMESPACE_SECRET_NAME
        noSSLVerify: NAMESPACE_NO_SSL_VERIFY
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • REPO_SYNC_NAME: adicione o nome do objeto RepoSync. O nome deve ser exclusivo no espaço de nomes.
    • NAMESPACE: adicione o nome do seu espaço de nomes.
    • NAMESPACE_REPOSITORY: adicione o URL do repositório Git a usar como repositório do espaço de nomes. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo, o https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa o protocolo HTTPS. Se não introduzir um protocolo, o URL é tratado como um URL HTTPS. Este campo é obrigatório.
    • NAMESPACE_REVISION: adicione a revisão de Git (etiqueta ou hash) ou a ramificação a partir da qual sincronizar. Este campo é opcional e o valor predefinido é HEAD. Quando usar um hash, tem de ser um hash completo e não uma forma abreviada.
    • NAMESPACE_BRANCH: adicione a ramificação do repositório a partir da qual quer sincronizar. Este campo é opcional e o valor predefinido é master. Recomendamos que use o campo revision para especificar um nome de ramificação para simplificar. Se o campo revision e o campo branch forem especificados, revision tem prioridade sobre branch.
    • NAMESPACE_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • ssh: Use um par de chaves SSH
      • cookiefile: use um cookiefile
      • token: usar um token
      • gcpserviceaccount: use uma conta de serviço Google para aceder a um repositório no Cloud Source Repositories.
      • gcenode: use uma conta de serviço Google para aceder a um repositório no Cloud Source Repositories. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.

        Para mais informações sobre estes tipos de autenticação, consulte o artigo Conceder acesso só de leitura do Config Sync ao Git.

      Este campo é obrigatório.

    • NAMESPACE_EMAIL: se adicionou gcpserviceaccount como o seu NAMESPACE_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: adicione o nome que pretende dar ao seu segredo. Este campo é opcional.

    • NAMESPACE_NO_SSL_VERIFY: para desativar a validação do certificado SSL, defina este campo como true. O valor predefinido é false.

    • NAMESPACE_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor de Git tem de usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

      Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte o artigo Campos do RepoSync.

    OCI

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: oci
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      oci:
        image: NAMESPACE_IMAGE
        dir: NAMESPACE_DIRECTORY
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • REPO_SYNC_NAME: adicione o nome do objeto RepoSync. O nome deve ser exclusivo no espaço de nomes.
    • NAMESPACE: adicione o nome do seu espaço de nomes.
    • NAMESPACE_IMAGE: o URL da imagem OCI a usar como origem do espaço de nomes, por exemplo, LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Por predefinição, a imagem é extraída da etiqueta latest, mas pode extrair imagens através de TAG ou DIGEST. Especifique TAG ou DIGEST no PACKAGE_NAME:

      • Para puxar por TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Para puxar por DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • NAMESPACE_DIRECTORY: adicione o caminho na origem ao diretório de raiz que contém a configuração que quer sincronizar. Este campo é opcional e a predefinição é o diretório de raiz (/) da origem.

    • NAMESPACE_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • gcenode: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.
      • gcpserviceaccount: use uma conta de serviço Google para aceder a uma imagem.

      Este campo é obrigatório.

    • NAMESPACE_EMAIL: se adicionou gcpserviceaccount como o seu ROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor de OCI tem de estar a usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

      Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte Campos RootSync.

    Leme

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: helm
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      helm:
        repo: NAMESPACE_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: NAMESPACE_AUTH_TYPE
          gcpServiceAccountEmail: NAMESPACE_EMAIL
          secretRef:
            name: NAMESPACE_SECRET_NAME
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • REPO_SYNC_NAME: adicione o nome do objeto RepoSync. O nome deve ser exclusivo no espaço de nomes.
    • NAMESPACE: adicione o nome do seu espaço de nomes.
    • NAMESPACE_REPOSITORY: o URL do repositório Helm a usar como repositório raiz. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa o protocolo HTTPS. Este campo é obrigatório.
    • HELM_CHART_NAME: adicione o nome do seu gráfico Helm. Este campo é obrigatório.
    • HELM_CHART_VERSION: a versão do seu gráfico. Este campo é opcional. Se não for especificado nenhum valor, é usada a versão mais recente.
    • HELM_RELEASE_NAME: o nome do lançamento do Helm. Este campo é opcional.
    • HELM_RELEASE_NAMESPACE: o espaço de nomes de destino para uma versão. Só define um espaço de nomes para recursos que contenham namespace: {{ .Release.Namespace }} nos respetivos modelos. Este campo é opcional. Se não for especificado nenhum valor, é usado o espaço de nomes predefinido config-management-system.
    • HELM_INCLUDE_CRDS: defina como true se quiser que o modelo Helm também gere uma CustomResourceDefinition. Este campo é opcional. Se não for especificado nenhum valor, a predefinição é false e não é gerado nenhum CRD.
    • VALUE: valores a usar em vez dos valores predefinidos que acompanham o gráfico Helm. Formate este campo da mesma forma que o ficheiro values.yaml do gráfico Helm. Este campo é opcional.
    • ROOT_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • token: use um nome de utilizador e uma palavra-passe para aceder a um repositório Helm privado.
      • gcenode: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.
      • gcpserviceaccount: use uma conta de serviço Google para aceder a uma imagem.

      Este campo é obrigatório.

    • NAMESPACE_EMAIL: se adicionou gcpserviceaccount como o seu ROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: adicione o nome do seu segredo se token for o ROOT_AUTH_TYPE. Este campo é opcional.

    • NAMESPACE_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor do Helm tem de usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

      Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte Campos RootSync.

  2. Se estiver a usar gcpserviceaccount como tipo de autorização e não tiver a Workload Identity Federation para o GKE ativada, tem de criar uma associação de políticas do IAM entre a conta de serviço do Kubernetes para cada espaço de nomes e a conta de serviço Google. Consulte o artigo Conceda acesso ao Git para ver instruções sobre como criar esta associação.

  3. Confirme as alterações à origem principal de dados fidedignos:

     git add .
     git commit -m 'Setting up a new namespace-scoped source of truth.'
     git push
    
  4. Se necessário, crie um segredo com base no seu método de autenticação preferido. Se usou none como o seu tipo de autenticação, pode ignorar este passo.

    O Secret tem de cumprir os seguintes requisitos:

    • Crie o segredo no mesmo espaço de nomes que o RepoSync.
    • O nome do segredo tem de corresponder ao nome spec.git.secretRef que definiu em repo-sync.yaml.
    • Tem de adicionar a chave pública do segredo ao fornecedor do Git.
  5. Para validar a configuração, use kubectl get num dos objetos na fonte de informação fidedigna com âmbito do espaço de nomes. Por exemplo:

    kubectl get rolebindings -n NAMESPACE
    
  6. Pode repetir os passos acima se precisar de configurar mais de uma origem com âmbito do espaço de nomes.

Controle uma fonte de verdade com a API Kubernetes

Neste método, o administrador central delega a declaração de outros objetos RootSync a outros administradores. Para objetos RepoSync, o administrador central apenas declara o espaço de nomes na fonte prioritária raiz e delega a declaração do objeto RepoSync ao operador da aplicação.

Controle mais do que uma fonte de informação fidedigna raiz

Outros administradores podem controlar uma origem de dados principal concluindo as seguintes tarefas:

  1. Guarde um dos seguintes manifestos como root-sync.yaml. Use a versão do manifesto que corresponde ao tipo de origem das suas configurações.

    Git

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: git
      sourceFormat: ROOT_FORMAT
      git:
        repo: ROOT_REPOSITORY
        revision: ROOT_REVISION
        branch: ROOT_BRANCH
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        secretRef:
          name: ROOT_SECRET_NAME
        noSSLVerify: ROOT_NO_SSL_VERIFY
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • ROOT_SYNC_NAME: adicione o nome do objeto RootSync.
    • ROOT_FORMAT: adicione unstructured para usar um repositório não estruturado ou adicione hierarchy para usar um repositório hierárquico. Estes valores são sensíveis a maiúsculas e minúsculas. Este campo é opcional e o valor predefinido é hierarchy. Recomendamos que adicione unstructured, uma vez que este formato permite organizar as configurações da forma mais conveniente para si.
    • ROOT_REPOSITORY: adicione o URL do repositório Git a usar como repositório raiz. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa o protocolo HTTPS. Este campo é obrigatório.
    • ROOT_REVISION: adicione a revisão do Git (etiqueta ou hash) ou o ramo a partir do qual sincronizar. Este campo é opcional e o valor predefinido é HEAD. Quando usar um hash, tem de ser um hash completo e não uma forma abreviada.
    • ROOT_BRANCH: adicione a ramificação do repositório a partir da qual quer sincronizar. Este campo é opcional e o valor predefinido é master. Recomendamos que use o campo revision para especificar um nome de ramificação para simplificar. Se o campo revision e o campo branch forem especificados, revision tem prioridade sobre branch.
    • ROOT_DIRECTORY: adicione o caminho no repositório Git ao diretório de raiz que contém a configuração que quer sincronizar. Este campo é opcional e a predefinição é o diretório de raiz (/) do repositório.
    • ROOT_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • ssh: Use um par de chaves SSH
      • cookiefile: use um cookiefile
      • token: usar um token
      • gcpserviceaccount: use uma conta de serviço Google para aceder a um Cloud Source Repositories.
      • gcenode: use uma conta de serviço Google para aceder a um Cloud Source Repositories. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.

      Para mais informações sobre estes tipos de autenticação, consulte o artigo Conceder acesso só de leitura do Config Sync ao Git.

      Este campo é obrigatório.

    • ROOT_EMAIL: se adicionou gcpserviceaccount como o seu ROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, tem de adicionar a chave pública do segredo ao fornecedor do Git. Este campo é opcional.

    • ROOT_NO_SSL_VERIFY: para desativar a validação do certificado SSL, defina este campo como true. O valor predefinido é false.

    • ROOT_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor de Git tem de usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

      Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte Campos RootSync.

    Este manifesto cria um objeto RootSync que usa o Git como origem.

    OCI

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: oci
      sourceFormat: ROOT_FORMAT
      oci:
        image: ROOT_IMAGE
        dir: ROOT_DIRECTORY
        auth: ROOT_AUTH_TYPE
        gcpServiceAccountEmail: ROOT_EMAIL
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • ROOT_SYNC_NAME: adicione o nome do objeto RootSync.
    • ROOT_FORMAT: adicione unstructured para usar um repositório não estruturado ou adicione hierarchy para usar um repositório hierárquico. Estes valores são sensíveis a maiúsculas e minúsculas. Este campo é opcional e o valor predefinido é hierarchy. Recomendamos que adicione unstructured, uma vez que este formato permite organizar as configurações da forma mais conveniente para si.
    • ROOT_IMAGE: o URL da imagem OCI a usar como repositório raiz, por exemplo, LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Por predefinição, a imagem é extraída da etiqueta latest, mas pode extrair imagens através de TAG ou DIGEST. Especifique TAG ou DIGEST em PACKAGE_NAME:
      • Para puxar por TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Para puxar por DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • ROOT_DIRECTORY: adicione o caminho no repositório ao diretório de raiz que contém a configuração que quer sincronizar. Este campo é opcional e a predefinição é o diretório de raiz (/) do repositório.
    • ROOT_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • gcenode: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.
      • gcpserviceaccount: use uma conta de serviço Google para aceder a uma imagem.

      Este campo é obrigatório.

    • ROOT_EMAIL: se adicionou gcpserviceaccount como o seu ROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor de OCI tem de estar a usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

    Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte Campos RootSync.

    Este manifesto cria um objeto RootSync que usa uma imagem OCI como origem.

    Leme

    # root-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: ROOT_SYNC_NAME
      namespace: config-management-system
    spec:
      sourceType: helm
      sourceFormat: ROOT_FORMAT
      helm:
        repo: ROOT_HELM_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: ROOT_AUTH_TYPE
          gcpServiceAccountEmail: ROOT_EMAIL
          secretRef:
            name: ROOT_SECRET_NAME
        caCertSecretRef:
          name: ROOT_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • ROOT_SYNC_NAME: adicione o nome do objeto RootSync.
    • ROOT_FORMAT: adicione unstructured para usar um repositório não estruturado ou adicione hierarchy para usar um repositório hierárquico. Estes valores são sensíveis a maiúsculas e minúsculas. Este campo é opcional e o valor predefinido é hierarchy. Recomendamos que adicione unstructured, uma vez que este formato permite organizar as configurações da forma mais conveniente para si.
    • ROOT_HELM_REPOSITORY: o URL do repositório Helm a usar como repositório raiz. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa o protocolo HTTPS. Este campo é obrigatório.
    • HELM_CHART_NAME: adicione o nome do seu gráfico Helm. Este campo é obrigatório.
    • HELM_CHART_VERSION: a versão do seu gráfico. Este campo é opcional. Se não for especificado nenhum valor, é usada a versão mais recente.
    • HELM_RELEASE_NAME: o nome do lançamento do Helm. Este campo é opcional.
    • HELM_RELEASE_NAMESPACE: o espaço de nomes de destino para uma versão. Só define um espaço de nomes para recursos que contenham namespace: {{ .Release.Namespace }} nos respetivos modelos. Este campo é opcional. Se não for especificado nenhum valor, é usado o espaço de nomes predefinido config-management-system.
    • HELM_INCLUDE_CRDS: defina como true se quiser que o modelo Helm também gere uma CustomResourceDefinition. Este campo é opcional. Se não for especificado nenhum valor, a predefinição é false e não é gerado nenhum CRD.
    • VALUE: valores a usar em vez dos valores predefinidos que acompanham o gráfico Helm. Formate este campo da mesma forma que o ficheiro values.yaml do gráfico Helm. Este campo é opcional.
    • ROOT_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • token: use um nome de utilizador e uma palavra-passe para aceder a um repositório Helm privado.
      • gcenode: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.
      • gcpserviceaccount: use uma conta de serviço Google para aceder a uma imagem.

      Este campo é obrigatório.

    • ROOT_EMAIL: se adicionou gcpserviceaccount como o seu ROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • ROOT_SECRET_NAME: adicione o nome do seu segredo se token for o ROOT_AUTH_TYPE. Este campo é opcional.

    • ROOT_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor do Helm tem de usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

    Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte Campos RootSync.

    Este manifesto cria um objeto RootSync que usa o Helm como origem.

  2. Aplique as alterações:

    kubectl apply -f root-sync.yaml
    
  3. Pode repetir os passos acima se precisar de configurar mais do que uma origem de dados principal.

Controle as fontes de verdade com âmbito do espaço de nomes

Tarefas de administrador central

O administrador central conclui as seguintes tarefas:

  1. Na origem de informações reais raiz, declare uma configuração namespace para origens com âmbito do espaço de nomes.

    # ROOT_REPO/namespaces/NAMESPACE/namespace.yaml
     apiVersion: v1
     kind: Namespace
     metadata:
       name: NAMESPACE
    

    Substitua NAMESPACE por um nome para o seu espaço de nomes.

  2. Na origem de dados principal, declare um RoleBinding para conceder autorizações aos operadores da aplicação. Use a prevenção de escalonamento de RBAC para garantir que o operador da aplicação não pode aplicar posteriormente uma associação de funções com permissões não concedidas por esta associação de funções.

    Para declarar o RoleBinding, crie o seguinte manifesto:

    # ROOT_REPO/namespaces/NAMESPACE/operator-rolebinding.yaml
     kind: RoleBinding
     # Add RBAC escalation prevention
     apiVersion: rbac.authorization.k8s.io/v1
     metadata:
       name: operator
       namespace: NAMESPACE
     subjects:
     - kind: User
       name: USERNAME
       apiGroup: rbac.authorization.k8s.io
     roleRef:
       kind: ClusterRole
       name: OPERATOR_ROLE
       apiGroup: rbac.authorization.k8s.io
    

    Substitua o seguinte:

    • NAMESPACE: adicione o espaço de nomes que criou na origem de informações verdadeiras raiz.
    • USERNAME: adicione o nome de utilizador do operador da aplicação.
    • OPERATOR_ROLE: como administrador central, pode definir OPERATOR_ROLE para aplicar os tipos de configurações que podem ser sincronizados a partir da origem com âmbito do espaço de nomes. Pode escolher uma das seguintes funções:

      • Um ClusterRole predefinido:

        • admin
        • edit

        Para saber mais, consulte o artigo Funções viradas para o utilizador.

      • Um ClusterRole ou uma função definida pelo utilizador declarada na origem de verdade raiz. Esta função permite autorizações detalhadas.

  3. Confirme as alterações à origem principal de dados fidedignos:

     git add .
     git commit -m 'Setting up new namespace-scoped source of truth.'
     git push
    

Tarefas do operador de aplicações

O operador da aplicação pode controlar as origens com âmbito do espaço de nomes concluindo as seguintes tarefas:

  1. Declare uma configuração RoleBinding que conceda autorização à conta de serviço SERVICE_ACCOUNT_NAME aprovisionada automaticamente para gerir objetos no espaço de nomes. O Config Sync cria automaticamente a conta de serviço SERVICE_ACCOUNT_NAME quando a configuração RepoSync é sincronizada com o cluster.

    Para declarar o RoleBinding, crie o seguinte manifesto:

    # sync-rolebinding.yaml
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: syncs-repo
      namespace: NAMESPACE
    subjects:
    - kind: ServiceAccount
      name: SERVICE_ACCOUNT_NAME
      namespace: config-management-system
    roleRef:
      kind: ClusterRole
      name: RECONCILER_ROLE
      apiGroup: rbac.authorization.k8s.io
    

    Substitua o seguinte:

    • NAMESPACE: adicione o espaço de nomes que criou na origem de informações verdadeiras raiz.
    • SERVICE_ACCOUNT_NAME: adicione o nome da conta de serviço do reconciliador. Se o nome do RepoSync for repo-sync, SERVICE_ACCOUNT_NAME é ns-reconciler-NAMESPACE. Caso contrário, é ns-reconciler-NAMESPACE-REPO_SYNC_NAME.
    • RECONCILER_ROLE: como operador da aplicação, pode definir RECONCILER_ROLE para aplicar que tipos de configuração podem ser sincronizados a partir da origem com âmbito do espaço de nomes. Só pode restringir ainda mais o conjunto de autorizações que o administrador central lhe concedeu. Como resultado, esta função não pode ser mais permissiva do que a OPERATOR_ROLE que o administrador central declarou na secção anterior.
  2. Aplique a configuração RoleBinding:

    kubectl apply -f sync-rolebinding.yaml
    
  3. Se necessário, crie um segredo com base no seu método de autenticação preferido. Se usou none como o seu tipo de autenticação, pode ignorar este passo.

    O segredo tem de cumprir os seguintes requisitos:

    • Crie o segredo no mesmo espaço de nomes que o RepoSync.
    • O nome do segredo tem de corresponder ao nome spec.git.secretRef que definiu em root-sync.yaml.
    • Tem de adicionar a chave pública do segredo ao fornecedor do Git.
  4. Declare uma configuração de RepoSync:

    Git

    #ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: git
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      git:
        repo: NAMESPACE_REPOSITORY
        revision: NAMESPACE_REVISION
        branch: NAMESPACE_BRANCH
        dir: "NAMESPACE_DIRECTORY"
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        secretRef:
          name: NAMESPACE_SECRET_NAME
        noSSLVerify: NAMESPACE_NO_SSL_VERIFY
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • REPO_SYNC_NAME: adicione o nome do objeto RepoSync. O nome deve ser exclusivo no espaço de nomes.
    • NAMESPACE: adicione o nome do seu espaço de nomes.
    • NAMESPACE_REPOSITORY: adicione o URL do repositório Git a usar como repositório do espaço de nomes. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo, o https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa o protocolo HTTPS. Se não introduzir um protocolo, o URL é tratado como um URL HTTPS. Este campo é obrigatório.
    • NAMESPACE_REVISION: adicione a revisão de Git (etiqueta ou hash) ou a ramificação a partir da qual sincronizar. Este campo é opcional e o valor predefinido é HEAD. Quando usar um hash, tem de ser um hash completo e não uma forma abreviada.
    • NAMESPACE_BRANCH: adicione a ramificação do repositório a partir da qual quer sincronizar. Este campo é opcional e o valor predefinido é master. Recomendamos que use o campo revision para especificar um nome de ramificação para simplificar. Se o campo revision e o campo branch forem especificados, revision tem prioridade sobre branch.
    • NAMESPACE_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • ssh: Use um par de chaves SSH
      • cookiefile: use um cookiefile
      • token: usar um token
      • gcpserviceaccount: use uma conta de serviço Google para aceder a um repositório no Cloud Source Repositories.
      • gcenode: use uma conta de serviço Google para aceder a um repositório no Cloud Source Repositories. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.

        Para mais informações sobre estes tipos de autenticação, consulte o artigo Conceder acesso só de leitura do Config Sync ao Git.

      Este campo é obrigatório.

    • NAMESPACE_EMAIL: se adicionou gcpserviceaccount como o seu NAMESPACE_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: adicione o nome que pretende dar ao seu segredo. Este campo é opcional.

    • NAMESPACE_NO_SSL_VERIFY: para desativar a validação do certificado SSL, defina este campo como true. O valor predefinido é false.

    • NAMESPACE_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor de Git tem de usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

      Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte o artigo Campos do RepoSync.

    OCI

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: oci
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      oci:
        image: NAMESPACE_IMAGE
        dir: NAMESPACE_DIRECTORY
        auth: NAMESPACE_AUTH_TYPE
        gcpServiceAccountEmail: NAMESPACE_EMAIL
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • REPO_SYNC_NAME: adicione o nome do objeto RepoSync. O nome deve ser exclusivo no espaço de nomes.
    • NAMESPACE: adicione o nome do seu espaço de nomes.
    • NAMESPACE_IMAGE: o URL da imagem OCI a usar como origem do espaço de nomes, por exemplo, LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Por predefinição, a imagem é extraída da etiqueta latest, mas pode extrair imagens através de TAG ou DIGEST. Especifique TAG ou DIGEST no PACKAGE_NAME:

      • Para puxar por TAG: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Para puxar por DIGEST: LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • NAMESPACE_DIRECTORY: adicione o caminho na origem ao diretório de raiz que contém a configuração que quer sincronizar. Este campo é opcional e a predefinição é o diretório de raiz (/) da origem.

    • NAMESPACE_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • gcenode: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.
      • gcpserviceaccount: use uma conta de serviço Google para aceder a uma imagem.

      Este campo é obrigatório.

    • NAMESPACE_EMAIL: se adicionou gcpserviceaccount como o seu ROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor de OCI tem de estar a usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

      Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte Campos RootSync.

    Leme

    # ROOT_SOURCE/namespaces/NAMESPACE/repo-sync.yaml
    apiVersion: configsync.gke.io/v1beta1
    kind: RepoSync
    metadata:
      name: REPO_SYNC_NAME
      namespace: NAMESPACE
    spec:
      sourceType: helm
      # Since this is for a namespace repository, the format is unstructured
      sourceFormat: unstructured
      helm:
        repo: NAMESPACE_REPOSITORY
        chart: HELM_CHART_NAME
        version: HELM_CHART_VERSION
        releaseName: HELM_RELEASE_NAME
        namespace: HELM_RELEASE_NAMESPACE
        values:
          foo:
            bar: VALUE_1
          baz:
          - qux: VALUE_2
            xyz: VALUE_3
        includeCRDs: HELM_INCLUDE_CRDS
        auth: NAMESPACE_AUTH_TYPE
          gcpServiceAccountEmail: NAMESPACE_EMAIL
          secretRef:
            name: NAMESPACE_SECRET_NAME
        caCertSecretRef:
          name: NAMESPACE_CA_CERT_SECRET_NAME
    

    Substitua o seguinte:

    • REPO_SYNC_NAME: adicione o nome do objeto RepoSync. O nome deve ser exclusivo no espaço de nomes.
    • NAMESPACE: adicione o nome do seu espaço de nomes.
    • NAMESPACE_REPOSITORY: o URL do repositório Helm a usar como repositório raiz. Pode introduzir URLs através do protocolo HTTPS ou SSH. Por exemplo, https://github.com/GoogleCloudPlatform/anthos-config-management-samples usa o protocolo HTTPS. Este campo é obrigatório.
    • HELM_CHART_NAME: adicione o nome do seu gráfico Helm. Este campo é obrigatório.
    • HELM_CHART_VERSION: a versão do seu gráfico. Este campo é opcional. Se não for especificado nenhum valor, é usada a versão mais recente.
    • HELM_RELEASE_NAME: o nome do lançamento do Helm. Este campo é opcional.
    • HELM_RELEASE_NAMESPACE: o espaço de nomes de destino para uma versão. Só define um espaço de nomes para recursos que contenham namespace: {{ .Release.Namespace }} nos respetivos modelos. Este campo é opcional. Se não for especificado nenhum valor, é usado o espaço de nomes predefinido config-management-system.
    • HELM_INCLUDE_CRDS: defina como true se quiser que o modelo Helm também gere uma CustomResourceDefinition. Este campo é opcional. Se não for especificado nenhum valor, a predefinição é false e não é gerado nenhum CRD.
    • VALUE: valores a usar em vez dos valores predefinidos que acompanham o gráfico Helm. Formate este campo da mesma forma que o ficheiro values.yaml do gráfico Helm. Este campo é opcional.
    • ROOT_AUTH_TYPE: adicione um dos seguintes tipos de autenticação:

      • none: Não usar autenticação
      • token: use um nome de utilizador e uma palavra-passe para aceder a um repositório Helm privado.
      • gcenode: use a conta de serviço predefinida do Compute Engine para aceder a uma imagem no Artifact Registry. Selecione esta opção apenas se a Workload Identity Federation para o GKE não estiver ativada no seu cluster.
      • gcpserviceaccount: use uma conta de serviço Google para aceder a uma imagem.

      Este campo é obrigatório.

    • NAMESPACE_EMAIL: se adicionou gcpserviceaccount como o seu ROOT_AUTH_TYPE, adicione o endereço de email da conta de serviço Google. Por exemplo, acm@PROJECT_ID.iam.gserviceaccount.com.

    • NAMESPACE_SECRET_NAME: adicione o nome do seu segredo se token for o ROOT_AUTH_TYPE. Este campo é opcional.

    • NAMESPACE_CA_CERT_SECRET_NAME: adicione o nome do seu segredo. Se este campo estiver definido, o seu fornecedor do Helm tem de usar um certificado emitido por esta autoridade de certificação (AC). O Secret tem de conter o certificado da AC numa chave com o nome cert. Este campo é opcional.

      Para saber como configurar o objeto Secret para o certificado da AC, consulte o artigo Configurar autoridade de certificação

    Para uma explicação dos campos e uma lista completa dos campos que pode adicionar ao campo spec, consulte Campos RootSync.

  5. Aplique a configuração RepoSync:

    kubectl apply -f repo-sync.yaml
    
  6. Para validar a configuração, use kubectl get num dos objetos na origem com âmbito do espaço de nomes. Por exemplo:

    kubectl get rolebindings -n NAMESPACE
    
  7. Pode repetir os passos acima se precisar de configurar várias origens de dados fidedignos ao nível do espaço de nomes .

Valide o estado de sincronização da fonte de dados fidedigna

Pode usar o comando nomos status para inspecionar o estado de sincronização da fonte de informações fidedignas:

nomos status

Deverá ver uma saída semelhante ao seguinte exemplo:

my_managed_cluster-1
  --------------------
  <root>   git@github.com:foo-corp/acme/admin@main
  SYNCED   f52a11e4
  --------------------
  bookstore  git@github.com:foo-corp/acme/bookstore@v1
  SYNCED     34d1a8c8

Neste exemplo de saída, a origem com âmbito do espaço de nomes, neste caso, um repositório Git, está configurada para um espaço de nomes denominado bookstore.

Valide a instalação do RootSync

Quando cria um objeto RootSync, o Config Sync cria um reconciliador com o prefixo root-reconciler. Um reconciliador é um pod implementado como uma implementação. Sincroniza manifestos de uma fonte de informação fidedigna para um cluster.

Pode verificar se o objeto RootSync está a funcionar corretamente verificando o estado da implementação do reconciliador de raiz:

kubectl get -n config-management-system deployment \
    -l configsync.gke.io/sync-name=ROOT_SYNC_NAME

Substitua ROOT_SYNC_NAME pelo nome do RootSync.

Deverá ver uma saída semelhante ao seguinte exemplo:

NAME              READY   UP-TO-DATE   AVAILABLE   AGE
root-reconciler   1/1     1            1           3h42m

Para outras formas de explorar o estado do seu objeto RootSync, consulte o artigo Monitorizar objetos RootSync e RepoSync.

Valide a instalação do RepoSync

Quando cria um objeto RepoSync, o Config Sync cria um reconciliador com o prefixo ns-reconciler-NAMESPACE, em que NAMESPACE é o espaço de nomes no qual criou o objeto RepoSync.

Pode verificar se o objeto RepoSync está a funcionar corretamente verificando o estado da implementação do reconciliador do espaço de nomes:

kubectl get -n config-management-system deployment \
  -l configsync.gke.io/sync-name=REPO_SYNC_NAME \
  -l configsync.gke.io/sync-namespace=NAMESPACE

Substitua REPO_SYNC_NAME pelo nome do RepoSync e substitua NAMESPACE pelo espaço de nomes no qual criou a sua origem de verdade com âmbito do espaço de nomes.

Para outras formas de explorar o estado do objeto RepoSync, consulte o artigo Explorar os objetos RootSync e RepoSync.

Remova uma fonte de informação fidedigna

Selecione o separador Método de controlo central ou Método da API Kubernetes para ver as instruções relevantes.

Método de controlo central

Se usou o método Controlar fontes de informações fidedignas numa fonte de informações fidedignas raiz, um administrador central pode seguir os dois passos seguintes para remover uma fonte de informações fidedignas:

  1. Decida se quer eliminar ou manter os recursos geridos através dos objetos RootSync e RepoSync.

    • Para eliminar todos os recursos que os seus objetos RootSync ou RepoSync gerem, sincronize o seu objeto RootSync ou RepoSync com uma origem vazia. Por exemplo, um repositório do GitHub sem configurações. Se o seu objeto RootSync ou RepoSync contiver outro objeto RootSync ou RepoSync, o RootSync ou o RepoSync interno tem de ser sincronizado primeiro com um repositório Git vazio.

    • Se ativou o webhook e quer manter os seus recursos, desative a prevenção de desvio para recursos abandonados. Se não ativou o webhook, não tem de realizar passos adicionais para manter os seus recursos.

  2. Remova o objeto RootSync ou RepoSync da fonte de verdade.

Método da API Kubernetes

Se usou o método Controle as fontes prioritárias com âmbito do espaço de nomes com a API Kubernetes, os operadores de aplicações podem usar os seguintes passos para remover uma fonte prioritária com âmbito do espaço de nomes:

  1. Decida se quer eliminar ou manter os recursos geridos através dos objetos RootSync e RepoSync.

    • Para eliminar todos os recursos que os seus objetos RootSync ou RepoSync gerem, sincronize o seu objeto RootSync ou RepoSync com uma origem vazia. Por exemplo, um repositório do GitHub sem configurações. Se o seu objeto RootSync ou RepoSync contiver outro objeto RootSync ou RepoSync, o RootSync ou o RepoSync interno tem de ser sincronizado primeiro com um repositório Git vazio.

    • Se ativou o webhook e quiser manter os seus recursos, desative a prevenção de desvio para recursos abandonados. Se não ativou o webhook, não tem de realizar passos adicionais para manter os seus recursos.

  2. Elimine o objeto RootSync ou RepoSync executando o seguinte comando:

    kubectl delete -f FILE_NAME
    

    Substitua FILE_NAME pelo nome do ficheiro de configuração do RootSync ou do RepoSync. Por exemplo, root-sync.yaml.

O que se segue?