Come posso risolvere l’errore “Devi aver effettuato l'accesso al server (Non autorizzato)” quando ci si connette a un cluster Amazon EKS da CodeBuild?

Ultimo aggiornamento: 04-11-2021

Sto cercando di connettermi a un cluster Amazon Elastic Kubernetes Service (Amazon EKS) da AWS CodeBuild utilizzando il ruolo di servizio CodeBuild. Perché i miei comandi kubectl restituiscono l’errore “Devi aver effettuato l'accesso al server (Non autorizzato)” e come posso risolvere il problema?

Breve descrizione

AWS Identity and Access Management (IAM) Authenticator non consente un percorso nel ruolo Amazon Resource Name (ARN) utilizzato nella mappa di configurazione. Se il ruolo ARN (rolearn) in aws-auth ConfigMap include un percorso, Amazon EKS restituisce il seguente errore:

“Devi aver effettuato l'accesso al server (Non autorizzato)”

L’ARN del ruolo di servizio CodeBuild include il seguente percorso: /service-role. Quando specifichi il valore di rolearn in aws-auth ConfigMap, devi rimuovere il percorso /service-role o qualsiasi altro percorso, se utilizzi un altro ruolo. Per ulteriori informazioni, consulta Gestione degli utenti o dei ruoli IAM per il cluster.

Se ricevi errori dopo avere rimosso qualsiasi percorso dal ruolo ARN in aws-auth ConfigMap, segui le istruzioni nel seguente articolo: In che modo posso risolvere un errore del server non autorizzato quando mi connetto al server API di Amazon EKS?

Risoluzione

Identifica l'ARN del tuo ruolo di servizio CodeBuild e rimuovi il percorso /service-role

1.    Apri la console CodeBuild.

2.    Nel pannello di navigazione a sinistra, scegli Rules (Regole). Quindi, scegli Build projects (Progetti di compilazione).

3.    Seleziona il nome del tuo progetto. Quindi, scegli Build details (Dettagli di compilazione).

4.    Nella sezione Ambiente, nel riquadro Build details (Dettagli di compilazione), copia l’ARN del ruolo di servizio CodeBuild.

5.    In un editor di testo, incolla l’ARN del ruolo di servizio CodeBuild e rimuovi il percorso /service-role. Quindi, copia l'ARN modificato.

Esempio di ARN del ruolo di servizio CodeBuild

arn:aws:iam::123456789012:role/service-role/codebuild-project-service-role

Esempio ARN del ruolo di servizio CodeBuild con il percorso /service-role rimosso

arn:aws:iam::123456789012:role/codebuild-project-service-role

Aggiungi l'ARN del ruolo del servizio CodeBuild modificato ad aws-auth ConfigMap

1.    Per modificare aws-auth ConfigMap in un editor di testo, è necessario che il proprietario o l'amministratore del cluster esegua il comando seguente:

Nota: puoi eseguire il comando dal tuo computer locale o da un'istanza Amazon Elastic Compute Cloud (Amazon EC2) che ha accesso al cluster EKS. L'utente che ha creato il cluster ha accesso al cluster per impostazione predefinita.

$ kubectl edit -n kube-system cm aws-auth

aws-auth ConfigMap si apre nell’editor vi.

Nota: se ricevi un errore dal server (NotFound): configmaps “aws-auth” non trovato, utilizza l'esempio di aws-auth ConfigMap fornito nel seguente articolo: Gestione degli utenti o dei ruoli IAM per il cluster.

2.    Nell'editor vi, aggiungi l'ARN del ruolo di servizio CodeBuild modificato ad aws-auth ConfigMap effettuando le seguenti operazioni:
Attiva la modalità di inserimento premendo i.
Nell'istruzione mapRoles, in system:masters, per il valore rolearn, immetti l'ARN del ruolo di servizio CodeBuild modificato.
Attiva la modalità comando premendo Esc. Quindi, salva e chiudi il file inserendo :wq.

Esempio di istruzione mapRoles che include un ARN del ruolo di servizio CodeBuild formattato correttamente

```
mapRoles: |
   - groups:
     - system:masters
     rolearn: arn:aws:iam::123456789012:role/codebuild-project-service-role
     username: codebuild-project-service-role
```

Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?