Prérequis pour le déploiement du contrôleur d'entrée natif OCI en tant que programme autonome
Découvrez ce que vous devez faire pour pouvoir déployer le contrôleur d'entrée natif OCI en tant que programme autonome afin d'équilibrer la charge et d'acheminer le trafic entrant vers des pods de service exécutés sur des noeuds de processus actif dans un cluster Kubernetes.
Avant de déployer le contrôleur d'entrée natif OCI en tant que programme autonome :
- Créez un cluster ou identifiez un cluster existant dont le type de réseau est Mise en réseau de pod natif VCN ou Superposition de canal. Le cluster peut être un cluster amélioré ou un cluster de base. Le cluster doit exécuter Kubernetes version 1.26 ou ultérieure. Reportez-vous à Création d'un cluster.
- Configurez des règles de sécurité d'équilibreur de charge pour autoriser le trafic entrant et sortant vers et depuis le sous-réseau de l'équilibreur de charge. Reportez-vous à Configuration du sous-réseau de l'équilibreur de charge.
- Configurez un principal d'instance, un principal d'utilisateur ou un principal d'identité de charge globale pour permettre au contrôleur d'entrée natif OCI d'accéder à d'autres services et ressources Oracle Cloud Infrastructure. Reportez-vous à Configuration d'un principal d'instance, d'un principal utilisateur ou d'un principal d'identité de charge globale pour autoriser l'accès aux services et ressources OCI.
- Accordez des droits d'accès au principal d'instance, au principal d'utilisateur ou au principal d'identité de charge globale pour permettre au contrôleur d'entrée natif OCI d'accéder aux ressources. Reportez-vous à Octroi de droits d'accès au contrôleur d'entrée natif OCI en tant que programme autonome.
- Installez cert-manager pour générer et gérer les certificats TLS requis par le serveur de webhook qui prend en charge la fonctionnalité de portes de préparation de pod. Reportez-vous à la section Installing cert-manager.
- Installez l'interface de ligne de commande Helm pour vous permettre d'installer le contrôleur d'entrée natif OCI de l'une des deux manières suivantes. Reportez-vous à Installation de l'interface de ligne de commande Helm pour installer le contrôleur d'entrée natif OCI en tant que programme autonome.
- Clonez le référentiel de contrôleur d'entrée natif OCI de GitHub vers un référentiel local, afin de vous permettre de déployer le contrôleur d'entrée natif OCI et de spécifier les valeurs de paramètre pour le déploiement. Reportez-vous à Clonage du référentiel de contrôleur d'entrée natif OCI et définition des paramètres dans values.yaml.
Configuration d'un principal d'instance, d'un principal d'utilisateur ou d'un principal d'identité de charge globale pour permettre l'accès aux services et ressources OCI
Pour créer un équilibreur de charge et acheminer le trafic entrant, le contrôleur d'entrée natif OCI, qu'il soit installé en tant que programme autonome ou en tant qu'extension de cluster, effectue des actions sur d'autres ressources de service Oracle Cloud Infrastructure (y compris le service Load Balancer et le service Certificates). Pour effectuer ces actions sur les ressources de service OCI, le pod de contrôleur d'entrée natif OCI utilise les informations d'identification d'un acteur autorisé (ou d'un principal). Vous pouvez actuellement configurer les types de principal suivants pour permettre au contrôleur d'entrée natif OCI d'effectuer des actions sur les ressources de service OCI :
- Principal d'instance : le contrôleur d'entrée natif OCI utilise l'identité de l'instance sur laquelle il est en cours d'exécution. Reportez-vous à Utilisation de principaux d'instance pour activer l'accès aux services et ressources OCI.
- Principal utilisateur : le contrôleur d'entrée natif OCI utilise l'identité d'un utilisateur OCI. Reportez-vous à Utilisation de principaux utilisateur pour activer l'accès aux services et ressources OCI.
- Principal d'identité de charge globale : le contrôleur d'entrée natif OCI utilise l'identité d'une ressource de charge globale exécutée sur un cluster Kubernetes. Reportez-vous à Utilisation de principaux d'identité de charge globale pour permettre l'accès aux services et ressources OCI.
Remarque :
- L'utilisation de principaux d'instance pour permettre au contrôleur d'entrée natif OCI d'accéder aux services et aux ressources OCI n'est pas prise en charge dans les clusters avec des noeuds virtuels.
- L'utilisation de principaux d'identité de charge globale pour permettre au contrôleur d'entrée natif OCI d'accéder aux services et aux ressources OCI est prise en charge avec des clusters améliorés, mais pas avec des clusters de base.
Utilisation de principaux d'instance pour permettre l'accès aux services et aux ressources OCI
Vous pouvez configurer un principal d'instance pour permettre au contrôleur d'entrée natif OCI d'effectuer des actions sur les ressources de service OCI. Notez que vous pouvez uniquement utiliser des principaux d'instance avec des noeuds gérés.
Pour configurer un principal d'instance, procédez comme suit :
- Créez un groupe dynamique pour contenir les instances de calcul hébergeant les noeuds de processus actif du cluster :
- Ouvrez le menu de navigation et sélectionnez Identité et sécurité. Sous Identité, sélectionnez Domaines. Sous Domaine d'identité, sélectionnez Groupes dynamiques.
-
Sélectionnez le compartiment auquel les instances de calcul appartiennent.
-
Suivez les instructions dans Procédure de création d'un groupe dynamique et donnez un nom au groupe dynamique (par exemple,
acme-oke-native-ingress-controller-dyn-grp
). - Entrez une règle qui inclut les instances de calcul dans le compartiment, au format suivant :
ALL {instance.compartment.id = '<compartment-ocid>'}
où
<compartment-ocid>
est l'OCID du compartiment dans lequel les pools de noeuds de cluster sont créés.Par exemple :
ALL {instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaa23______smwa'}
- Sélectionnez Créer un groupe dynamiques.
Avant de déployer le contrôleur d'entrée natif OCI, vous allez :
- Accordez des droits d'accès à l'instance sur laquelle le contrôleur d'entrée natif OCI est exécuté via le groupe dynamique. Reportez-vous à Octroi de droits d'accès au contrôleur d'entrée natif OCI en tant que programme autonome.
- Indiquez que vous souhaitez utiliser des principaux d'instance avec le contrôleur d'entrée natif OCI en indiquant les éléments suivants dans le fichier values.yaml :
authType: instance
Reportez-vous à Clonage du référentiel de contrôleur entrant natif OCI et définition des paramètres dans values.yaml.
Utilisation de principaux d'utilisateur pour permettre l'accès aux services et ressources OCI
Vous pouvez configurer un principal d'utilisateur pour permettre au contrôleur d'entrée natif OCI d'effectuer des actions sur les ressources de service OCI.
Pour configurer un principal d'utilisateur, procédez comme suit :
- Si un utilisateur approprié n'existe pas encore, créez-en un dans IAM (reportez-vous à Procédure de création d'un utilisateur).
- Si aucun groupe approprié n'existe déjà, créez-en un dans IAM (reportez-vous à Procédure de création d'un groupe).
- Ajoutez l'utilisateur au groupe (reportez-vous à Procédure d'ajout d'un utilisateur à un groupe).
-
Obtenez les éléments suivants :
- Paire de clés RSA au format PEM (2 048 bits au minimum). Reportez-vous à Procédure de génération d'une clé de signature d'API.
- Empreinte de la clé publique. Reportez-vous à Procédure d'obtention de l'empreinte de la clé.
- OCID de la location et OCID de l'utilisateur. Reportez-vous à Emplacement de l'OCID de la location et de l'OCID de l'utilisateur.
- Téléchargez la clé publique à partir de la paire de clés dans la console. Reportez-vous à Procédure de téléchargement de la clé publique.
- Créez un fichier de configuration en tant que fichier .yaml contenant les informations d'identification, au format suivant :
auth: region: <region-identifier> passphrase: <passphrase> user: <user-ocid> fingerprint: <fingerprint> tenancy: <tenancy-ocid>
où :region: <region-identifier>
est la région où réside le cluster. Par exemple,us-ashburn-1
passphrase: <passphrase>
indique la phrase de passe utilisée pour la clé si elle est cryptée.user: <user-ocid>
est l'OCID de l'utilisateur que le contrôleur d'entrée natif OCI doit utiliser.fingerprint: <fingerprint>
est l'empreinte de la clé publique.tenancy: <tenancy-ocid>
est l'OCID de la location contenant le cluster.
Par exemple :
auth: region: us-ashburn-1 passphrase: examplepass user: ocid1.user.oc1..aaaaaaaa_example fingerprint: 67:d9:74:4b:21:example tenancy: ocid1.tenancy.oc1..aaaaaaaa_example
- Créez une ressource de clé secrète Kubernetes dans le cluster en saisissant ce qui suit :
kubectl create secret generic <secret-name> \ --from-file=config=<config-file>.yaml \ --from-file=private-key=<private-key-file-path>.pem \ --namespace <namespace>
où :<secret-name>
indique le nom de la clé secrète à créer. Par exemple,oci-config
--from-file=config=<config-file>.yaml
indique le nom et le chemin du fichier .yaml contenant les informations d'identification que vous avez créées précédemment. Par exemple,user-auth-config.yaml
--from-file=private-key=./oci/oci_api_key.pem
indique le nom et le chemin du fichier de clés privées téléchargé. Par exemple,./oci/oci_api_key.pem
--namespace <namespace>
indique l'espace de noms contenant le contrôleur d'entrée natif OCI
Par exemple :
kubectl create secret generic oci-config \ --from-file=config=user-auth-config.yaml \ --from-file=private-key=./oci/oci_api_key.pem \ --namespace acme-namespace
Avant de déployer le contrôleur d'entrée natif OCI, vous devez :
- Accordez des autorisations à l'utilisateur via le groupe auquel il appartient. Reportez-vous à Octroi de droits d'accès au contrôleur d'entrée natif OCI en tant que programme autonome.
- Indiquez que vous souhaitez utiliser des principaux utilisateur avec le contrôleur d'entrée natif OCI en indiquant les éléments suivants dans le fichier values.yaml :
authType: user authSecretName: <secret-name>
où
<secret-name>
est le nom de la clé secrète Kubernetes que vous avez créée précédemment. Par exemple :authType: user authSecretName: oci-config
Reportez-vous à Clonage du référentiel de contrôleur entrant natif OCI et définition des paramètres dans values.yaml.
Utilisation de principaux d'identité de charge globale pour permettre l'accès aux services et aux ressources OCI
Vous pouvez configurer un principal d'identité de charge globale pour permettre au contrôleur d'entrée natif OCI d'effectuer des actions sur les ressources de service OCI. Notez que vous pouvez uniquement utiliser des principaux d'identité de charge globale avec des clusters améliorés.
Pour configurer un principal d'identité de charge globale, procédez comme suit :
- Obtenez l'OCID du cluster (par exemple, à l'aide de l'onglet Détails du cluster de la console).
-
Avant de déployer le contrôleur d'entrée natif OCI, vous allez :
- Accordez des droits d'accès à l'identité de charge globale du contrôleur d'entrée natif OCI. Reportez-vous à Octroi de droits d'accès au contrôleur d'entrée natif OCI en tant que programme autonome.
- Indiquez que vous souhaitez utiliser des principaux d'identité de charge globale avec le contrôleur d'entrée natif OCI en indiquant les éléments suivants dans le fichier values.yaml :
authType: workloadIdentity
Reportez-vous à Clonage du référentiel de contrôleur entrant natif OCI et définition des paramètres dans values.yaml.
-
Définissez les variables d'environnement
OCI_RESOURCE_PRINCIPAL_VERSION
etOCI_RESOURCE_PRINCIPAL_REGION
dans le fichier deployment.yaml.Reportez-vous à Clonage du référentiel de contrôleur entrant natif OCI et définition des paramètres dans values.yaml.
Octroi de droits d'accès au contrôleur d'entrée natif OCI en tant que programme autonome
Le contrôleur d'entrée natif OCI nécessite des droits d'accès aux ressources créées par d'autres services Oracle Cloud Infrastructure (tels que le service Load Balancer et le service Certificates). Les droits d'accès que vous octroyez sont les mêmes, que vous installiez le contrôleur d'entrée natif OCI en tant que programme autonome ou en tant qu'extension de cluster. De plus, les droits d'accès sont identiques, que vous ayez configuré un principal d'instance, un principal d'utilisateur ou un principal d'identité de charge globale pour le contrôleur d'entrée natif OCI. Toutefois, la façon dont vous accordez ces autorisations dépend du type de principal que vous avez configuré :
- Lorsque vous utilisez des principaux d'instance, le contrôleur d'entrée natif OCI hérite des droits d'accès accordés à l'instance sur laquelle il est exécuté via un groupe dynamique auquel l'instance appartient. Pour plus d'informations sur la création du groupe dynamique pour les principaux d'instance, reportez-vous à Utilisation des principaux d'instance pour activer l'accès aux services et ressources OCI.
- Lorsque vous utilisez des principaux d'utilisateur, le contrôleur d'entrée natif OCI hérite des droits d'accès accordés à un utilisateur via un groupe auquel l'utilisateur appartient. Pour plus d'informations sur la création de l'utilisateur et du groupe pour les principaux d'utilisateur, reportez-vous à Utilisation des principaux d'utilisateur pour activer l'accès aux services et ressources OCI.
- Lorsque vous utilisez des principaux d'identité de charge globale, le contrôleur d'entrée natif OCI hérite des droits d'accès accordés à une charge globale exécutée sur un cluster spécifié, dans le compte de service Kubernetes et l'espace de noms créés pour le contrôleur d'entrée natif OCI lors de l'installation. Pour plus d'informations, reportez-vous à Utilisation de principaux d'identité de charge globale pour permettre l'accès aux services et ressources OCI.
Afin de configurer les droits d'accès pour le contrôleur d'entrée natif OCI, créez une stratégie pour le groupe (dans le cas des principaux d'utilisateur), pour le groupe dynamique (dans le cas des principaux d'instance) ou pour la charge globale (dans le cas des principaux d'identité de charge globale), avec des instructions de stratégie permettant d'accéder aux services et ressources OCI :
- Ouvrez le menu de navigation et sélectionnez Identité et sécurité. Sous Identité, sélectionnez Stratégies.
- Suivez les instructions dans Procédure de création d'une stratégie et donnez un nom à cette stratégie (par exemple,
acme-oke-native-ingress-controller-policy
). -
Si vous utilisez des principaux d'instance ou des principaux d'utilisateur, entrez des instructions de stratégie pour autoriser l'accès aux services et ressources OCI utilisés par le contrôleur d'entrée natif OCI, au format suivant :
Allow <group|dynamic-group> <subject-name> to <verb> <resource> in <location>
où :
<group|dynamic-group>
correspond àgroup
(dans le cas des principaux d'utilisateur) ou àdynamic-group
(dans le cas des principaux d'instance)<subject-name>
est soit le nom du groupe (dans le cas des principaux utilisateur), soit le nom du groupe dynamique (dans le cas des principaux d'instance). Par exemple,acme-oke-nat-ing-cont-dyn-grp
. Si un groupe ou un groupe dynamique ne se trouve pas dans le domaine d'identité par défaut, faites précéder le nom de groupe ou de groupe dynamique du nom de domaine d'identité au format<group|dynamic-group> '<identity-domain-name>'/'<group-name|dynamic-group-name>'
. Vous pouvez également indiquer un groupe ou un groupe dynamique à l'aide de son OCID, au formatgroup id <group-ocid>
oudynamic-group id <dynamic-group-ocid>
.<verb> <resource>
est l'un des éléments suivants (tous ces éléments sont requis dans des instructions de stratégie distinctes) :manage load-balancers
use virtual-network-family
manage cabundles
manage cabundle-associations
manage leaf-certificates
read leaf-certificate-bundles
manage leaf-certificate-versions
manage certificate-associations
read certificate-authorities
manage certificate-authority-associations
read certificate-authority-bundles
read public-ips
manage floating-ips
manage waf-family
read cluster-family
use tag-namespaces
(requis uniquement si vous voulez que le contrôleur d'entrée natif OCI applique des balises définies aux équilibreurs de charge, reportez-vous à Application de balises définies à l'équilibreur de charge)
<location>
est l'un des éléments suivants :tenancy
, si vous voulez que le contrôleur d'entrée natif OCI ait accès aux ressources dans l'ensemble de la location.compartment <compartment-name>
si vous voulez uniquement que le contrôleur d'entrée natif OCI ait accès aux ressources du compartiment dont le nom estcompartment <compartment-name>
.
Par exemple :
Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to manage load-balancers in compartment acme-oke-cluster-compartment
La syntaxe de la liste complète des instructions de stratégie est la suivante :
Allow <group|dynamic-group> <subject-name> to manage load-balancers in <location> Allow <group|dynamic-group> <subject-name> to use virtual-network-family in <location> Allow <group|dynamic-group> <subject-name> to manage cabundles in <location> Allow <group|dynamic-group> <subject-name> to manage cabundle-associations in <location> Allow <group|dynamic-group> <subject-name> to manage leaf-certificates in <location> Allow <group|dynamic-group> <subject-name> to read leaf-certificate-bundles in <location> Allow <group|dynamic-group> <subject-name> to manage leaf-certificate-versions in <location> Allow <group|dynamic-group> <subject-name> to manage certificate-associations in <location> Allow <group|dynamic-group> <subject-name> to read certificate-authorities in <location> Allow <group|dynamic-group> <subject-name> to manage certificate-authority-associations in <location> Allow <group|dynamic-group> <subject-name> to read certificate-authority-bundles in <location> Allow <group|dynamic-group> <subject-name> to read public-ips in <location> Allow <group|dynamic-group> <subject-name> to manage floating-ips in <location> Allow <group|dynamic-group> <subject-name> to manage waf-family in <location> Allow <group|dynamic-group> <subject-name> to read cluster-family in <location> Allow <group|dynamic-group> <subject-name> to use tag-namespaces in <location>
Exemple de la liste complète des instructions de stratégie :
Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to manage load-balancers in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to use virtual-network-family in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to manage cabundles in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to manage cabundle-associations in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to manage leaf-certificates in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to read leaf-certificate-bundles in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to manage leaf-certificate-versions in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to manage certificate-associations in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to read certificate-authorities in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to manage certificate-authority-associations in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to read certificate-authority-bundles in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to read public-ips in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to manage floating-ips in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to manage waf-family in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to read cluster-family in compartment acme-oke-cluster-compartment Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to use tag-namespaces in compartment acme-oke-cluster-compartment
- Si vous utilisez des principaux d'identité de charge globale, entrez des instructions de stratégie pour autoriser l'accès aux services et ressources OCI utilisés par le contrôleur d'entrée natif OCI, au format suivant :
Allow any-user to <verb> <resource> in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'}
où :
<verb> <resource>
est l'un des éléments suivants (tous ces éléments sont requis dans des instructions de stratégie distinctes) :manage load-balancers
use virtual-network-family
manage cabundles
manage cabundle-associations
manage leaf-certificates
read leaf-certificate-bundles
manage leaf-certificate-versions
manage certificate-associations
read certificate-authorities
manage certificate-authority-associations
read certificate-authority-bundles
read public-ips
manage floating-ips
manage waf-family
read cluster-family
use tag-namespaces
(requis uniquement si vous voulez que le contrôleur d'entrée natif OCI applique des balises définies aux équilibreurs de charge, reportez-vous à Application de balises définies à l'équilibreur de charge)
<location>
est l'un des éléments suivants :tenancy
, si vous voulez que le contrôleur d'entrée natif OCI ait accès aux ressources dans l'ensemble de la location.compartment <compartment-name>
si vous voulez uniquement que le contrôleur d'entrée natif OCI ait accès aux ressources du compartiment dont le nom estcompartment <compartment-name>
.
request.principal.namespace = 'native-ingress-controller-system'
est le nom de l'espace de noms créé pour le contrôleur d'entrée natif OCI lors de l'installation.request.principal.service_account = 'oci-native-ingress-controller'
est le nom du compte de service créé pour le contrôleur d'entrée natif OCI lors de l'installation.<cluster-ocid>
est l'OCID du cluster que vous avez obtenu précédemment.
Par exemple :
Allow any-user to manage load-balancers in tenancy where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
La syntaxe de la liste complète des instructions de stratégie est la suivante :
Allow any-user to manage load-balancers in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to use virtual-network-family in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage cabundles in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage cabundle-associations in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage leaf-certificates in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to read leaf-certificate-bundles in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage leaf-certificate-versions in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage certificate-associations in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to read certificate-authorities in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage certificate-authority-associations in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to read certificate-authority-bundles in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to read public-ips in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage floating-ips in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage waf-family in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to read cluster-family in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to use tag-namespaces in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'}
Installation du gestionnaire de certificats
Le contrôleur d'entrée natif OCI, qu'il soit installé en tant que programme autonome ou en tant qu'extension de cluster, utilise des webhooks pour injecter des portes de préparation de pod dans les spécifications de pod. Pour assurer la sécurité, le serveur de webhook doit s'exécuter en mode HTTPS, ce qui nécessite une paire de certificats et de clés. Le contrôleur d'entrée natif OCI utilise Certificate Manager (également appelé cert-manager) pour générer et gérer les certificats et les clés du serveur de webhook. Vous devez donc installer cert-manager sur le cluster pour utiliser les portes de préparation de pod.
Que vous installiez le contrôleur d'entrée natif OCI en tant que programme autonome ou en tant qu'extension de cluster, vous pouvez installer et exécuter le gestionnaire de certificats de deux manières :
-
Vous pouvez installer et exécuter cert-manager en tant que produit open source, en saisissant :
kubectl apply -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.yaml
-
Vous pouvez installer et exécuter cert-manager en tant qu'extension de cluster. Pour plus d'informations sur l'installation de cert-manager en tant qu'extension de cluster, reportez-vous à la section Installing a Cluster Add-on.
Pour plus d'informations sur cert-manager, reportez-vous à la documentation cert-manager.io.
Installation de l'interface de ligne de commande Helm pour installer le contrôleur d'entrée natif OCI en tant que programme autonome
Helm est un gestionnaire de packages pour Kubernetes. Helm est couramment utilisé pour créer, packager, configurer et déployer des applications Kubernetes en combinant des fichiers de configuration dans un seul package réutilisable appelé graphique Helm. Les graphiques sont packagés et distribués dans un format d'archive appelé archive de dossier. Un graphique contient les informations nécessaires pour installer un ensemble de ressources Kubernetes sur un cluster Kubernetes. Un graphique comprend :
- un fichier chart.yaml, décrivant l'application,
- un fichier values.yaml, fournissant des valeurs par défaut pour les paramètres d'application
- modèles des fichiers utilisés par l'application
- autres dépendances
Helm dispose également d'un client de ligne de commande, la CLI Helm (parfois appelée helm, toutes en minuscules).
Pour installer le contrôleur d'entrée natif OCI en tant que programme autonome, le contrôleur d'entrée natif OCI est disponible sous forme de graphique Helm. Pour pouvoir installer le graphique de contrôleur d'entrée natif OCI, vous devez d'abord installer l'interface de ligne de commande Helm.
Pour installer l'interface de ligne de commande Helm, suivez les instructions de la documentation d'installation Helm afin de télécharger et d'extraire le fichier d'archive ZIP ou tar.gz approprié.
Clonage du référentiel de contrôleur entrant natif OCI et définition des paramètres dans values.yaml
Pour cloner le contrôleur d'entrée natif OCI et définir des paramètres dans values.yaml en vue de l'installation du contrôleur d'entrée natif OCI en tant que programme autonome, procédez comme suit :
- Cloner le référentiel de contrôleur d'entrée natif OCI à partir de GitHub en saisissant la commande suivante :
git clone https://github.com/oracle/oci-native-ingress-controller
- Dans le référentiel Git local, accédez au répertoire
oci-native-ingress-controller
et ouvrez le fichiervalues.yaml
dans un éditeur de texte. - Dans le fichier
values.yaml
, définissez le paramètrecompartment_id
sur l'OCID du compartiment dans lequel le contrôleur d'entrée natif OCI doit créer l'équilibreur de charge et le certificat OCI. Par exemple :compartment_id: "ocid1.compartment.oc1..aaaaaaaa______ddq"
- Dans le fichier
values.yaml
, définissez le paramètresubnet_id
sur l'OCID du sous-réseau de l'équilibreur de charge. Par exemple :subnet_id: "ocid1.subnet.oc1.iad.aaaaaaaa______dba"
- Dans le fichier
values.yaml
, définissez le paramètrecluster_id
sur l'OCID du cluster. Par exemple :cluster_id: "ocid1.cluster.oc1.iad.aaaaaaaa______ska"
- Dans le fichier
values.yaml
, indiquez comment le contrôleur d'entrée natif OCI doit accéder aux services et aux ressources OCI comme suit :- Pour indiquer que le contrôleur d'entrée natif OCI doit accéder aux services et aux ressources OCI à l'aide d'un principal d'instance, définissez le paramètre
authType
comme suit :authType: instance
Reportez-vous à Utilisation de principaux d'instance pour activer l'accès aux services et ressources OCI.
- Pour indiquer que le contrôleur d'entrée natif OCI doit accéder aux services et aux ressources OCI à l'aide d'un principal d'utilisateur, définissez les paramètres
authType
etauthSecretName
comme suit :authType: user authSecretName: <secret-name>
où
<secret-name>
est le nom de la clé secrète Kubernetes que vous avez créée précédemment. Par exemple :authType: user authSecretName: oci-config
Reportez-vous à Utilisation de principaux d'utilisateur pour activer l'accès aux services et ressources OCI.
- Pour indiquer que le contrôleur d'entrée natif OCI doit accéder aux services et aux ressources OCI à l'aide d'un principal d'identité de charge globale, définissez les paramètres
authType
comme suit :authType: workloadIdentity
Reportez-vous à Utilisation de principaux d'identité de charge globale pour permettre l'accès aux services et ressources OCI.
- Pour indiquer que le contrôleur d'entrée natif OCI doit accéder aux services et aux ressources OCI à l'aide d'un principal d'instance, définissez le paramètre
- (Facultatif) Si vous voulez exécuter plusieurs instances du contrôleur d'entrée natif OCI pour des raisons de disponibilité, modifiez la valeur de
replicaCount
dans le fichiervalues.yaml
. Par exemple :
Par défaut,replicaCount: 3
replicaCount
est défini sur1
, ce qui signifie qu'une instance du contrôleur d'entrée natif OCI est exécutée en tant que pod unique. Pour garantir la disponibilité, vous pouvez augmenterreplicaCount
(généralement vers2
ou3
) afin d'exécuter plusieurs instances de contrôleur d'entrée natives OCI en tant que pods différents. Un pod est nommé en tant que leader et agit en tant que contrôleur d'entrée natif OCI, tandis que les pods restants attendent dans un état passif. Si le leader devient par la suite indisponible, l'un des autres pods est nommé en tant que leader et agit en tant que contrôleur d'entrée natif OCI. - Enregistrez les modifications que vous avez apportées dans le fichier
values.yaml
et fermez le fichier. - Si vous voulez que le contrôleur d'entrée natif OCI accède aux services et ressources OCI à l'aide d'un principal d'identité de charge globale, vous devez définir des variables d'environnement supplémentaires comme suit :
- Dans le référentiel Git local, accédez au répertoire
oci-native-ingress-controller/templates
et ouvrez le fichierdeployment.yaml
dans un éditeur de texte. - Dans le fichier
deployment.yaml
, définissez les variables d'environnement suivantes comme indiqué :env: - name: OCI_RESOURCE_PRINCIPAL_VERSION value: "2.2" - name: OCI_RESOURCE_PRINCIPAL_REGION value: "us-ashburn-1"
- Enregistrez les modifications que vous avez apportées dans le fichier
deployment.yaml
et fermez le fichier.
- Dans le référentiel Git local, accédez au répertoire