Utilisation de Kubernetes avec Code Engine
IBM Cloud® Code Engine est conçu de telle sorte que vous n'ayez pas besoin d'interagir avec la technologie sous-jacente sur laquelle il s'appuie. Toutefois, si vous disposez d'outils existants basés sur Kubernetes ou Knative, vous pouvez toujours l'utiliser avec Code Engine. Code Engine prend en charge les API Kubernetes (et Knative) et leurs commandes CLI. Pour plus d'informations sur Knative, voir Utilisation de Knative avec Code Engine.
Si vous décidez d'utiliser Kubernetes avec Code Engine, veuillez tenir compte des informations suivantes :
- La plupart des conteneurs ou des pods qui s'exécutent sur Kubernetes s'exécutent également sous Code Engine.
- Les constructions Kubernetes, telles que les déploiements, s'exécutent sous Code Engine s'ils n'utilisent pas de fonctions à l'échelle du cluster, telles que les règles de sécurité. Code Engine s'applique à ce qui peut s'exécuter dans un espace de nom Kubernetes.
Code Engine ne prend pas en charge les ressources spécifiques à OpenShift ou les autres plateformes d'orchestration de conteneur, telles que Docker Swarm ou Compose Swarm.
Installation de l'interface de ligne de commande Kubernetes
Pour installer l'interface de ligne de commande (CLI) d' Kubernetes, téléchargez et installez le fichier kubectl CLI.
N'oubliez pas d'ajouter le binaire kubectl à la variable d'environnement PATH de votre système.
Interaction avec l'API Kubernetes
Pour interagir avec votre projet à partir de l'interface de ligne de commande Kubernetes, kubectl, ou avec Knative, kn vous devez configurer votre environnement pour interagir avec l'API Kubernetes de Code Engine.
Avant de commencer
- Vous devez créer votre projet (celui-ci devant être à l'état
active). - Installez l'interface de ligne de commande Kubernetes (
kubectl) et l'interface de ligne de commande Knative (kn).
Vous pouvez configurer votre environnement selon les méthodes suivantes :
-
Vous pouvez ajouter l'option
--kubecfgà votre commandeproject select. Par exemple :ibmcloud ce project select --name PROJECT_NAME --kubecfg -
Vous pouvez exporter le fichier
kubeconfigdirectement. Exécutez la commandeibmcloud ce project currentpour rechercher le projet que vous ciblez actuellement. Cette commande renvoie également la commandeexportpour votre fichierkubeconfig. Par exemple :ibmcloud ce project currentExemple de sortie
Getting the current project context... OK Name: myproject ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Subdomain: aabon2dfwa0 Domain: us-south.codeengine.appdomain.cloud Region: us-south Kubectl Context: 4svg40kna19 Kubernetes Config: Context: aabon2dfwa0 Environment Variable: export KUBECONFIG=/user/myusername/.bluemix/plugins/code-engine/myproject-01234567-abcd-abcd-abcd-abcdabcd1111.yamlEnsuite, copiez la commande export et collez-la dans votre interface de ligne de commande, puis exécutez-la.
Vérifiez que votre environnement a été correctement configuré en exécutant la commande kubectl config.
kubectl config current-context
Si le contexte est correctement défini, la sortie correspond à la valeur Kubectl Context de votre projet. Par exemple, si la valeur Kubectl Context de votre projet est 4svg40kna19, la commande renvoie 4svg40kna19.
Pour plus d'informations sur Kubernetes et son fonctionnement avec l'architecture Code Engine, voir Découvrir l'architecture de Code Engine et l'isolement des charges de travail.
Droits d'accès requis pour l'utilisation de l'API Kubernetes
Après avoir configuré votre environnement, vous pouvez interagir avec l'API Kubernetes. Vous devez disposer du niveau d'accès approprié pour effectuer certaines tâches. Ces rôles sont définis dans Identity and Access Management. Voir Rôles de service IBM Cloud.
| Ressource | Rôle Gestionnaire | Rôle Auteur | Rôle Lecteur |
|---|---|---|---|
serviceaccounts |
get, list, watch |
get, list, watch |
Aucun |
secrets |
get, list, watch, create, delete, update, patch, apply, edit |
get, list, watch, create, delete, update, patch, apply, edit |
Aucun |
configmaps |
get, list, watch, create, delete, update, patch, apply, edit |
get, list, watch, create, delete, update, patch, apply, edit |
Aucun |
events |
get, list, watch |
get, list, watch |
Aucun |
pods/log |
get, list, watch |
get, list, watch |
get, list, watch |
pods |
get, list, watch, create, delete, patch, apply |
get, list, watch, create, delete, patch, apply |
get, list, watch |
services |
get, list, watch, create, delete, patch, apply |
get, list, watch, create, delete, patch, apply |
get, list, watch |
pods/exec |
create |
create |
Aucun |
pods/portforward |
create |
create |
Aucun |
pods/attach |
create |
Aucun | Aucun |
pods/status |
get, list |
get, list |
Aucun |
resourcequotas |
get, list, watch |
get, list, watch |
get, list, watch |
limitranges |
get, list, watch |
get, list, watch |
Aucun |
deployments |
get, list, watch, create, delete, patch, apply |
get, list, watch, create, delete, patch, apply |
get, list, watch |
daemonset |
get, list, watch |
get, list, watch |
get, list, watch |
pods.metrics.k8s.io |
list | list | list |
Extraction de votre configuration Kubernetes
Vous pouvez extraire votre configuration Kubernetes à l'aide de l'API REST ou de l'interface de ligne de commandeCode Engine.
Extraction de la configuration Kubernetes à l'aide d'une API REST
Pour extraire votre configuration Kubernetes à l'aide d'une API REST :
- Authentifiez-vous à l'aide d'IBM Cloud® Identity and Access Management (IAM) afin de recevoir un jeton d'accès IAM.
- Interrogez le catalogue IBM Cloud et le contrôleur de ressources IBM Cloud afin de recevoir un identificateur global unique pour votre projet.
- Utilisez l'API IBM Cloud Code Engine pour recevoir une configuration Kubernetes.
Authentification à l'aide de Cloud Identity and Access Management
Créez votre IBM Cloud en soumettant une demande POST à https://iam.cloud.ibm.com/identity/token.
Identification de l'identificateur global unique de votre projet Code Engine
Identifiez l'identificateur global unique de votre projet Code Engine en interrogeant le catalogue IBM Cloud et IBM Cloud. Etant donné que cet identificateur global unique ne change pas, vous ne devez effectuer cette étape qu'une seule fois. Si vous connaissez déjà l'identificateur global unique de votre projet Code Engine, vous pouvez ignorer cette étape.
Pour utiliser l'interface de ligne de commande Code Engine afin de reconnaître l'identificateur global unique de votre projet Code Engine, procédez comme suit.
-
Connectez-vous à IBM Cloud et ciblez une région, un compte et un groupe de ressources.
ibmcloud login target -r REGION -c ACCOUNT_ID -g RESOURCE_GROUP -
Exécutez la commande
ibmcloud resource.ibmcloud resource service-instances --service-name codeengine --long -
Identifiez l'instance de service qui représente votre projet Code Engine et déterminez l'identificateur global unique à partir de la sortie.
Pour utiliser l'API REST afin de découvrir l'identificateur global unique de votre projet Code Engine, procédez comme suit.
Avant de commencer, vous devez disposer du jeton d'accès (access_token) identifié lors de l'étape précédente.
-
Utilisez la méthode d'API de catalogue IBM Cloud suivante: Renvoie des entrées de catalogue parent.
Exemple de sortie
curl -X GET \ 'https://globalcatalog.cloud.ibm.com/api/v1?include=*&q=name:codeengine+active:true' \ -H 'Authorization: Bearer ACCESS_TOKEN'Identifiez l'ID de ressource unique dans la liste de ressources. Le nom de zone est
IDet le chemin JSON estresources[].id. -
Interrogez le contrôleur de ressources « IBM Cloud » à l'aide de la méthode API du contrôleur de ressources « IBM Cloud » permettant d'obtenir la liste de toutes les instances de ressources. Vous devez connaître le nom du projet Code Engine, la région dans laquelle votre projet réside et l'ID de ressource unique de Code Engine dans le catalogue global. Utilisez le nom de votre projet Code Engine comme paramètre de requête.
Exemple de sortie
curl -X GET \ 'https://resource-controller.cloud.ibm.com/v2/resource_instances?name=MY_PROJECT&resource_id=RESOURCE_ID' \ -H 'Authorization: Bearer ACCESS_TOKEN' -
Identifiez le projet Code Engine à partir de votre région dans la liste de résultats. Recherchez l'identificateur global unique (
guid) à utiliser dans les étapes suivantes.
Interrogation de l'API IBM Code Engine
Avant de commencer, vous devez disposer des informations suivantes :
- Le jeton d'accès (
access_token) et le jeton d'actualisation (refresh_token) obtenus lors des étapes précédentes. - L'identificateur global unique (
guid) de votre projet Code Engine. - La région dans laquelle se trouve votre projet Code Engine.
Utilisez la get kubeconfig for the specified projectCode Engine méthode API pour récupérer la configuration de l' Kubernetes.
Exemple de sortie
curl -X GET \
'https://resource-controller.cloud.ibm.com/v2/resource_instances?name=MY_PROJECT&resource_id=RESOURCE_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN'
Récupérez la configuration de votre Kubernetes à l'aide de l'interface de ligne de commande (CLI) d' Code Engine
-
Connectez-vous à IBM Cloud et ciblez une région, un compte et un groupe de ressources.
ibmcloud login target -r REGION -c ACCOUNT_ID -g RESOURCE_GROUP -
Créez votre projet Code Engine :
ibmcloud ce project create --name PROJECT -
Sélectionnez votre projet Code Engine comme contexte actuel et ajoutez-le au fichier de configuration Kubernetes par défaut.
ibmcloud ce project select --name PROJECT --kubecfg
Vous êtes maintenant prêt à utiliser les commandes kubectl avec votre projet.
Pour plus d'informations sur l'utilisation des API Code Engine, de l'API Kubernetes et de kubectl, voir les rubriques suivantes :
Définition de ressource personnalisée
Les sections suivantes répertorient les méthodes de définition de ressource personnalisée qu'il convient d'utiliser avec Code Engine.
Méthodes de définition de ressource personnalisée par lots
Vous pouvez utiliser des CRD par lots lorsque vous utilisez des travaux et des exécutions de travail dans Code Engine.
| Groupe | Version | Catégorie |
|---|---|---|
codeengine.cloud.ibm.com |
v1beta1 | JobDefinition |
codeengine.cloud.ibm.com |
v1beta1 | JobRun |
Après avoir extrait la configuration Kubernetes, vous pouvez afficher les détails des définitions de ressources personnalisées par lots en utilisant les méthodes décrites ci-après.
- Utilisez
kubectl explain --api-version='codeengine.cloud.ibm.com/v1beta1' <Kind>. - Téléchargez la spécification Swagger ou «
OpenAPI» des CRD.
Notez que vous ne pouvez pas supprimer une exécution de travail sans supprimer également les pods associés. Toute tentative de suppression avec l'option propagationPolicy=Orphan est rejetée.
Méthodes CRD de fonction
Vous pouvez utiliser des CRD de fonction lorsque vous utilisez des fonctions dans Code Engine.
| Groupe | Version | Catégorie |
|---|---|---|
codeengine.cloud.ibm.com |
v1beta1 | Function |
Méthodes de définition de ressource personnalisée de service
Vous pouvez utiliser des CRD de service lorsque vous utilisez des applications dans Code Engine.
| Groupe | Version | Catégorie |
|---|---|---|
serving.knative.dev |
v1 | Configuration |
serving.knative.dev |
v1 | Revision |
serving.knative.dev |
v1 | Route |
serving.knative.dev |
v1 | Service |
Pour plus d'informations sur ces CRD, consultez la spécification de l'API Knative Serving.
Méthodes de définition de ressource personnalisée source-image
Vous pouvez utiliser des CRD source-to-image lorsque vous utilisez des générations et des exécutions de génération dans Code Engine.
| Groupe | Version | Catégorie |
|---|---|---|
shipwright.io |
v1beta1 | Build |
shipwright.io |
v1beta1 | BuildRun |
Après avoir extrait la configuration Kubernetes, vous pouvez afficher les détails des définitions de ressources personnalisées source-image en utilisant les méthodes décrites ci-après.
- Utilisez
kubectl explain --api-version='shipwright.io/v1beta1' <KIND>. - Téléchargez la spécification Swagger ou «
OpenAPI» des CRD.
Méthodes de définition de ressource personnalisée d'abonnement
Vous pouvez utiliser des CRD d'abonnement lorsque vous utilisez des abonnements dans Code Engine.
| Groupe | Version | Catégorie |
|---|---|---|
sources.codeengine.cloud.ibm.com |
v1alpha1 | CosSource |
sources.knative.dev |
v1beta1 | KafkaSource |
sources.knative.dev |
v1 | PingSource |
Après avoir extrait la configuration Kubernetes, vous pouvez afficher les détails des définitions de ressources personnalisées d'abonnement en utilisant l'une des méthodes suivantes.
- Utilisez
kubectl explain --api-version='sources.knative.dev/<VERSION>' <KIND>. - Téléchargez la spécification Swagger ou «
OpenAPI» des CRD.