Déploiement d'applications sur un cluster OKE privé à l'aide d'OCI Bastion et de GitHub Actions

Découvrez comment tirer parti efficacement des sessions Oracle Cloud Infrastructure Bastion et des actions GitHub pour effectuer un déploiement vers un cluster Oracle Cloud Infrastructure Kubernetes Engine (OKE) privé en cas de besoin, en raison de divers facteurs tels que la sécurité, la conformité, l'isolement et le contrôle du réseau.

OKE est un service entièrement géré, évolutif et hautement disponible que vous pouvez utiliser pour déployer vos applications en conteneur vers le cloud.

GitHub Actions est une puissante plate-forme d'automatisation de workflow et d'intégration continue/déploiement continu (CI/CD) fournie par GitHub. Il vous permet de définir des workflows personnalisés à l'aide de la syntaxe YAML, qui peut être déclenchée par divers événements tels que des transmissions de code, des demandes d'extraction ou des tâches planifiées.

Cette architecture de référence explore l'utilisation des sessions OCI Bastion et des actions GitHub pour le déploiement vers un cluster OKE privé.

Architecture

Cette architecture de référence présente l'intégration d'un bastion OCI et d'actions GitHub afin de faciliter les déploiements vers un cluster OKE privé.

Le cluster OKE privé est inaccessible à partir de réseaux externes. Pour accéder à l'adresse privée d'API K8s, une session de transfert de port SSH OCI Bastion est établie. Cette configuration permet d'exécuter des commandes kubectl pour effectuer diverses opérations de déploiement au sein du cluster.

Lorsque le code est propagé vers le référentiel, le workflow GitHub Actions est automatiquement déclenché. Lors de l'exécution du workflow, la session OCI Bastion est créée et utilisée pour se connecter à l'adresse d'API K8s privée afin d'exécuter des actions de déploiement.

Une fois le workflow terminé, la session OCI Bastion est supprimée. Cette approche garantit un processus de déploiement hautement sécurisé et efficace. En outre, ce workflow sert de cadre pour l'exécution de tâches d'intégration continue et peut être davantage adapté pour s'aligner sur vos processus et exigences de développement spécifiques.

Le schéma suivant illustre cette architecture de référence.



oke-bastion-deployment-diagram-oracle.zip

Avant de commencer

  1. Provisionnez un cluster OKE avec l'adresse d'API Kubernetes et les noeuds de processus actif configurés dans un sous-réseau privé.

    Remarques :

    L'adresse d'API Kubernetes privée sera utilisée pour établir la session de transfert de port OCI Bastion.
  2. Définissez le service OCI Bastion créé de sorte que le VCN OKE soit le VCN cible et le sous-réseau de noeud OKE le sous-réseau cible.
  3. Définissez la stratégie de service IAM requise.

    Remarques :

    Pour obtenir des liens vers la configuration de stratégie pour la création et le déploiement de clusters afin de configurer les stratégies IAM nécessaires, reportez-vous à En savoir plus.

