Dies ist eine experimentelle Funktion, die zu Evaluierungs- und Testzwecken zur Verfügung steht und sich ohne vorherige Ankündigung ändern kann.
Erstellung vertraulicher Container
Erfahren Sie, wie Sie vertrauliche Container, die auch als Kata-Container oder OpenShift Sandboxed Container bekannt sind, in einem Red Hat OpenShift on IBM Cloud Cluster installieren und verwenden.
Was sind vertrauliche Behälter?
Ein vertraulicher Container bietet eine sichere Laufzeitumgebung für sensible Workloads, ermöglicht es Ihnen aber, innerhalb der bestehenden Workflows weiterzuarbeiten.
Die IBM Cloud-Implementierung vertraulicher Container nutzt Peer-Pods, um die Funktionalität von Red Hat OpenShift-Pods auf einen vom Arbeitsknoten getrennten VSI zu erweitern. Diese Erweiterung schafft eine vertrauenswürdige Ausführungsumgebung jenseits der traditionellen Kubernetes und OpenShift.
Weitere Informationen:
- Überprüfen Sie die Gründe, aus denen Sie vertrauliche Behälter verwenden könnten.
- Informieren Sie sich unter Häufig gestellte Fragen über vertrauliche Behälter.
Voraussetzungen
-
Wenn Sie einen Red Hat OpenShift on IBM Cloud Cluster erstellen oder auswählen, muss der Cluster die folgenden Anforderungen erfüllen:
- Der Cluster muss sich in einer Region befinden, die TDX Virtual Server Instances(VSI)unterstützt.
- Der Cluster muss über eine öffentliche Schnittstelle verfügen, oder Sie können sich über ein VPN mit seiner Umgebung verbinden.
- Um dem Cluster die Kommunikation mit beliebigen VSIs zu ermöglichen, die mit vertraulichen Containern erstellt wurden, muss eine Sicherheitsgruppe mit dem Namen „Vertrauliche Container“ erstellt werden.
kube-CLUSTER_IDfür den Cluster.
-
Falls erforderlich, aktivieren Sie OperatorHub. Manchmal ist OperatorHub in einem Cluster aus Sicherheitsgründen deaktiviert.
Schritt 1: Installation des Operators
Installieren Sie den OpenShift Sandboxed Containers Operator, um den Lebenszyklus von vertraulichen Containern in Clustern zu verwalten.
-
Öffnen Sie das Dashboard des Clusters.
-
Klicken Sie auf OpenShift web console > Operatoren > OperatorHub.
-
Suchen Sie nach
OpenShift sandboxed containers Operatorund klicken Sie auf die Kachel. -
Klicken Sie auf Installieren, um die unterstützte und stabile Version von OpenShift Sandboxed Containers Operator, Version 1.10.3, zu erhalten. Die unterstützten Versionen finden Sie auf Red Hat unter Operator Update Information Checker( OpenShift ).
-
Im Fenster Operator installieren können Sie die Standardeinstellungen beibehalten und auf Installieren klicken.
-
Warten Sie, bis die Installation abgeschlossen ist. Klicken Sie auf den Link View installed Operators in Namespace openshift-sandboxed-containers-operator und warten Sie, bis der Status Succeeded angezeigt wird. Während Sie warten, können Sie den nächsten Schritt zur Einrichtung der CLI durchführen.
Schritt 2: Einrichten der CLI
Bevor Sie beginnen, können Sie entweder diese Schritte ausführen, um die Befehlszeile einzurichten, oder Sie können die Shell IBM Cloud verwenden, um Befehle auszuführen.
-
Installieren Sie die Befehlszeile IBM Cloud.
-
Melden Sie sich bei der IBM Cloud-Befehlszeilenschnittstelle (CLI) an.
ibmcloud login --apikey API_KEY -g RESOURCE_GROUP -
Listen Sie die Cluster im Konto auf und kopieren Sie die ID des Clusters, den Sie für den nächsten Schritt verwenden möchten.
ibmcloud ks cluster ls -
Führen Sie den Befehl
configaus.ibmcloud ks cluster config --cluster CLUSTER_ID --admin --endpoint linkIn Ihrem Heimatverzeichnis wird ein Ordner
.kubeerstellt, in dem Informationen für die Kommunikation mit diesem Cluster gespeichert werden. -
Vergewissern Sie sich, dass die Befehle
ocordnungsgemäß ausgeführt werden, indem Sie die Details der Arbeitsknoten im Cluster anzeigen.oc get nodes -
Legen Sie den Namespace project fest, damit Sie den Namespace in späteren Befehlen nicht mehr angeben müssen.
oc project openshift-sandboxed-containers-operator -
Optional: Erkunden Sie den Namensraum.
oc get allIn der Liste der Pods verwaltet zum Beispiel der Controller-Manager mit dem Namen
pod/controller-manager-<id>die Microservices innerhalb des Operators.
Schritt 3: Importieren des Peer-Pod-Images
Der OpenShift Sandboxed Containers Operator startet ein spezielles Betriebssystem innerhalb des Peer-Pods, das in Ihr IBM Cloud Konto importiert werden muss. Dieses Betriebssystem ist erforderlich, um eine Arbeitslast in einem vertraulichen Container bereitzustellen.
Das Peer-Pod-Image enthält ein vollständiges Red Hat Enterprise Linux (RHEL) 9.6 Betriebssystem mit der Software, die zur Instanziierung eines Containers in einer Confidential Virtual Machine (CVM) erforderlich ist.
Alle Konfigurationen und installierten Pakete im Betriebssystem behalten die Standard Red Hat swerte bei. Die VSI- IBM Cloud-Funktionen erfordern jedoch cloud init, dass funktioniert. In den Skripten cloud init wird
daran gehindert, deinstalliert zu werden, wenn der Aufbau des podvm, was einen wesentlichen Unterschied zum Quellbild darstellt.
Vorbereitende Schritte:
Validieren Sie die Versionskompatibilität. Das Image wird für die folgenden Versionen unterstützt.
- OpenShift Sandboxed Containers Operator-Version 1.10.3
- OpenShift versionen 4.19, 4.18, 4.17, und 4.16 Cluster
So importieren Sie das Peer-Pod-Image:
-
Führen Sie den
image-createBefehl aus.# Note IMAGE_NAME is a placeholder variable. Image names do not support capitalization. ibmcloud is image-create "IMAGE_NAME" --file cos://us-south/podvm-image/rhel9-podvm-latest.qcow2 --os-name red-9-amd64 -
Öffnen Sie die Rechnerbilder.
-
Klicken Sie auf das Symbol „Erstellen +“, wählen Sie eine Region mit TDX-fähigen VSIs aus und füllen Sie die erforderlichen Felder aus.
a. Wählen Sie als **Bildquelle **Cloud Object Storage.
b. Wählen Sie die Registerkarte Nach Bilddatei suchen URL und geben Sie bei Bild URL
cos://us-south/podvm-image/rhel9-podvm-latest.qcow2ein.c. Für das Betriebssystem, wählen Sie Red Hat Enterprise Linux > red-9-amd64.
d. Optional: Um später einen weiteren vertraulichen Container mit denselben Details aus der API zu erstellen, klicken Sie auf die Schaltfläche " Get sample API call" und kopieren Sie den Befehl Curl.
e. Klicken Sie auf Benutzerdefiniertes Image erstellen.
-
Wenn das Bild der Liste Bilder hinzugefügt wurde, klicken Sie auf den Bildnamen und wählen Sie die Registerkarte IDs. Notieren Sie sich dann die Bild-ID, um sie später zu verwenden.
-
Warten Sie, bis der Status des Images Verfügbar lautet.
ibmcloud is image IMAGE_NAME -
Wiederholen Sie diese Schritte, wenn eine neue Version des Bildes verfügbar ist.
Schritt 4: Erstellen eines API-Schlüssels oder eines vertrauenswürdigen Profils
Vertrauliche Container benötigen einen Berechtigungsnachweis, um den Peer-Pod über kata-remote zu instanziieren, wenn ein sicherer Workload gestartet wird. Dieser Berechtigungsnachweis muss entweder ein gültiger API-Schlüssel oder
ein vertrauenswürdiges Profil mit der Berechtigung sein, ein VSI in Ihrem Konto zu erstellen.
Wenn Sie vertrauliche Container testen möchten, können Sie einen API-Schlüssel verwenden. Wenn Sie Secrets Manager verwenden, müssen Sie ein vertrauenswürdiges Profil einrichten.
-
API-Schlüssel aus der Benutzeroberfläche
-
Klicken Sie auf dem IBM Cloud Dashboard auf Verwalten > Zugriff (IAM) > API-Schlüssel.
-
Klicken Sie auf Erstellen.
-
Speichern Sie diesen Schlüssel sicher, da er später nicht mehr von dieser Seite abgerufen werden kann.
-
-
API-Schlüssel aus der CLI.
Führen Sie den folgenden Befehl aus und speichern Sie die Ausgabe.
ibmcloud iam api-key-create KEY_NAME -
Vertrauenswürdiges Profil
-
Öffnen Sie das Dashboard der vertrauenswürdigen Profile.
-
Erstellen Sie ein vertrauenswürdiges Profil und erteilen Sie dem Profil die notwendigen Berechtigungen, um virtuelle Server von OpenShift zu erstellen.
a. Erstellen Sie ein vertrauenswürdiges Profil.
ibmcloud iam trusted-profile-create <NAME> [--description <DESCRIPTION>]b. Erlauben Sie den Ressourcen in
openshift-sandboxed-containers-operator, das vertrauenswürdige Profil zu verwenden.ibmcloud iam trusted-profile-rule-create PROFILE_NAME_OR_ID --name RULE_NAME --type Profile-CR --conditions claim:namespace,operator:EQUALS,value:openshift-sandboxed-containers-operator --cr-type ROKS_SAc. Erlauben Sie den Zugriff auf die VPC-Infrastrukturdienste (
is).Um den Zugriff für jede Ressource des Kontos zu ermöglichen:
ibmcloud iam trusted-profile-policy-create <NAME or ID of the trusted profile> --roles Editor,Writer --service-name isSo gewähren Sie Zugriff auf eine bestimmte Ressourcengruppe:
ibmcloud iam trusted-profile-policy-create <NAME or ID of the trusted profile> --roles Viewer [--resource-group-id <resource group>]
-
Schritt 5: Erstellen eines SSH-Schlüssels (optional)
In Testclustern kann es hilfreich sein, einen SSH-Schlüssel bereitzuhalten, um Fehler zu beheben und Protokolle einzusehen, wenn etwas nicht startet. In Produktionsclustern möchten Sie die SSH-Funktionalität möglicherweise nicht aktivieren.
-
Klicken Sie auf Infrastruktur > Compute > SSH-Schlüssel.
-
Erstellen Sie einen SSH-Schlüssel und notieren Sie die SSH-Schlüssel-ID.
Schritt 6: Vertrauliche Container konfigurieren
Nachdem der Operator installiert ist, erstellen Sie ConfigMaps, damit Kata Arbeitslasten im IBM Cloud-Konto verarbeiten kann.
-
Erstellen Sie ein Verzeichnis, um die Dateien zu speichern.
mkdir <directory-name> -
Wechseln Sie in das Verzeichnis.
cd <directory-name> -
Kopieren Sie die folgenden Umgebungsvariablen für den API-Schlüssel, die vertrauenswürdige Profil-ID, den Clusternamen, die PodVM Image-ID, die SSH-Schlüssel-ID und die VPC-ID (optional).
Optional: Sie können sie in einem Shell-Skript im neuen Verzeichnis speichern, um sie später wieder einzustellen. Beispiel:
<directory-name>/env-vars.sha. Erfassen Sie die Werte für die folgenden Variablen und aktualisieren Sie die Werte im Skript.
- Für
CLUSTER_NAMEöffnen Sie die Details des Clusters in der Clusterliste und kopieren den Namen. - Optional: Für
VPC_IDkönnen Sie im Abschnitt Cluster-Details auf derselben Seite auf den VPC-Namen klicken, um die Details für die VPC zu öffnen und das Feld VPC-ID zu kopieren. - Verwenden Sie für
PODVM_IMAGE_IDdie Bild-ID, die Sie für das Peer-Pod-Bild gespeichert haben. - Wenn Sie einen API-Schlüssel verwenden, können Sie die Zeile
IBMCLOUD_TRUSTED_PROFILE_IDentfernen. - Wenn Sie ein vertrauenswürdiges Profil verwenden, können Sie die Zeile
IBMCLOUD_API_KEYentfernen. - Wenn Sie keinen SSH-Schlüssel festgelegt haben, können Sie die Zeile
SSH_KEY_IDentfernen.
export IBMCLOUD_API_KEY=<your API key> export IBMCLOUD_TRUSTED_PROFILE_ID="<your Trusted Profile ID>" export CLUSTER_NAME=<cluster-name-region-flavor> export PODVM_IMAGE_ID=<PodVM image ID provided by IBM or a custom-built image> export SSH_KEY_ID=<SSH key ID to be used by the peer pod VSI> export VPC_ID=<Optional: the VPC that your Openshift cluster is in>b. Wenn Sie die Variablen in einem Shell-Skript gespeichert haben, führen Sie es aus. Beispiel:
sh env-vars.sh - Für
-
Führen Sie den Befehl aus, um die Seite
feature-gates.yamlConfigMap zu erstellen.cat > feature-gates.yaml <<EOF apiVersion: v1 kind: ConfigMap metadata: name: osc-feature-gates namespace: openshift-sandboxed-containers-operator data: deploymentMode: "DaemonSetFallback" # or DaemonSet to force it confidential: "true" layeredImageDeployment: "false" EOF -
Wenden Sie die ConfigMap an.
oc apply -f feature-gates.yaml -
Führen Sie den Befehl aus, um die
peer-pods-secret.yamlzu erstellen. Entfernen Sie alle optionalen Umgebungsvariablen aus dem AbschnittstringData, die Sie benötigt haben.cat > peer-pods-secret.yaml <<EOF apiVersion: v1 kind: Secret metadata: name: peer-pods-secret namespace: openshift-sandboxed-containers-operator type: Opaque stringData: # either IBMCLOUD_API_KEY or IBMCLOUD_IAM_PROFILE_ID must be set # if you specify both the IBMCLOUD_API_KEY will be used # IBMCLOUD_IAM_ENDPOINT is optional IBMCLOUD_API_KEY: "$IBMCLOUD_API_KEY" IBMCLOUD_IAM_ENDPOINT: "https://iam.cloud.ibm.com/identity/token" IBMCLOUD_IAM_PROFILE_ID: "$IBMCLOUD_TRUSTED_PROFILE_ID" EOF -
Wenden Sie das Secret auf den Cluster an.
oc apply -f peer-pods-secret.yaml -
Führen Sie den Befehl aus, um die Seite
peer-pods-cm.yamlConfigMap zu erstellen. Entfernen Sie alle optionalen Umgebungsvariablen aus dem Abschnittdata, die Sie nicht gesetzt haben.cat > peer-pods-cm.yaml <<EOF apiVersion: v1 kind: ConfigMap metadata: name: peer-pods-cm namespace: openshift-sandboxed-containers-operator data: CLOUD_PROVIDER: "ibmcloud" IBMCLOUD_PODVM_IMAGE_ID: "$PODVM_IMAGE_ID" IBMCLOUD_PODVM_INSTANCE_PROFILE_LIST: "bx3dc-2x10" IBMCLOUD_PODVM_INSTANCE_PROFILE_NAME: "bx3dc-2x10" IBMCLOUD_RESOURCE_GROUP_ID: "$(ibmcloud is vpc "$VPC_ID" -json | jq -r .resource_group.id)" IBMCLOUD_SSH_KEY_ID: "$SSH_KEY_ID" IBMCLOUD_VPC_ID: "$VPC_ID" IBMCLOUD_VPC_SG_ID: "$(ibmcloud ks security-group ls --cluster $CLUSTER_NAME -json | jq -r '.[] | select(.type == "cluster") | .id')" CLOUD_CONFIG_VERIFY: "false" CRI_RUNTIME_ENDPOINT: "/run/cri-runtime/containerd.sock" ENABLE_CLOUD_PROVIDER_EXTERNAL_PLUGIN: "false" VXLAN_PORT: "" TUNNEL_TYPE: "" INITDATA: "" PEERPODS_LIMIT_PER_NODE: "10" EOFDie Einstellung
PEERPODS_LIMIT_PER_NODEsteuert die maximale Anzahl von Peer-Pod-VSI, die pro Arbeitsknoten geplant werden können. Der Standardwert ist10. Sie können diesen Wert entsprechend der Kapazität Ihres Arbeitsknotens erhöhen, aber beachten Sie, dass Sie auch durch die Kubernetes Pod-Grenzen (110 Pods pro Knoten für einen 16x64 Worker) und die verfügbaren CPU-Ressourcen auf dem Arbeitsknoten eingeschränkt sind. Jeder Peer-Pod verbraucht etwa 250m CPU und 120Mi Speicher auf dem Arbeitsknoten für das Kubernetes Pod-Konstrukt, obwohl die eigentliche Arbeitslast in einem separaten VSI läuft. Weitere Informationen finden Sie bei den häufig gestellten Fragen. -
Wenden Sie die ConfigMap an.
oc apply -f peer-pods-cm.yaml -
Führen Sie den Befehl aus, um die Seite
kata-runtime-settings.yamlKataConfig zu erstellen.cat > kata-runtime-settings.yaml <<EOF apiVersion: kataconfiguration.openshift.io/v1 kind: KataConfig metadata: name: kata-runtime-settings namespace: openshift-sandboxed-containers-operator spec: enablePeerPods: true logLevel: info #checkNodeEligibility: true #kataConfigPoolSelector: # matchLabels: # <label_key>: '<label_value>' EOF -
Wenden Sie die KataConfig an.
oc apply -f kata-runtime-settings.yaml -
Während Kata installiert wird und die Daemonsets gestartet werden, können Sie den Fortschritt überwachen.
- Sie können im OperatorHub
openshift-sandboxed-containers-operatorprojekt sehen, dass die KataConfig in Arbeit ist. - Sie können den folgenden Befehl ausführen, um zu sehen, wie die Etiketten mit dem aktuellen Stand der Installation aktualisiert werden.
oc get nodes --output yaml|egrep "kata-ds-rpm-install|ibm-cloud.kubernetes.io/worker-id" ``` Mögliche Zustände: - `waiting_to_install`: Die Kata-Installation wird auf dem Knoten in die Warteschlange gestellt. - `installing`: Die Installation von Kata ist im Gange. - `installed`: Kata wurde erfolgreich auf dem Knoten installiert. - `waiting_for_reboot`: Der Knoten muss neu gebootet werden, um die Installation oder Deinstallation abzuschließen. - `waiting_to_uninstall`: Die Deinstallation von Kata steht auf dem Knoten in der Warteschlange. - `uninstalling`: Die Deinstallation von Kata ist im Gange. - `uninstalled`: Kata wurde erfolgreich von dem Knoten deinstalliert. - Sie können im OperatorHub
-
Wenn die Etiketten aktualisiert werden und sich in der
waiting_for_rebootIm Zustand „ starte jeden Worker-Knoten einzeln neu“
Wenn Sie oc get nodes ausführen und jeder Arbeitsknoten sich im Zustand installed befindet, ist die Installation abgeschlossen.
Überwachung und Anpassung der Grenzwerte für Peer-Pods
Nach der Installation können Sie die Kapazität der Peer-Pods überwachen und die Einstellung PEERPODS_LIMIT_PER_NODE bei Bedarf anpassen.
-
Prüfen Sie das aktuelle Peer-Pods-Limit für alle Arbeitsknoten:
oc get nodes -o json | jq -r '[.items[] | select (.status.allocatable["kata.peerpods.io/vm"] != null)| .status.allocatable["kata.peerpods.io/vm"] | tonumber] | add' -
Überprüfen Sie die zugewiesenen Ressourcen auf jedem Arbeitsknoten:
for n in $(oc get nodes -o name); do echo "=== $n ===" oc describe "$n" | sed -n '/Allocated resources:/,/Events:/p' done -
Zählt die Anzahl der derzeit laufenden Peer-Pods:
oc get pods -A -o json | jq '.items[] | select(.spec.runtimeClassName == "kata-remote") | "\(.metadata.namespace)/\(.metadata.name)"' | wc -l -
Um den Wert
PEERPODS_LIMIT_PER_NODEnach der Installation zu erhöhen:a. Aktualisieren Sie die ConfigMap.
oc -n openshift-sandboxed-containers-operator patch cm peer-pods-cm \ --type merge \ -p '{"data":{"PEERPODS_LIMIT_PER_NODE":"24"}}'b. Starten Sie den Cloud-API-Adapter-Dämonensatz neu.
oc -n openshift-sandboxed-containers-operator rollout restart daemonset/osc-caa-dsc. Überprüfen Sie, ob der neue Grenzwert angewendet wird.
oc get nodes -o json | jq -r '[.items[] | select (.status.allocatable["kata.peerpods.io/vm"] != null)| .status.allocatable["kata.peerpods.io/vm"] | tonumber] | add'
Schritt 7: Konfigurieren einer Vertrauensstelle
Die Beglaubigung ist ein wichtiger Bestandteil vertraulicher Behälter. Sie müssen die Codesicherheit in der Lieferkette validieren und sicherstellen, dass der im Container laufende Code nicht verändert wurde. Sie können einen Intel TDX-Chip
und das key-broker-service-Protokoll nutzen. Das Image für podvm enthält bereits funktionierenden TDX-Treibercode und eine kbs_client. Sie müssen jedoch die INITDATA mit den Daten des Treuhänders konfigurieren.
-
Wählen Sie einen Treuhänder. Es gibt viele Möglichkeiten für Treuhänder in vertraulichen Behältern.
-
Zu Entwicklungszwecken könnten Sie eine VM für einen Treuhänder aufsetzen.
-
Für einen Dienst auf Produktionsebene könnten Sie Intel Trust Authority verwenden.
-
-
Wenn Sie die VM für einen Treuhänder zu Entwicklungszwecken ausgewählt haben, führen Sie diese Konfigurationsschritte durch.
a. Fügen Sie die IP-Adresse des Treuhänders in das folgende Skript ein und führen Sie es aus, um die Variable
INITDATAzu setzen.export KBS_SERVICE_ENDPOINT="https://REPLACE_WITH_TRUSTEE_IP:8080" export INITDATA=$(cat <<EOF | gzip | base64 -w0 algorithm = "sha256" version = "0.1.0" [data] "aa.toml" = ''' [token_configs] [token_configs.coco_as] url = "$KBS_SERVICE_ENDPOINT" [token_configs.kbs] url = "$KBS_SERVICE_ENDPOINT" ''' "cdh.toml" = ''' socket = 'unix:///run/confidential-containers/cdh.sock' credentials = [] [kbc] name = "cc_kbc" url = "$KBS_SERVICE_ENDPOINT" ''' EOF )b. Überprüfen Sie die
$INITDATAUmgebungsvariable.echo $INITDATAc. Fügen Sie den Wert für die Variable in
peer-pods-cm.yamlConfigMap im Namensraumopenshift-sandboxed-containers-operatorein.d. Starten Sie das Daemonset
osc-caa-dsim Namensraumopenshift-sandboxed-containers-operatorneu. Dieses Cloud API Adapter Daemonset wird zur Kommunikation mit IBM Cloud verwendet.oc rollout restart daemonset.apps/osc-caa-dse. Führen Sie den folgenden Befehl aus, um die Pods anzuzeigen. Schauen Sie sich für jeden
osc-caa-ds-<id>Pod das Alter jedes Pods an, um zu überprüfen, ob der Pod neu gestartet wurde.oc get podsWenn ein Pod nicht neu gestartet wurde, löschen Sie den Pod, um ihn neu zu erstellen.
oc delete pod/osc-caa-ds-<id>Sehen Sie sich die Schoten erneut an.
oc get podsf. Wiederholen Sie diese Schritte für jeden Workload-Eintrag von
INITDATA.g. Der Wert
INITDATAkann auf einen einzelnen Container als Anmerkung angewendet werden, und der Container, der startet, ist so konfiguriert, dass er den Treuhänder verwendet. Dieser Vermerk kann hilfreich sein, wenn Sie neue Treuhänder testen oder sicherstellen wollen, dass Änderungen anINITDATAkeine vertraulichen Container zerstören.Beispielhafte Anmerkung:
apiVersion: v1 kind: Pod metadata: name: mypod annotations: io.katacontainers.config.runtime.cc_init_data: $INITDATA spec: runtimeClassName: kata-remote
Schritt 8: Ausführen eines vertraulichen Container-Workloads
Nachdem alle Labels auf installed aktualisiert wurden, stellen Sie eine Arbeitslast bereit, indem Sie den Namen der Laufzeitklasse kata-remote in einer Datei pod.yaml verwenden. Sie können das Hello World-Beispiel
als Test-Workload in einem vertraulichen Container verwenden.
-
Erstellen Sie eine
pod.yaml-Datei.oc apply -f - <<EOF apiVersion: v1 kind: Pod metadata: labels: app: helloworld version: v1 name: helloworld spec: containers: - name: helloworld image: docker.io/istio/examples-helloworld-v1:1.0 ports: - containerPort: 5000 runtimeClassName: kata-remote EOF -
Überwachen Sie die Bereitstellung in der Liste Virtual Servers. Wenn der VSI erstellt wird, zeigt er den Status " läuft" an. Wenn der VSI im Status " Starten" festzustecken scheint, prüfen Sie die Protokolle auf Probleme.
a. Rufen Sie die Podnamen ab.
oc get podsb. Rufen Sie die Protokolle für einen der Cloud-API-Adapter-Pods auf und suchen Sie nach Fehlern.
oc logs osc-caa-ds-<id> -
Überprüfen Sie den Pod, indem Sie den folgenden Befehl ausführen.
oc describe pod/helloworld -
Um die Bescheinigung zu überprüfen, führen Sie den folgenden Befehl in den Container aus.
oc exec -it helloworld -- bashFühren Sie dann den folgenden Befehl
curlaus, um Informationen vom Treuhänder zu erhalten.curl http://127.0.0.1:8006/cdh/resource/default/kbsres1/key1Wenn Sie fertig sind, können Sie den Container verlassen.
exit -
Wenn es Probleme gibt, überprüfen Sie die Protokolle im Namensraum
openshift-sandboxed-containers-operator.- Von der Steuerung verwaltete Pod-Protokolle:
oc logs pod/controller-manager-<UNIQUE_ID> ``` - Cloud API Adapter Pod-Protokolle: ```sh {: pre} oc logs pod/osc-caa-ds-<UNIQUE_ID> ``` - Anwendungsprotokolle: Abhängig vom angegebenen Speicherort.
Die Einrichtung Ihrer vertraulichen Container ist nun abgeschlossen! Benötigen Sie weiterhin Hilfe? Sehen Sie sich die Fehlerbehebung an.
Entfernen von Arbeitsbelastungen und Tools
Wenn Sie diese Schritte in der falschen Reihenfolge durchführen, können Ressourcen zurückbleiben, die Ihnen in Rechnung gestellt werden, wie z. B. eine VSI.
Entfernen von Arbeitsbelastungen
-
Löschen Sie die Workloads aus dem Cluster, die vertrauliche Container verwenden.
a. Alle Pods anzeigen.
oc get pods -A -o json | jq '.items[] | select(.spec.runtimeClassName == "kata-remote") | "\(.metadata.namespace)/\(.metadata.name)"'b. Löschen Sie die Pods, wodurch die für sie bereitgestellten VSI gelöscht werden.
oc delete -f pod.yamlWenn Sie die vorherigen Anmeldeinformationen ( ConfigMaps ) in ungültige Konfigurationen geändert haben oder die Anmelde entfernt wurden, kann die Software die API-Aufrufe zum Entfernen der Ressourcen nicht ausführen, sodass diese manuell entfernt werden müssen. Die manuelle Entfernung sollte nur in diesem Szenario verwendet werden, da Sie möglicherweise einen neuen Cluster „ OpenShift “ erstellen oder Worker ersetzen müssen.
-
Löschen Sie die Kata-Konfiguration. Die
kata-runtime-settings.yamlentfernt die Kata von den Arbeitern, die Sie beobachten können, wie die Etiketten aktualisiert werden.a. Überwachen Sie die Knotenbeschriftungen, bis sie sich im Zustand
waiting_for_rebootbefinden.b. Starten Sie die Worker einzeln neu, um die Deinstallation von Kata auf dem Worker-Knoten abzuschließen.
c. Wenn andere Workloads auf diesem Cluster ausgeführt werden, sperren Sie den Worker ab, leeren Sie ihn und starten Sie ihn dann neu.
d. Warten Sie, bis der Löschvorgang von
kata-runtime-settings.yamlnach dem Neustart abgeschlossen ist, um mit dem nächsten Schritt fortzufahren. Es gibt Prozesse, deren Deinstallation nach dem Neustart abgeschlossen sein muss.Fahren Sie nicht fort, wenn
kata-runtime-settings.yamlRessourcen nicht gelöscht werden können. -
Entfernen Sie den ConfigMaps.
Operator deinstallieren
Nachdem Sie die Workloads entfernt haben, können Sie den OpenShift Sandboxed Containers Operator deinstallieren.
-
Deinstallieren Sie unter OperatorHub, den Operator.
-
Bestätigen Sie, dass im Namensraum
openshift-sandboxed-containers-operatorkeine Ressourcen mehr vorhanden sind. -
Löschen Sie den Namensbereich.