Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Activation d'un workflow d'actions GitHub pour accéder à un cluster Kubernetes à l'aide de l'authentification OpenID Connect OKE
Introduction
Dans ce tutoriel, nous autorisons un workflow d'actions GitHub à exécuter une commande Kubernetes dans un cluster Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE). En utilisant l'authentification OpenID Connect (OIDC) native de GitHub, vous pouvez éviter de gérer les informations d'identification à long terme et rationaliser l'accès sécurisé et automatisé à vos clusters OKE, permettant ainsi des workflows d'intégration continue et de déploiement continu (CI/CD) plus efficaces.
Objectifs
- Activez le workflow d'actions GitHub pour accéder à un cluster Kubernetes à l'aide de l'authentification OIDC OKE.
Tâche 1 : créer un référentiel GitHub
Créez un référentiel dans votre compte GitHub. Entrez le nom de compte ou d'organisation, ainsi que le nom de votre référentiel.
Tâche 2 : configurer un cluster OKE
-
Créez un cluster Kubernetes avec OKE ou sélectionnez un cluster existant pour mettre à jour et noter l'OCID (identificateur Oracle Cloud) du cluster. Pour plus d'informations, reportez-vous à Création de clusters Kubernetes à l'aide de workflows de console.
-
Créez un fichier JSON pour mettre à jour le cluster avec les informations suivantes.
- isOpenIdConnectAuthEnabled : entrez
true
. - issuerUrl : entrez
"https://token.actions.githubusercontent.com"
. - clientId : entrez votre valeur. Dans cet exemple, nous utilisons
"oke-kubernetes-cluster"
. Cette valeur doit correspondre à l'audience dans votre workflow d'actions GitHub. - requiredClaim : entrez
["repository=GH_ACCOUNT/REPO", "workflow=NAME", "ref=refs/heads/main"]
. - usernameClaim : entrez
"sub"
. - usernamePrefix : entrez
"actions-oidc:"
.
Remplacez les valeurs
GH_ACCOUNT
etREPO
par vos valeurs. Le fichier JSON doit ressembler à :{ "openIdConnectTokenAuthenticationConfig": { "isOpenIdConnectAuthEnabled": true, "clientId": "oke-kubernetes-cluster", "issuerUrl": "https://token.actions.githubusercontent.com", "usernameClaim": "sub", "usernamePrefix": "actions-oidc:", "requiredClaim": [ "repository=gregvers/testoidc", "workflow=oke-oidc", "ref=refs/heads/main" ], "caCertificate": null, "signingAlgorithms": [ "RS256" ] } }
- isOpenIdConnectAuthEnabled : entrez
-
Exécutez la commande de l'interface de ligne de commande OCI pour mettre à jour le cluster avec votre fichier JSON. Remplacez
CLUSTER_OCID
par vos valeurs.oci ce cluster update --cluster-id CLUSTER_OCID --from-json file://./update.json
Tâche 3 : configuration du trafic réseau sortant
Autorisez le serveur d'API de cluster à sortir le trafic vers GitHub en ajoutant une règle de sécurité à la liste de sécurité de sous-réseau de vos règles de sécurité affectées à l'adresse d'API Kubernetes de cluster.
Tâche 4 : configuration du contrôle d'accès basé sur les rôles (RBAC) Kubernetes
Configurez le contrôle d'accès basé sur les rôles dans votre cluster Kubernetes afin d'autoriser le workflow GitHub Actions à effectuer certaines opérations (dossiers get/watch/list et déploiements get/watch/list/create/update/delete) à l'aide du fichier YAML suivant. Mettez à jour la ligne suivante : "name: actions-oidc:repo:GH-ACCOUNT/REPO:ref:refs/heads/main"
avec le nom de compte GitHub et le nom de référentiel.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: actions-oidc-role
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "watch", "list", "create", "update", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: actions-oidc-binding
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: actions-oidc-role
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: actions-oidc:repo:GH-ACCOUNT/REPO:ref:refs/heads/main
Tâche 5 : configurer les actions GitHub
Créez un workflow d'actions GitHub dans le référentiel GitHub.
-
Cliquez sur Actions et sur Configurer un workflow vous-même.
-
Collez le code suivant dans l'éditeur et mettez à jour
server="https://X.X.X.X:6443"
avec l'adresse IP publique de votre cluster.name: OKE-OIDC on: # Triggers the workflow on push or pull request events but only for the "main" branch push: branches: [ "main" ] pull_request: branches: [ "main" ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: permissions: id-token: write # Required to receive OIDC tokens # This workflow generates a GitHub Actions OIDC token and runs kubectl command in an OKE cluster jobs: oke-oidc: runs-on: ubuntu-latest steps: - name: Create OIDC Token id: create-oidc-token run: | AUDIENCE="oke-kubernetes-cluster" OIDC_URL_WITH_AUDIENCE="$ACTIONS_ID_TOKEN_REQUEST_URL&audience=$AUDIENCE" IDTOKEN=$(curl \ -H "Authorization: Bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \ -H "Accept: application/json; api-version=2.0" \ "$OIDC_URL_WITH_AUDIENCE" | jq -r .value) echo "::add-mask::${IDTOKEN}" echo "idToken=${IDTOKEN}" >> $GITHUB_OUTPUT - name: Check Permissions in Kubernetes run: | kubectl \ --token=$ \ --server="https://X.X.X.X:6443" \ --insecure-skip-tls-verify \ auth can-i --list
Le workflow Actions Github s'exécutera automatiquement. La commande
kubectl
renvoie les opérations que vous avez autorisées avec la configuration RBAC (dossiers get/watch/list et déploiements get/watch/list/create/update/delete).
Remerciements
-
Auteur - Greg Verstraeten (chef de produit principal senior)
-
Contributeur - Gavin Scheele (membre principal du personnel technique)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Enable a GitHub Actions Workflow to Access a Kubernetes Cluster using OKE OpenID Connect Authentication
G17270-01
October 2024