Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction à l' niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
Activer un flux de travail d'actions GitHub pour accéder à une grappe Kubernetes à l'aide de l'authentification OKE OpenID Connect
Présentation
Dans ce tutoriel, nous autorisons un flux de travail GitHub Actions à exécuter une commande Kubernetes dans une grappe 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 données d'identification de longue durée et rationaliser l'accès sécurisé et automatisé à vos grappes OKE, ce qui permet des flux de travail d'intégration et de déploiement continus (CI/CD) plus efficaces.
Objectifs
- Activez le flux de travail Actions GitHub pour accéder à une grappe Kubernetes à l'aide de l'authentification OIDC OKE.
Tâche 1 : Créer un référentiel GitHub
Créez un nouveau référentiel dans votre compte GitHub. Entrez le nom de votre compte ou de votre organisation, ainsi que le nom de votre référentiel.
Tâche 2 : Configurer une grappe OKE
-
Créez une grappe Kubernetes avec OKE ou sélectionnez une grappe existante pour mettre à jour et noter l'identificateur Oracle Cloud (OCID) de la grappe. Pour plus d'informations, voir Création de grappes Kubernetes à l'aide des flux de travail de la console.
-
Créez un fichier JSON pour mettre à jour la grappe à l'aide des 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 au public dans votre flux de travail 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 se présenter comme suit :{ "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 d'interface de ligne de commande OCI pour mettre à jour la grappe 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 : Configurer le trafic réseau sortant
Autorisez le serveur d'API de grappe à sortir le trafic vers GitHub en ajoutant une règle de sécurité à la liste de sécurité du sous-réseau de vos règles de sécurité affectées au point d'extrémité de l'API Kubernetes de la grappe.
Tâche 4 : Configurer le contrôle d'accès basé sur les rôles (RBAC) de Kubernetes
Configurez RBAC dans votre grappe Kubernetes pour autoriser votre flux de travail Actions GitHub à effectuer certaines opérations (obtenir/regarder/lister les pods et obtenir/regarder/lister/créer/mettre à jour/supprimer des déploiements) à 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 votre compte GitHub et le nom du 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 flux de travail d'actions GitHub dans votre référentiel GitHub.
-
Cliquez sur Actions et sur Configurer un flux de travail 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 grappe.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 flux de travail Actions Github s'exécutera automatiquement. La commande
kubectl
retournera les opérations que vous avez autorisées avec la configuration RBAC (get/watch/list pods et get/watch/list/create/update/delete déploiements).
Confirmation
-
Auteur - Greg Verstraeten (Gestionnaire principal de produit)
-
Contributeur - Gavin Scheele (Membre principal du personnel technique)
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Enable a GitHub Actions Workflow to Access a Kubernetes Cluster using OKE OpenID Connect Authentication
G17269-01
October 2024