Voraussetzungen für das Deployment des OCI Native Ingress Controller als Standalone-Programm
Erfahren Sie, was Sie tun müssen, bevor Sie den nativen OCI-Ingress-Controller als Standalone-Programm bereitstellen können, um eingehenden Traffic zu laden und an Servicepods weiterzuleiten, die auf Worker-Knoten in einem Kubernetes-Cluster ausgeführt werden.
Vor dem Deployment des nativen OCI-Ingress-Controllers als Standalone-Programm:
- Erstellen Sie ein neues Cluster, oder identifizieren Sie ein vorhandenes Cluster, das entweder VCN-natives Podnetzwerk oder Flannel-Overlay als Netzwerktyp enthält. Das Cluster kann ein erweitertes Cluster oder ein einfaches Cluster sein. Das Cluster muss die Kubernetes-Version 1.26 oder höher ausführen. Siehe Cluster erstellen.
- Konfigurieren Sie Load-Balancer-Sicherheitsregeln, um eingehenden und ausgehenden Traffic zum und vom Subnetz des Load Balancers zuzulassen. Siehe Load-Balancer-Subnetzkonfiguration.
- Richten Sie einen Instanz-Principal, einen Benutzer-Principal oder einen Workload-Identitäts-Principal ein, damit der native OCI-Ingress-Controller auf andere Oracle Cloud Infrastructure-Services und -Ressourcen zugreifen kann. Siehe Instanz-Principal, Benutzer-Principal oder Workload-Identitäts-Principal einrichten, um Zugriff auf OCI-Services und -Ressourcen zu ermöglichen.
- Erteilen Sie dem Instanz-Principal, dem Benutzer-Principal oder dem Workload-Identitäts-Principal Berechtigungen, damit der native OCI-Ingress-Controller auf Ressourcen zugreifen kann. Siehe Berechtigungen für OCI Native Ingress Controller als Standalone-Programm erteilen.
- Installieren Sie cert-manager, um die TLS-Zertifikate zu generieren und zu verwalten, die vom Webhook-Server benötigt werden, der die Pod Readiness Gates-Funktion unterstützt. Siehe cert-manager installieren.
- Installieren Sie die Helm-CLI, damit Sie den nativen OCI-Ingress-Controller auf zwei Arten installieren können. Siehe Helm-CLI installieren, um OCI Native Ingress Controller als Standalone-Programm zu installieren.
- Klonen Sie das native OCI-Ingress-Controller-Repository von GitHub in ein lokales Repository, damit Sie den nativen OCI-Ingress-Controller bereitstellen und Parameterwerte für das Deployment angeben können. Siehe OCI Native Ingress Controller Repository klonen und Parameter in values.yaml festlegen.
Instanz-Principal, Benutzer-Principal oder Workload Identity Principal einrichten, um den Zugriff auf OCI-Services und -Ressourcen zu ermöglichen
Um einen Load Balancer zu erstellen und eingehenden Traffic weiterzuleiten, führt der native OCI-Ingress-Controller, unabhängig davon, ob er als Standalone-Programm oder als Cluster-Add-on installiert ist, Aktionen für andere Oracle Cloud Infrastructure-Serviceressourcen aus (einschließlich Load-Balancer-Service und Certificates-Service). Um diese Aktionen für OCI-Serviceressourcen auszuführen, verwendet der native OCI-Ingress-Controller-Pod die Zugangsdaten eines autorisierten Akteurs (oder Principals). Sie können derzeit die folgenden Principal-Typen einrichten, damit der native OCI-Ingress-Controller Aktionen mit OCI-Serviceressourcen ausführen kann:
- Instanz-Principal: Der native OCI-Ingress-Controller verwendet die Identität der Instanz, auf der er ausgeführt wird. Siehe Instanz-Principals verwenden, um den Zugriff auf OCI-Services und -Ressourcen zu aktivieren.
- Benutzer-Principal: Der native OCI-Ingress-Controller verwendet die Identität eines OCI-Benutzers. Siehe Benutzer-Principals für den Zugriff auf OCI-Services und -Ressourcen verwenden.
- Workload-Identity-Principal: Der native OCI-Ingress-Controller verwendet die Identität einer Workload-Ressource, die auf einem Kubernetes-Cluster ausgeführt wird. Siehe Workload-Identity Principals verwenden, um den Zugriff auf OCI-Services und -Ressourcen zu ermöglichen.
Hinweis:
- Die Verwendung von Instanz-Principals, damit der native OCI-Ingress-Controller auf OCI-Services und -Ressourcen zugreifen kann, wird in Clustern mit virtuellen Knoten nicht unterstützt.
- Die Verwendung von Workload-Identitäts-Principals, damit der native OCI-Ingress-Controller auf OCI-Services und -Ressourcen zugreifen kann, wird mit erweiterten Clustern unterstützt, jedoch nicht mit einfachen Clustern.
Zugriff auf OCI-Services und -Ressourcen mit Instanz-Principals aktivieren
Sie können einen Instanz-Principal einrichten, damit der native OCI-Ingress-Controller Aktionen mit OCI-Serviceressourcen ausführen kann. Beachten Sie, dass Sie Instanz-Principals nur mit verwalteten Knoten verwenden können.
So richten Sie einen Instanz-Principal ein:
- Erstellen Sie eine neue dynamische Gruppe in dem Compartment, zu dem die Compute-Instanzen gehören, mit den Compute-Instanzen, die Worker-Knoten des Clusters hosten:
-
Befolgen Sie die Anweisungen unter So erstellen Sie eine dynamische Gruppe in der IAM-Dokumentation, und geben sie der neuen dynamischen Gruppe einen Namen (Beispiel:
acme-oke-native-ingress-controller-dyn-grp). - Geben Sie eine Regel mit den Compute-Instanzen im Compartment im folgenden Format ein:
ALL {instance.compartment.id = '<compartment-ocid>'}wobei
<compartment-ocid>die OCID des Compartments ist, in dem Clusterknotenpools erstellt werden.Beispiel:
ALL {instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaa23______smwa'}
-
Bevor Sie den nativen OCI-Ingress-Controller bereitstellen, gehen Sie wie folgt vor:
- Erteilen Sie Berechtigungen für die Instanz, auf der der native OCI-Ingress-Controller über die dynamische Gruppe ausgeführt wird. Siehe Berechtigungen für OCI Native Ingress Controller als Standalone-Programm erteilen.
- Geben Sie an, dass Sie Instanz-Principals mit dem nativen OCI-Ingress-Controller verwenden möchten, indem Sie Folgendes in der Datei values.yaml angeben:
authType: instanceSiehe OCI Native Ingress Controller Repository klonen und Parameter festlegen in values.yaml.
Mit Benutzer-Principals den Zugriff auf OCI-Services und -Ressourcen aktivieren
Sie können einen Benutzer-Principal einrichten, damit der native OCI-Ingress-Controller Aktionen mit OCI-Serviceressourcen ausführen kann.
So richten Sie einen Benutzer-Principal ein:
- Wenn noch kein geeigneter Benutzer vorhanden ist, erstellen Sie einen Benutzer in IAM (siehe So erstellen Sie einen Benutzer).
- Wenn noch keine geeignete Gruppe vorhanden ist, erstellen Sie eine Gruppe in IAM (siehe So erstellen Sie eine Gruppe).
- Fügen Sie den Benutzer der Gruppe hinzu (siehe So fügen Sie einer Gruppe einen Benutzer hinzu).
-
Rufen Sie diese Elemente ab:
- RSA-Schlüsselpaar im PEM-Format (mindestens 2048 Bit). Siehe So generieren Sie einen API-Signaturschlüssel.
- Fingerprint des Public Key. Siehe So rufen Sie den Fingerprint des Schlüssels ab.
- OCID des Mandanten und des Benutzers. Siehe Hier rufen Sie die OCID des Mandanten und die OCID des Benutzers ab.
- Laden Sie den Public Key aus dem Schlüsselpaar in der Konsole hoch. Siehe So laden Sie den Public Key hoch.
- Erstellen Sie eine Konfigurationsdatei als .yaml-Datei mit Zugangsdateninformationen im folgenden Format:
auth: region: <region-identifier> passphrase: <passphrase> user: <user-ocid> fingerprint: <fingerprint> tenancy: <tenancy-ocid>Hierbei gilt:region: <region-identifier>ist die Region, in der sich das Cluster befindet. Beispiel:us-ashburn-1passphrase: <passphrase>gibt die Passphrase für den Schlüssel an, wenn er verschlüsselt ist.user: <user-ocid>ist die OCID des Benutzers, den der native Ingress-Controller von OCI verwenden soll.fingerprint: <fingerprint>ist der Fingerprint des Public Keys.tenancy: <tenancy-ocid>ist die OCID des Mandanten, der das Cluster enthält.
Beispiel:
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 - Erstellen Sie eine Kubernetes-Secret-Ressource im Cluster, indem Sie Folgendes eingeben:
kubectl create secret generic <secret-name> \ --from-file=config=<config-file>.yaml \ --from-file=private-key=<private-key-file-path>.pem \ --namespace <namespace>Hierbei gilt:<secret-name>gibt den Namen des zu erstellenden Secrets an. Beispiel:oci-config--from-file=config=<config-file>.yamlgibt den Namen und Pfad der .yaml-Datei mit den zuvor erstellten Zugangsdateninformationen an. Beispiel:user-auth-config.yaml--from-file=private-key=./oci/oci_api_key.pemgibt den Namen und Pfad der heruntergeladenen Private-Key-Datei an. Beispiel:./oci/oci_api_key.pem--namespace <namespace>gibt den Namespace an, der den nativen OCI-Ingress-Controller enthält.
Beispiel:
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
Bevor Sie den nativen OCI-Ingress-Controller bereitstellen, gehen Sie wie folgt vor:
- Erteilen Sie dem Benutzer Berechtigungen über die Gruppe, zu der der Benutzer gehört. Siehe OCI Native Ingress Controller Berechtigungen als Standalone-Programm erteilen.
- Geben Sie an, dass Sie Benutzer-Principals mit dem nativen OCI-Ingress-Controller verwenden möchten, indem Sie in der Datei values.yaml Folgendes angeben:
authType: user authSecretName: <secret-name>Dabei ist
<secret-name>der Name des zuvor erstellten Kubernetes-Secrets. Beispiel:authType: user authSecretName: oci-configSiehe OCI Native Ingress Controller Repository klonen und Parameter festlegen in values.yaml.
Workload Identity Principals verwenden, um Zugriff auf OCI-Services und -Ressourcen zu ermöglichen
Sie können einen Workload-Identitäts-Principal einrichten, damit der native OCI-Ingress-Controller Aktionen mit OCI-Serviceressourcen ausführen kann. Beachten Sie, dass Sie nur Workload-Identity Principals mit erweiterten Clustern verwenden können.
So richten Sie einen Workload Identity Principal ein:
- Rufen Sie die OCID des Clusters ab (Beispiel: auf der Registerkarte Clusterdetails in der Konsole).
Bevor Sie den nativen OCI-Ingress-Controller bereitstellen, gehen Sie wie folgt vor:
- Erteilen Sie Berechtigungen für die Workload-Identität des nativen OCI-Ingress-Controllers. Siehe Berechtigungen für OCI Native Ingress Controller als Standalone-Programm erteilen.
- Geben Sie an, dass Sie Workload-Identitäts-Principals mit dem nativen OCI-Ingress-Controller verwenden möchten, indem Sie in der Datei values.yaml Folgendes angeben:
authType: workloadIdentitySiehe OCI Native Ingress Controller Repository klonen und Parameter festlegen in values.yaml.
-
Legen Sie die Umgebungsvariablen
OCI_RESOURCE_PRINCIPAL_VERSIONundOCI_RESOURCE_PRINCIPAL_REGIONin der Datei deployment.yaml fest.Siehe OCI Native Ingress Controller Repository klonen und Parameter festlegen in values.yaml.
OCI Native Ingress Controller Berechtigungen als Standalone-Programm erteilen
Der native OCI-Ingress-Controller erfordert Berechtigungen für den Zugriff auf Ressourcen, die von anderen Oracle Cloud Infrastructure-Services (wie dem Load-Balancer-Service und dem Certificates-Service) erstellt wurden. Sie erteilen dieselben Berechtigungen, unabhängig davon, ob Sie den nativen OCI-Ingress-Controller als eigenständiges Programm oder als Cluster-Add-on installieren. Und die Berechtigungen sind identisch, unabhängig davon, ob Sie einen Instanz-Principal, einen Benutzer-Principal oder einen Workload-Identitäts-Principal für den nativen OCI-Ingress-Controller eingerichtet haben. Die Art und Weise, wie Sie diese Berechtigungen erteilen, hängt jedoch von dem von Ihnen eingerichteten Principal-Typ ab:
- Wenn Sie Instanz-Principals verwenden, erbt der native OCI-Ingress-Controller die Berechtigungen, die der Instanz erteilt werden, auf der er über eine dynamische Gruppe ausgeführt wird, zu der die Instanz gehört. Informationen zum Erstellen der dynamischen Gruppe für Instanz-Principals finden Sie unter Instanz-Principals verwenden, um Zugriff auf OCI-Services und -Ressourcen zu ermöglichen.
- Bei der Verwendung von Benutzer-Principals erbt der native OCI-Ingress-Controller die Berechtigungen, die einem Benutzer über eine Gruppe erteilt wurden, zu der der Benutzer gehört. Informationen zum Erstellen des Benutzers und der Gruppe für Benutzer-Principals finden Sie unter Benutzer-Principals verwenden, um Zugriff auf OCI-Services und -Ressourcen zu ermöglichen.
- Bei der Verwendung von Workload-Identity Principals erbt der native OCI-Ingress-Controller die Berechtigungen, die einer Workload erteilt werden, die auf einem angegebenen Cluster ausgeführt wird, im Kubernetes-Serviceaccount und im Namespace, der während der Installation für den nativen OCI-Ingress-Controller erstellt wurde. Weitere Informationen finden Sie unter Workload-Identity Principals verwenden, um den Zugriff auf OCI-Services und -Ressourcen zu ermöglichen.
Um Berechtigungen für den nativen Ingress-Controller von OCI einzurichten, erstellen Sie eine Policy für die Gruppe (im Fall von Benutzer-Principals), für die dynamische Gruppe (im Fall von Instanz-Principals) oder für die Workload (im Fall von Workload-Identitäts-Principals) mit Policy-Anweisungen für den Zugriff auf OCI-Services und -Ressourcen:
- Befolgen Sie die Anweisungen unter So erstellen Sie eine Policy in der IAM-Dokumentation, und Geben Sie der neuen Policy einen Namen (Beispiel:
acme-oke-native-ingress-controller-policy). -
Wenn Sie Instanz-Principals oder Benutzer-Principals verwenden, geben Sie Policy-Anweisungen ein, um den Zugriff auf die OCI-Services und -Ressourcen zuzulassen, die vom nativen OCI-Ingress-Controller verwendet werden, in folgendem Format:
Allow <group|dynamic-group> <subject-name> to <verb> <resource> in <location>Hierbei gilt:
<group|dynamic-group>ist entwedergroup(im Fall von Benutzer-Principals) oderdynamic-group(im Fall von Instanz-Principals)<subject-name>ist entweder der Name der Gruppe (im Fall von Benutzer-Principals) oder der Name der dynamischen Gruppe (im Fall von Instanz-Principals). Beispiel:acme-oke-nat-ing-cont-dyn-grp. Wenn eine Gruppe oder dynamische Gruppe nicht in der Standardidentitätsdomain enthalten ist, stellen Sie dem Namen der Gruppe oder dynamischen Gruppe den Namen der Identitätsdomain im Format<group|dynamic-group> '<identity-domain-name>'/'<group-name|dynamic-group-name>'voran. Sie können auch eine Gruppe oder dynamische Gruppe mit ihrer OCID im Formatgroup id <group-ocid>oderdynamic-group id <dynamic-group-ocid>angeben.<verb> <resource>ist eine der folgenden Optionen (alle sind in separaten Policy-Anweisungen erforderlich):manage load-balancersuse virtual-network-familymanage cabundlesmanage cabundle-associationsmanage leaf-certificatesread leaf-certificate-bundlesmanage leaf-certificate-versionsmanage certificate-associationsread certificate-authoritiesmanage certificate-authority-associationsread certificate-authority-bundlesread public-ipsmanage floating-ipsmanage waf-familyread cluster-familyuse tag-namespaces(nur erforderlich, wenn der native OCI-Ingress-Controller definierte Tags auf Load Balancer anwenden soll, siehe Definierte Tags auf den Load Balancer anwenden)
<location>ist eine der folgenden Optionen:tenancy, wenn der native OCI-Ingress-Controller Zugriff auf Ressourcen im gesamten Mandanten haben soll.compartment <compartment-name>, wenn der native OCI-Ingress-Controller nur Zugriff auf Ressourcen im Compartment mit dem Namen haben soll, den Sie alscompartment <compartment-name>angeben.
Beispiel:
Allow dynamic-group acme-oke-nat-ing-cont-dyn-grp to manage load-balancers in compartment acme-oke-cluster-compartmentDie Syntax für die vollständige Liste der Policy-Anweisungen lautet wie folgt:
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>Beispiel für eine vollständige Liste der Policy-Anweisungen:
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 - Wenn Sie Workload-Identitäts-Principals verwenden, geben Sie Policy-Anweisungen ein, um den Zugriff auf die OCI-Services und -Ressourcen zuzulassen, die vom nativen OCI-Ingress-Controller verwendet werden, in folgendem Format:
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>'}Hierbei gilt:
<verb> <resource>ist eine der folgenden Optionen (alle sind in separaten Policy-Anweisungen erforderlich):manage load-balancersuse virtual-network-familymanage cabundlesmanage cabundle-associationsmanage leaf-certificatesread leaf-certificate-bundlesmanage leaf-certificate-versionsmanage certificate-associationsread certificate-authoritiesmanage certificate-authority-associationsread certificate-authority-bundlesread public-ipsmanage floating-ipsmanage waf-familyread cluster-familyuse tag-namespaces(nur erforderlich, wenn der native OCI-Ingress-Controller definierte Tags auf Load Balancer anwenden soll, siehe Definierte Tags auf den Load Balancer anwenden)
<location>ist eine der folgenden Optionen:tenancy, wenn der native OCI-Ingress-Controller Zugriff auf Ressourcen im gesamten Mandanten haben soll.compartment <compartment-name>, wenn der native OCI-Ingress-Controller nur Zugriff auf Ressourcen im Compartment mit dem Namen haben soll, den Sie alscompartment <compartment-name>angeben.
request.principal.namespace = 'native-ingress-controller-system'ist der Name des Namespace, der während der Installation für den nativen Ingress-Controller von OCI erstellt wurde.request.principal.service_account = 'oci-native-ingress-controller'ist der Name des Serviceaccounts, der während der Installation für den nativen Ingress-Controller von OCI erstellt wurde.<cluster-ocid>ist die OCID des Clusters, die Sie zuvor abgerufen haben.
Beispiel:
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'}Die Syntax für die vollständige Liste der Policy-Anweisungen lautet:
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>'}
cert-manager wird installiert
Der native OCI-Ingress-Controller, unabhängig davon, ob er als Standalone-Programm oder als Cluster-Add-on installiert ist, verwendet Webhooks, um Podbereitschaftsgates in Podspezifikationen zu injizieren. Um die Sicherheit zu gewährleisten, muss der Webhook-Server im HTTPS-Modus ausgeführt werden, für den ein Paar Zertifikate und Schlüssel erforderlich ist. Der native Ingress-Controller von OCI verwendet Certificate Manager (auch als Cert-Manager bezeichnet), um die Zertifikate und Schlüssel für den Webhook-Server zu generieren und zu verwalten. Daher müssen Sie den Cert-Manager auf dem Cluster installieren, um Pod Readiness-Gates zu verwenden.
Unabhängig davon, ob Sie den nativen OCI-Ingress-Controller als eigenständiges Programm oder als Cluster-Add-on installieren, können Sie cert-manager auf zwei Arten installieren und ausführen:
-
Sie können cert-manager als Open-Source-Produkt installieren und ausführen, indem Sie Folgendes eingeben:
kubectl apply -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.yaml -
Sie können cert-manager als Cluster-Add-on installieren und ausführen. Weitere Informationen zur Installation von cert-manager als Cluster-Add-on finden Sie unter Cluster-Add-on installieren.
Weitere Informationen zum cert-Manager finden Sie in der cert-manager.io-Dokumentation.
Helm-CLI installieren, um den OCI Native Ingress Controller als Standalone-Programm zu installieren
Helm ist ein Package Manager für Kubernetes. Helm wird häufig zum Erstellen, Packen, Konfigurieren und Bereitstellen von Kubernetes-Anwendungen verwendet, indem Konfigurationsdateien in einem einzigen wiederverwendbaren Package kombiniert werden, das als Helm-Diagramm bezeichnet wird. Diagramme werden in einem Archivformat verpackt und verteilt, das als Diagrammarchiv bezeichnet wird. Ein Diagramm enthält die erforderlichen Informationen zur Installation einer Gruppe von Kubernetes-Ressourcen in einem Kubernetes-Cluster. Ein Diagramm umfasst:
- eine chart.yaml-Datei mit einer Beschreibung der Anwendung,
- eine Datei values.yaml, die Standardwerte für Anwendungsparameter bereitstellt
- Vorlagen von Dateien, die von der Anwendung verwendet werden
- andere Abhängigkeiten
Helm verfügt auch über einen Befehlszeilenclient, die Helm-CLI (auch als "helm" bezeichnet, in Kleinbuchstaben)
Um den nativen OCI-Ingress-Controller als Standalone-Programm zu installieren, wird der native OCI-Ingress-Controller als Helm-Diagramm verfügbar gemacht. Bevor Sie das native Ingress-Controllerdiagramm von OCI installieren können, müssen Sie zuerst die Helm-CLI installieren.
Um die Helm-CLI zu installieren, befolgen Sie die Anweisungen in der Helm-Installationsdokumentation, um die entsprechende tar.gz- oder ZIP-Archivdatei herunterzuladen und zu extrahieren.
OCI Native Ingress Controller-Repository klonen und Parameter in values.yaml festlegen
So klonen Sie den nativen OCI-Ingress-Controller und legen Parameter in values.yaml fest, um den nativen OCI-Ingress-Controller als Standalone-Programm zu installieren:
- Klonen Sie das native OCI-Ingress-Controller-Repository aus GitHub, indem Sie Folgendes eingeben:
git clone https://github.com/oracle/oci-native-ingress-controller - Navigieren Sie im lokalen Git-Repository zum Verzeichnis
oci-native-ingress-controller, und öffnen Sie die Dateivalues.yamlin einem Texteditor. - Setzen Sie in der Datei
values.yamlden Parametercompartment_idauf die OCID des Compartments, in dem der native OCI-Ingress-Controller den OCI-Load Balancer und das Zertifikat erstellen soll. Beispiel:compartment_id: "ocid1.compartment.oc1..aaaaaaaa______ddq" - Setzen Sie in der Datei
values.yamlden Parametersubnet_idauf die OCID des Load-Balancer-Subnetzes. Beispiel:subnet_id: "ocid1.subnet.oc1.iad.aaaaaaaa______dba" - Legen Sie in der Datei
values.yamlden Parametercluster_idauf die OCID des Clusters fest. Beispiel:cluster_id: "ocid1.cluster.oc1.iad.aaaaaaaa______ska" - Geben Sie in der Datei
values.yamlwie folgt an, wie der native OCI-Ingress-Controller auf OCI-Services und -Ressourcen zugreifen soll:- Um anzugeben, dass der native Ingress-Controller von OCI über einen Instanz-Principal auf OCI-Services und -Ressourcen zugreifen soll, legen Sie den Parameter
authTypewie folgt fest:authType: instanceSiehe Instanz-Principals verwenden, um den Zugriff auf OCI-Services und -Ressourcen zu ermöglichen.
- Um anzugeben, dass der native OCI-Ingress-Controller mit einem Benutzer-Principal auf OCI-Services und -Ressourcen zugreifen soll, legen Sie die Parameter
authTypeundauthSecretNamewie folgt fest:authType: user authSecretName: <secret-name>Dabei ist
<secret-name>der Name des zuvor erstellten Kubernetes-Secrets. Beispiel:authType: user authSecretName: oci-configSiehe Benutzer-Principals verwenden, um den Zugriff auf OCI-Services und -Ressourcen zu aktivieren.
- Um anzugeben, dass der native Ingress-Controller von OCI über einen Workload-Identity Principal auf OCI-Services und -Ressourcen zugreifen soll, legen Sie die
authType-Parameter wie folgt fest:authType: workloadIdentity
- Um anzugeben, dass der native Ingress-Controller von OCI über einen Instanz-Principal auf OCI-Services und -Ressourcen zugreifen soll, legen Sie den Parameter
- (Optional) Wenn Sie aus Verfügbarkeitsgründen mehrere Instanzen des nativen Ingress-Controllers von OCI ausführen möchten, ändern Sie den Wert von
replicaCountin der Dateivalues.yaml. Beispiel:
Standardmäßig istreplicaCount: 3replicaCountauf1gesetzt, d.h. eine Instanz des nativen Ingress-Controllers von OCI wird als einzelner Pod ausgeführt. Um die Verfügbarkeit sicherzustellen, können SiereplicaCounterhöhen (in der Regel auf2oder3), um mehrere native Ingress-Controllerinstanzen von OCI als verschiedene Pods auszuführen. Ein Pod ist als Leader nominiert und fungiert als OCI-nativer Ingress-Controller, während die restlichen Pods in einem passiven Status warten. Wenn der Leader anschließend nicht mehr verfügbar ist, wird einer der anderen Pods als Leader nominiert und fungiert als OCI-nativer Ingress-Controller. - Speichern Sie die Änderungen, die Sie in der Datei
values.yamlvorgenommen haben, und schließen Sie die Datei. - Wenn der native OCI-Ingress-Controller über einen Workload-Identity Principal auf OCI-Services und -Ressourcen zugreifen soll, müssen Sie zusätzliche Umgebungsvariablen wie folgt festlegen:
- Navigieren Sie im lokalen Git-Repository zum Verzeichnis
oci-native-ingress-controller/templates, und öffnen Sie die Dateideployment.yamlin einem Texteditor. - Legen Sie in der Datei
deployment.yamldie folgenden Umgebungsvariablen wie dargestellt fest:env: - name: OCI_RESOURCE_PRINCIPAL_VERSION value: "2.2" - name: OCI_RESOURCE_PRINCIPAL_REGION value: "us-ashburn-1" - Speichern Sie die Änderungen, die Sie in der Datei
deployment.yamlvorgenommen haben, und schließen Sie die Datei.
- Navigieren Sie im lokalen Git-Repository zum Verzeichnis