L'architecture comprend les composants suivants :

  • Tenancy

    Une location est une partition sécurisée et isolée configurée par Oracle dans Oracle Cloud lors de votre inscription à Oracle Cloud Infrastructure. Vous pouvez créer, organiser et administrer vos ressources dans Oracle Cloud au sein de votre location. Une location est synonyme d'entreprise ou d'organisation. En général, une entreprise dispose d'une seule location et reflète sa structure organisationnelle au sein de cette location. Une location unique est généralement associée à un seul abonnement, et un seul abonnement n'a généralement qu'une seule location.

  • Région

    Une région Oracle Cloud Infrastructure est une zone géographique précise, incluant un ou plusieurs centres de données, appelés domaines de disponibilité. Les régions sont indépendantes les unes des autres et de grandes distances peuvent les séparer (entre pays, voire continents).

  • Compartiment

    Les compartiments sont des partitions logiques inter-régionales au sein d'une location Oracle Cloud Infrastructure. Utilisez des compartiments afin d'organiser, de contrôler l'accès et de définir des quotas d'utilisation pour les ressources Oracle Cloud. Dans un compartiment donné, vous définissez des stratégies qui contrôlent l'accès et définissent des privilèges pour les ressources.

  • Domaines de disponibilité

    Les domaines de disponibilité sont des centres de données autonomes indépendants au sein d'une région. Les ressources physiques de chaque domaine de disponibilité sont isolées de celles des autres, ce qui garantit la tolérance aux pannes. Les domaines de disponibilité ne partagent ni infrastructure (par exemple, alimentation, système de refroidissement), ni réseau de domaine de disponibilité interne. Par conséquent, une panne sur un domaine de disponibilité ne doit pas affecter les autres domaines de disponibilité de la région.

  • Domaines de pannes

    Un domaine de pannes est un regroupement de matériel et d'infrastructures au sein d'un domaine de disponibilité. Chaque domaine de disponibilité comporte trois domaines de pannes avec du matériel et une alimentation indépendants. Lorsque vous répartissez les ressources entre plusieurs domaines de pannes, vos applications peuvent tolérer les pannes physiques du serveur, la maintenance du système et les pannes d'alimentation au sein d'un domaine de pannes.

  • Réseau cloud virtuel (VCN) et sous-réseaux

    Un VCN est un réseau personnalisable défini par logiciel que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux de centre de données traditionnels, les réseaux cloud virtuels vous donnent le contrôle sur l'environnement réseau. Un réseau cloud virtuel peut comporter plusieurs blocs CIDR qui ne se chevauchent pas et que vous pouvez modifier après l'avoir créé. Vous pouvez segmenter un réseau cloud virtuel en plusieurs sous-réseaux ciblant une région ou un domaine de disponibilité. Chaque sous-réseau est composé d'une plage contiguë d'adresses qui ne chevauchent pas celles des autres sous-réseaux du réseau cloud virtuel. Vous pouvez modifier la taille d'un sous-réseau après sa création. Un sous-réseau peut être public ou privé.

  • Equilibreur de charge

    Le service Oracle Cloud Infrastructure Load Balancing fournit une répartition de trafic automatique à partir d'un seul point d'entrée vers plusieurs serveurs dans le back-end.

  • Liste de sécurité

    Pour chaque sous-réseau, vous pouvez créer des règles de sécurité qui indiquent la source, la destination et le type de trafic qui doivent être autorisés à entrer et à sortir du sous-réseau.

  • Passerelle NAT (Network Address Translation)

    Une passerelle NAT permet aux ressources privées d'un VCN d'accéder aux hôtes sur Internet, sans les exposer aux connexions Internet entrantes.

  • Passerelle de service

    La passerelle de service fournit un accès à partir d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic entre le VCN et le service Oracle passe par la structure du réseau Oracle et ne traverse pas Internet.

  • Cloud Guard

    Vous pouvez utiliser Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans Oracle Cloud Infrastructure. Cloud Guard utilise des recettes de détecteur que vous pouvez définir pour examiner les faiblesses de sécurité de vos ressources et pour surveiller les opérateurs et les utilisateurs afin de détecter certaines activités à risque. Lorsqu'une erreur de configuration ou une activité non sécurisée est détectée, Cloud Guard recommande des actions correctives et vous aide à effectuer ces actions, en fonction des recettes de répondeur que vous pouvez définir.

  • Zone de sécurité

    Les zones de sécurité garantissent les meilleures pratiques de sécurité d'Oracle dès le départ en appliquant des stratégies telles que le cryptage des données et la prévention de l'accès public aux réseaux pour l'ensemble d'un compartiment. Une zone de sécurité est associée à un compartiment du même nom et inclut des stratégies de zone de sécurité ou une "recette" qui s'applique au compartiment et à ses sous-compartiments. Vous ne pouvez pas ajouter ou déplacer un compartiment standard vers un compartiment de zone de sécurité.

  • Kubernetes Engine

    Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE) est un service entièrement géré, évolutif et hautement disponible que vous pouvez utiliser pour déployer vos applications en conteneur vers le cloud. Indiquez les ressources de calcul requises par vos applications et Kubernetes Engine les provisionne sur Oracle Cloud Infrastructure dans une location existante. OKE utilise Kubernetes pour automatiser le déploiement, le redimensionnement et la gestion des applications en conteneur dans les clusters d'hôtes.

  • Service Bastion

    Oracle Cloud Infrastructure Bastion fournit un accès sécurisé limité et limité dans le temps aux ressources qui n'ont pas d'adresses publiques et qui nécessitent des contrôles stricts d'accès aux ressources, tels que les machines virtuelles et Bare Metal, Oracle MySQL Database Service, Autonomous Transaction Processing (ATP), Oracle Cloud Infrastructure Kubernetes Engine (OKE), ainsi que toute autre ressource autorisant l'accès SSH (Secure Shell Protocol). Avec le service OCI Bastion, vous pouvez activer l'accès aux hôtes privés sans déployer et gérer un hôte de saut. En outre, vous bénéficiez d'une meilleure posture de sécurité avec des droits d'accès basés sur l'identité et une session SSH centralisée, auditée et limitée dans le temps. OCI Bastion élimine la nécessité d'une adresse IP publique pour l'accès au bastion, éliminant ainsi les tracas et la surface d'attaque potentielle lors de la fourniture d'un accès à distance.

