Déployer GitOps avec le CD Argo et le moteur Kubernetes pour OCI
GitOps est une variante de l'intégration et du développement en continu qui utilise les référentiels Git comme source unique de vérité pour fournir l'infrastructure en tant que code. Il préconise de placer l'ensemble de l'application, à partir du code source et de la configuration de l'application, de manière déclarative dans les référentiels Git. Cela permet de déployer de manière cohérente les modifications apportées à la configuration d'une application et de contrôler les versions à l'aide de flux de travail Git bien connus, tels que les demandes d'extraction et les demandes de fusion.
- Flux de travail standard pour le développement d'applications.
- Sécurité accrue pour la configuration préalable des exigences d'application.
- Amélioration de la fiabilité grâce à la visibilité et au contrôle des versions via Git.
- Cohérence dans toutes les grappes, tous les nuages et tous les environnements sur place.
Il est recommandé d'avoir des référentiels Git distincts pour le code source et la configuration de l'application, car les modifications de configuration ne nécessitent généralement pas de modification du code source de l'application. Le fait d'avoir des référentiels différents vous permet de modifier la configuration de l'application sans déclencher une compilation d'intégration continue.
- Manifestations de Kubernetes
- Graphiques Helm
- Personnalisez les manifestes.
Architecture
Vous pouvez accéder à l'application Argo CD via son interface utilisateur Web ou l'interface de ligne de commande Argo CD. La connectivité à l'outil CD Argo est fournie par un service d'équilibreur de charge déployé dans la grappe OCI Kubernetes Engine. Une fois le CD Argo déployé, vous le configurez pour qu'il se synchronise avec les référentiels Git hébergés en interne ou en externe vers Oracle Cloud Infrastructure, tant que la grappe OCI Kubernetes Engine dispose d'une connectivité IP sur les ports requis et des données d'identification pour les référentiels Git. Une fois le CD Argo synchronisé avec les référentiels, toutes les mises à jour de la configuration d'application effectuées dans le référentiel sont appliquées à la grappe du moteur Kubernetes pour OCI. Si des modifications sont apportées à l'application en dehors du référentiel Git, Argo CD considérera l'application comme désynchronisée et rétablira les modifications afin qu'elle soit conforme à l'état souhaité du référentiel Git.
Le diagramme suivant illustre cette architecture de référence.
Description de l'illustration argocd.png
- Location
Oracle Autonomous Transaction Processing est un service de base de données entièrement géré, sécurisé et autoréparable qui est optimisé pour les charges de travail de traitement des transactions. Il n'est pas nécessaire de configurer ou de gérer du matériel ni d'installer des logiciels. Oracle Cloud Infrastructure gère la création de la base de données, ainsi que la sauvegarde, l'application de correctifs, la mise à niveau et la mise au point de la base de données.
- Région
Une région Oracle Cloud Infrastructure est une zone géographique localisée qui contient 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 (dans différents pays ou continents).
- Compartiment
Les compartiments sont des partitions logiques inter-régions dans une location Oracle Cloud Infrastructure. Utilisez des compartiments pour organiser vos ressources dans Oracle Cloud, contrôler l'accès aux ressources et définir des quotas d'utilisation. Pour contrôler l'accès aux ressources d'un compartiment donné, vous devez définir des politiques qui spécifient qui peut accéder aux ressources et les actions qui peuvent être exécutées.
- Domaines de disponibilité
Les domaines de disponibilité sont des centres de données indépendants et autonomes dans une région. Les ressources physiques de chaque domaine de disponibilité sont isolées des ressources des autres domaines de disponibilité, ce qui garantit la tolérance aux pannes. Les domaines de disponibilité ne partagent pas les éléments d'infrastructure (alimentation ou refroidissement, par exemple) ni le réseau de domaines de disponibilité interne. Par conséquent, il est peu probable qu'une défaillance d'un domaine de disponibilité ait une incidence sur les autres domaines de la région.
- Domaines d'erreur
Un domaine d'erreur est un regroupement de matériel et d'infrastructure au sein d'un domaine de disponibilité. Chaque domaine de disponibilité comporte trois domaines d'erreur avec une puissance et un matériel indépendants. Lorsque vous répartissez des ressources entre plusieurs domaines d'erreur, vos applications peuvent tolérer les pannes physiques de serveur, la maintenance du système et les pannes d'alimentation au sein d'un domaine d'erreur.
- Réseau en nuage virtuel (VCN) et sous-réseau
Un VCN est un réseau défini par logiciel personnalisable que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux de centre de données traditionnels, les réseaux en nuage virtuels vous offrent un contrôle complet sur votre environnement de réseau. Un VCN peut disposer de plusieurs blocs CIDR sans chevauchement que vous pouvez modifier après avoir créé le VCN. Vous pouvez segmenter un VCN en sous-réseaux, dont la portée peut concerner une région ou un domaine de disponibilité. Un sous-réseau est constitué d'un intervalle contigu d'adresses qui ne chevauchent pas les autres sous-réseaux dans le réseau en nuage 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é.
- Équilibreur de charge
Le service Oracle Cloud Infrastructure Load Balancing permet une répartition automatisée du trafic d'un point d'entrée unique vers plusieurs serveurs dorsaux. L'équilibreur de charge donne accès à différentes applications.
- Référentiel de code
Dans le service DevOps, vous pouvez créer vos propres référentiels de code privés ou vous connecter à des référentiels externes tels que GitHub, GitLab et Bitbucket Cloud.
- Liste de sécurité
Pour chaque sous-réseau, vous pouvez créer des règles de sécurité qui spécifient la source, la destination et le type de trafic qui doivent être autorisés à entrer et à sortir du sous-réseau.
- Passerelle NAT
La passerelle NAT permet aux ressources privées d'un VCN d'accéder à des hôtes sur Internet, sans les exposer aux connexions Internet entrantes.
- Passerelle de service
La passerelle de service fournit l'accès d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic entre le réseau VCN et le service Oracle circule sur la matrice réseau Oracle et ne passe jamais par Internet.
- Protection d'infrastructure en nuage
Vous pouvez utiliser Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans Oracle Cloud Infrastructure. Le service de protection d'infrastructure en nuage utilise des recettes de détecteur que vous pouvez définir pour examiner vos ressources afin de détecter les faiblesses en matière de sécurité et pour surveiller les opérateurs et les utilisateurs à la recherche d'activités risquées. Lorsqu'une mauvaise configuration ou une activité non sécurisée est détectée, le service de protection d'infrastructure en nuage recommande des actions correctives et aide à effectuer ces actions, en fonction des recettes de répondant 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 politiques telles que le chiffrement des données et la prévention de l'accès public aux réseaux pour un compartiment entier. Une zone de sécurité est associée à un compartiment du même nom et inclut des politiques 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é.
- Stockage d'objets
Le service de stockage d'objets offre un accès rapide à de grandes quantités de données structurées et non structurées de tous types, notamment des sauvegardes de base de données, des données analytiques et du contenu enrichi, comme des images et des vidéos. Vous pouvez stocker des données en toute sécurité, puis les extraire directement à partir d'Internet ou de la plate-forme en nuage. Vous pouvez adapter le stockage de façon transparente sans que la performance ou la fiabilité des services soit affectée. Utilisez le stockage standard pour le stockage "à chaud" auquel vous devez accéder rapidement, immédiatement et fréquemment. Utilisez le stockage d'archives pour le stockage "à froid" que vous retenez pendant de longues périodes et auquel vous accédez rarement.
- FastConnect
Oracle Cloud Infrastructure FastConnect offre un moyen facile de créer une connexion privée dédiée entre votre centre de données et Oracle Cloud Infrastructure. FastConnect fournit des options de bande passante supérieure et permet une utilisation du réseau plus fiable que les connexions Internet.
- Passerelle d'appairage local (LPG)
Une passerelle LPG vous permet d'appairer un VCN à un autre dans la même région. L'appairage signifie que les réseaux en nuage virtuels communiquent à l'aide d'adresses IP privées, sans que le trafic passe par Internet ou passe par votre réseau sur place.
- Base de données autonome
Les bases de données autonomes d'Oracle Cloud Infrastructure sont des environnements de base de données préconfigurés et entièrement gérés que vous pouvez utiliser pour le traitement des transactions et les charges de travail d'entreposage de données. Il n'est pas nécessaire de configurer ou de gérer du matériel ni d'installer des logiciels. Oracle Cloud Infrastructure gère la création de la base de données, ainsi que la sauvegarde, l'application de correctifs, la mise à niveau et la mise au point de la base de données.
- Autonomous Data Warehouse
Oracle Autonomous Data Warehouse est un service de base de données entièrement géré, autosécurisé et autoréparable qui est optimisé pour les charges de travail d'entreposage de données. Il n'est pas nécessaire de configurer ou de gérer du matériel ni d'installer des logiciels. Oracle Cloud Infrastructure gère la création de la base de données, ainsi que la sauvegarde, l'application de correctifs, la mise à niveau et la mise au point de la base de données.
- Autonomous Transaction Processing
Oracle Autonomous Transaction Processing est un service de base de données entièrement géré, sécurisé et autoréparable qui est optimisé pour les charges de travail de traitement des transactions. Il n'est pas nécessaire de configurer ou de gérer du matériel ni d'installer des logiciels. Oracle Cloud Infrastructure gère la création de la base de données, ainsi que la sauvegarde, l'application de correctifs, la mise à niveau et la mise au point de la base de données.
- Système de base de données Exadata
Exadata Cloud Service vous permet de tirer parti de la puissance d'Exadata dans le nuage. Vous pouvez provisionner des systèmes X8M flexibles qui permettent d'ajouter des serveurs de calcul de base de données et des serveurs de stockage à votre système au fur et à mesure que vos besoins augmentent. Les systèmes X8M offrent un réseau RoCE (RDMA sur Ethernet convergé) pour une bande passante élevée et une faible latence, des modules de mémoire persistante (PMEM) et des logiciels Exadata intelligents. Vous pouvez provisionner des systèmes X8M à l'aide d'une forme équivalente à un système X8 de quart de bâti, puis ajouter des serveurs de base de données et de stockage à tout moment après le provisionnement.
Recommandations
- 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 aux sous-réseaux du VCN. Utilisez des blocs CIDR qui se trouvent dans l'espace d'adresses IP privées standard.
Sélectionnez les blocs CIDR qui ne chevauchent aucun autre réseau (dans Oracle Cloud Infrastructure, votre centre de données sur place ou un autre fournisseur de nuage) auquel vous voulez 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 de vos exigences en matière de flux de trafic et 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é.
Utilisez des sous-réseaux régionaux.
- Sécurité
Utilisez Oracle Cloud Guard pour surveiller et maintenir la sécurité de vos ressources dans Oracle Cloud Infrastructure de manière proactive. Le service de protection d'infrastructure en nuage utilise des recettes de détecteur que vous pouvez définir pour examiner vos ressources afin de détecter les faiblesses en matière de sécurité et pour surveiller les opérateurs et les utilisateurs à la recherche d'activités risquées. Lorsqu'une mauvaise configuration ou une activité non sécurisée est détectée, le service de protection d'infrastructure en nuage recommande des actions correctives et aide à effectuer ces actions, en fonction des recettes de répondant que vous pouvez définir.
Pour les ressources qui nécessitent une sécurité maximale, Oracle recommande d'utiliser des zones de sécurité. Une zone de sécurité est un compartiment associé à une recette de politiques de sécurité définie par Oracle et basée sur les meilleures pratiques. Par exemple, les ressources d'une zone de sécurité ne doivent pas être accessibles par l'Internet public et elles doivent être chiffrées à l'aide de clés gérées par le client. Lors de la création et de la mise à jour de ressources dans une zone de sécurité, Oracle Cloud Infrastructure valide les opérations en fonction des politiques de la recette de zone de sécurité et refuse les opérations qui violent l'une des politiques.
- Protection d'infrastructure en nuage
Cloner et personnaliser les recettes par défaut fournies par Oracle pour créer des recettes de détecteur et de répondant personnalisées. Ces recettes vous permettent de spécifier quel type de violations de sécurité génèrent un avertissement et quelles actions sont autorisées pour elles. Par exemple, vous pouvez détecter des seaux de stockage d'objets dont la visibilité est réglée à Public.
Appliquez le service de protection d'infrastructure en nuage au niveau de la location pour couvrir la portée la plus large et réduire le fardeau administratif lié à la maintenance de plusieurs configurations.
Vous pouvez également utiliser la fonction de liste gérée pour appliquer certaines configurations aux détecteurs.
- Zones de sécurité
Cloner et personnaliser les recettes par défaut fournies par Oracle pour créer des recettes de détecteur et de répondant personnalisées. Ces recettes vous permettent de spécifier quel type de violations de sécurité génèrent un avertissement et quelles actions sont autorisées pour elles. Par exemple, vous pouvez détecter des seaux de stockage d'objets dont la visibilité est réglée à Public.
Appliquez le service de protection d'infrastructure en nuage au niveau de la location pour couvrir la portée la plus large et réduire le fardeau administratif lié à la maintenance de plusieurs configurations. Vous pouvez également utiliser la fonction de liste gérée pour appliquer certaines configurations aux détecteurs.
- Groupes de sécurité de réseau
Vous pouvez utiliser des groupes de sécurité de réseau pour définir un jeu de règles de trafic entrant et sortant qui s'appliquent à des cartes vNIC spécifiques. Nous vous recommandons d'utiliser des groupes plutôt que des listes de sécurité, car ils vous permettent de séparer l'architecture de sous-réseau du VCN des exigences de sécurité de votre application.
Vous pouvez utiliser des groupes de sécurité de réseau pour définir un jeu de règles de trafic entrant et sortant qui s'appliquent à des cartes vNIC spécifiques. Nous vous recommandons d'utiliser des groupes plutôt que des listes de sécurité, car ils vous permettent de séparer l'architecture de sous-réseau du VCN des exigences de sécurité de votre application.
- Bande passante de l'équilibreur de charge
Lors de la création de l'équilibreur de charge, vous pouvez sélectionner une forme prédéfinie qui fournit une bande passante fixe, ou spécifier une forme personnalisée (flexible) dans laquelle vous définissez une plage de bande passante et laissez le service ajuster la bande passante automatiquement en fonction des modèles de trafic. Avec l'une ou l'autre approche, vous pouvez modifier la forme en tout temps après avoir créé l'équilibreur de charge.
Déployez
Le code Terraform pour cette architecture de référence est disponible en tant qu'exemple de pile dans Oracle Cloud Infrastructure Resource Manager. Cet exemple de pile Terraform déploie un environnement d'application de flux de données OCI, ainsi que des politiques IAM et des seaux de stockage d'objets OCI (et non de stockage tiers). Par défaut, une application de démonstration Python Spark sera également déployée. Vous pouvez également télécharger le code à partir de GitHub et le personnaliser en fonction de vos besoins spécifiques.
- Déployer à l'aide de l'exemple de pile dans Oracle Cloud Infrastructure Resource Manager :
- Cliquez sur
.
Si vous n'êtes pas déjà connecté, entrez la location et les données d'identification de l'utilisateur.
- Sélectionnez la région dans laquelle déployer la pile.
- Suivez les invites à l'écran et les instructions pour créer la pile.
- Après avoir créé la pile, cliquez sur Actions Terraform et sélectionnez Planifier.
- Attendez que la tâche soit terminée et vérifiez le plan.
Pour apporter des modifications, retournez à la page Détails de la pile, cliquez sur Modifier la pile et apportez les modifications requises. Ensuite, exécutez de nouveau l'action Planifier.
- Si aucune autre modification n'est nécessaire, retournez à la page Détails de la pile, cliquez sur Actions Terraform et sélectionnez Appliquer.
- Cliquez sur
- Déployer à l'aide du code Terraform dans GitHub :
- Allez à GitHub.
- Clonez ou téléchargez le référentiel sur votre ordinateur local.
- Suivez les instructions du document
README
.
En plus du code Terraform fourni sur GitHub, les extraits de code ci-dessous illustrent comment se connecter à Amazon Web Services S3 et comment interroger les données.
- Pour vous connecter aux données de S3 et les interroger, vous devez inclure les ensembles
hadoop-aws.jar
etaws-java-sdk.jar
. Vous pouvez référencer ces ensembles dans le fichierpom.xml
comme suit :<dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-aws</artifactId> <version>2.9.2</version> <exclusions> <exclusion> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> <version>1.7.4</version> </dependency>
- Utilisez un code similaire à celui qui suit pour vous connecter à Amazon Web Services S3. Vous devez fournir votre clé d'accès et votre clé secrète. Dans l'extrait de code ci-dessous, ces valeurs sont représentées par les variables
ACCESS
etSECRET
respectivement :SparkSession spark = SparkSession.builder().master("local") .config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") .config("spark.hadoop.fs.s3a.access.key", ACCESS) .config("spark.hadoop.fs.s3a.secret.key", SECRET) .config("fs.s3a.connection.ssl.enabled", "false") .getOrCreate();
- Utilisez un code similaire à celui qui suit pour interroger les données à l'aide de l'emplacement S3 et du nom de table que vous spécifiez.
Dataset<Row> ds = sqlContext.read().format("csv").option("header","true").load("<S3 Location>"); ds.createOrReplaceTempView("<Table Name>"); Dataset<Row> result_ds = sqlContext.sql("<SQL Query Using <Table Name>>");