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:

Vertrauliche Containerarchitektur
Vertrauliche Containerarchitektur

Voraussetzungen

Schritt 1: Installation des Operators

Installieren Sie den OpenShift Sandboxed Containers Operator, um den Lebenszyklus von vertraulichen Containern in Clustern zu verwalten.

  1. Öffnen Sie das Dashboard des Clusters.

  2. Klicken Sie auf OpenShift web console > Operatoren > OperatorHub.

  3. Suchen Sie nach OpenShift sandboxed containers Operator und klicken Sie auf die Kachel.

  4. 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 ).

  5. Im Fenster Operator installieren können Sie die Standardeinstellungen beibehalten und auf Installieren klicken.

  6. 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.

  1. Installieren Sie die Befehlszeile IBM Cloud.

  2. Installieren Sie die Tools ks und oc CLI.

  3. Melden Sie sich bei der IBM Cloud-Befehlszeilenschnittstelle (CLI) an.

    ibmcloud login --apikey API_KEY -g RESOURCE_GROUP
    
  4. 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
    
  5. Führen Sie den Befehl config aus.

    ibmcloud ks cluster config --cluster CLUSTER_ID --admin --endpoint link
    

    In Ihrem Heimatverzeichnis wird ein Ordner .kube erstellt, in dem Informationen für die Kommunikation mit diesem Cluster gespeichert werden.

  6. Vergewissern Sie sich, dass die Befehle oc ordnungsgemäß ausgeführt werden, indem Sie die Details der Arbeitsknoten im Cluster anzeigen.

    oc get nodes
    
  7. 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
    
  8. Optional: Erkunden Sie den Namensraum.

    oc get all
    

    In der Liste der Pods verwaltet zum Beispiel der Controller-Manager mit dem Namen pod/controller-manager-<id> die Microservices innerhalb des Operators.

  9. Installieren Sie das Tool is CLI.

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:

  1. Führen Sie den image-create Befehl 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
    
  2. Öffnen Sie die Rechnerbilder.

  3. 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.qcow2 ein.

    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.

  4. 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.

  5. Warten Sie, bis der Status des Images Verfügbar lautet.

    ibmcloud is image IMAGE_NAME
    
  6. 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

    1. Klicken Sie auf dem IBM Cloud Dashboard auf Verwalten > Zugriff (IAM) > API-Schlüssel.

    2. Klicken Sie auf Erstellen.

    3. 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

    1. Öffnen Sie das Dashboard der vertrauenswürdigen Profile.

    2. 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_SA
      

      c. 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 is
      

      So 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.

  1. Klicken Sie auf Infrastruktur > Compute > SSH-Schlüssel.

  2. 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.

  1. Erstellen Sie ein Verzeichnis, um die Dateien zu speichern.

    mkdir <directory-name>
    
  2. Wechseln Sie in das Verzeichnis.

    cd <directory-name>
    
  3. 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.sh

    a. 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_ID kö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_ID die 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_ID entfernen.
    • Wenn Sie ein vertrauenswürdiges Profil verwenden, können Sie die Zeile IBMCLOUD_API_KEY entfernen.
    • Wenn Sie keinen SSH-Schlüssel festgelegt haben, können Sie die Zeile SSH_KEY_ID entfernen.
    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
    
  4. Führen Sie den Befehl aus, um die Seite feature-gates.yaml ConfigMap 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
    
  5. Wenden Sie die ConfigMap an.

    oc apply -f feature-gates.yaml
    
  6. Führen Sie den Befehl aus, um die peer-pods-secret.yaml zu erstellen. Entfernen Sie alle optionalen Umgebungsvariablen aus dem Abschnitt stringData, 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
    
  7. Wenden Sie das Secret auf den Cluster an.

    oc apply -f peer-pods-secret.yaml
    
  8. Führen Sie den Befehl aus, um die Seite peer-pods-cm.yaml ConfigMap zu erstellen. Entfernen Sie alle optionalen Umgebungsvariablen aus dem Abschnitt data, 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"
    EOF
    

    Die Einstellung PEERPODS_LIMIT_PER_NODE steuert die maximale Anzahl von Peer-Pod-VSI, die pro Arbeitsknoten geplant werden können. Der Standardwert ist 10. 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.

  9. Wenden Sie die ConfigMap an.

    oc apply -f peer-pods-cm.yaml
    
  10. Führen Sie den Befehl aus, um die Seite kata-runtime-settings.yaml KataConfig 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
    
  11. Wenden Sie die KataConfig an.

    oc apply -f kata-runtime-settings.yaml
    
  12. Während Kata installiert wird und die Daemonsets gestartet werden, können Sie den Fortschritt überwachen.

    • Sie können im OperatorHub openshift-sandboxed-containers-operator projekt 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.
    
    
  13. Wenn die Etiketten aktualisiert werden und sich in der waiting_for_reboot Im 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.

  1. 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'
    
  2. Ü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
    
  3. 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
    
  4. Um den Wert PEERPODS_LIMIT_PER_NODE nach 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-ds
    

    c. Ü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.

  1. Wählen Sie einen Treuhänder. Es gibt viele Möglichkeiten für Treuhänder in vertraulichen Behältern.

  2. 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 INITDATA zu 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 $INITDATA Umgebungsvariable.

    echo $INITDATA
    

    c. Fügen Sie den Wert für die Variable in peer-pods-cm.yaml ConfigMap im Namensraum openshift-sandboxed-containers-operator ein.

    d. Starten Sie das Daemonset osc-caa-ds im Namensraum openshift-sandboxed-containers-operator neu. Dieses Cloud API Adapter Daemonset wird zur Kommunikation mit IBM Cloud verwendet.

    oc rollout restart daemonset.apps/osc-caa-ds
    

    e. 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 pods
    

    Wenn 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 pods
    

    f. Wiederholen Sie diese Schritte für jeden Workload-Eintrag von INITDATA.

    g. Der Wert INITDATA kann 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 an INITDATA keine 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.

  1. 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
    
  2. Ü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 pods
    

    b. Rufen Sie die Protokolle für einen der Cloud-API-Adapter-Pods auf und suchen Sie nach Fehlern.

    oc logs osc-caa-ds-<id>
    
  3. Überprüfen Sie den Pod, indem Sie den folgenden Befehl ausführen.

    oc describe pod/helloworld
    
  4. Um die Bescheinigung zu überprüfen, führen Sie den folgenden Befehl in den Container aus.

    oc exec -it helloworld -- bash
    

    Führen Sie dann den folgenden Befehl curl aus, um Informationen vom Treuhänder zu erhalten.

    curl http://127.0.0.1:8006/cdh/resource/default/kbsres1/key1
    

    Wenn Sie fertig sind, können Sie den Container verlassen.

    exit
    
  5. 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

  1. 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.yaml
    

    Wenn 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.

  2. Löschen Sie die Kata-Konfiguration. Die kata-runtime-settings.yaml entfernt 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_reboot befinden.

    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.yaml nach 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.yaml Ressourcen nicht gelöscht werden können.

  3. Entfernen Sie den ConfigMaps.

Operator deinstallieren

Nachdem Sie die Workloads entfernt haben, können Sie den OpenShift Sandboxed Containers Operator deinstallieren.

  1. Deinstallieren Sie unter OperatorHub, den Operator.

  2. Bestätigen Sie, dass im Namensraum openshift-sandboxed-containers-operator keine Ressourcen mehr vorhanden sind.

  3. Löschen Sie den Namensbereich.