Recommandations

Utilisez les recommandations suivantes comme point de départ. Vos exigences peuvent différer de l'architecture décrite ici.
  • VCN

    Lorsque vous créez un VCN, déterminez le nombre de blocs CIDR requis et la taille de chaque bloc en fonction du nombre de ressources que vous prévoyez d'attacher à des sous-réseaux dans le VCN. Utilisez des blocs CIDR qui se trouvent dans l'espace d'adresse IP privée standard.

    Sélectionnez les blocs CIDR qui ne chevauchent aucun autre réseau (dans Oracle Cloud Infrastructure, votre centre de données sur site ou un autre fournisseur cloud) auquel vous avez l'intention de configurer des connexions privées.

    Après avoir créé un VCN, vous pouvez modifier, ajouter et supprimer ses blocs CIDR.

    Lorsque vous concevez les sous-réseaux, tenez compte du flux de trafic et des exigences de sécurité. Attachez toutes les ressources d'un niveau ou d'un rôle spécifique au même sous-réseau, qui peut servir de limite de sécurité.

  • Cloud Guard

    Cloner et personnaliser les recettes par défaut fournies par Oracle afin de créer des recettes de détecteur et de répondeur personnalisées. Ces recettes vous permettent de spécifier le type de violation de sécurité qui génère un avertissement et les actions autorisées à y être exécutées. Par exemple, vous pouvez détecter les buckets Object Storage dont la visibilité est définie sur Public.

    Appliquez Cloud Guard au niveau de la location pour couvrir la portée la plus large et réduire la charge administrative liée à la maintenance de plusieurs configurations.

    Vous pouvez également utiliser la fonction Liste gérée pour appliquer certaines configurations aux détecteurs.

  • Bastion

    OCI Bastion let authorized users connect from specific IP addresses to target resources using Secure Shell (SSH) sessions. Assurez-vous que seuls les utilisateurs autorisés ont accès à la création de sessions et de services Bastion. L'accès au bastion ne doit être accordé qu'aux utilisateurs autorisés.

  • Kubernetes Engine (OKE)

    Assurez-vous que les stratégies IAM nécessaires sont créées et que seuls les utilisateurs autorisés ont accès aux ressources de cluster. Une surveillance et une journalisation supplémentaires doivent être activées pour améliorer l'état de sécurité.

Points à prendre en compte

Tenez compte des points suivants lors du déploiement de cette architecture de référence.

  • Evolutivité d'OKE

    Vous pouvez redimensionner votre application en mettant à jour le nombre de noeuds de processus actif dans le cluster Kubernetes, en fonction de la charge. De même, vous pouvez réduire le nombre de noeuds de processus actif dans le cluster. Lorsque vous créez un service sur le cluster Kubernetes, vous pouvez créer un équilibreur de charge pour distribuer le trafic du service entre les noeuds affectés à ce service.

  • Disponibilité de l'application

    Les domaines de pannes offrent la meilleure résilience au sein d'un seul domaine de disponibilité. Vous pouvez également déployer des instances ou des noeuds qui effectuent les mêmes tâches dans plusieurs domaines de disponibilité. Cette conception supprime un point de défaillance unique en introduisant la redondance.

  • Sécurité

    Utilisez des stratégies qui limitent les personnes pouvant accéder aux ressources OCI et la façon dont elles peuvent y accéder.

    OKE est intégré à Oracle Cloud Infrastructure Identity and Access Management (IAM). IAM facilite l'authentification avec la fonctionnalité d'identité OCI native.

Déployez

Le code de workflow GitHub Actions est disponible dans GitHub.

  1. Accédez à GitHub.
  2. Clonez ou téléchargez le référentiel sur votre ordinateur local.
  3. Suivez les instructions du document README.

En savoir plus

Découvrez les meilleures pratiques pour OCI et la configuration de stratégies pour la création et le déploiement d'OKE.

Consultez les ressources supplémentaires suivantes :

Accusés de réception

Authors: Shan Duraipandian

Contributors: John Sulyok