Images für Ihre Apps erstellen
Ein Docker-Image ist die Basis für jeden Container, den Sie mit IBM Cloud® Kubernetes Service erstellen.
Ein Image wird aus einer Dockerfile erstellt, die Anweisungen zum Erstellen des Images enthält. Eine Dockerfile kann in ihren Anweisungen Buildartefakte referenzieren, die separat gespeichert sind (z. B. eine App, die Konfiguration der App und die Abhängigkeiten der App).
Container aus einem IBM Cloud Container Registry-Image im Kubernetes-Standardnamensbereich (default) bereitstellen
Sie können Container aus einem von IBM bereitgestellten öffentlichen Image oder aus einem privaten Image, das in Ihrem Namensbereich IBM Cloud Container Registry-Namensbereich gespeichert ist, in Ihrem Cluster bereitstellen. Weitere Informationen dazu, wie Ihr Cluster auf Registry-Images zugreift, finden Sie unter Berechtigung des Clusters zum Extrahieren von Images aus IBM Cloud Container Registry.
Vorbereitende Schritte:
-
Erstellen Sie eine Bereitstellungskonfigurationsdatei namens
<deployment>.yaml. -
Definieren Sie die Bereitstellung und das zu verwendende Image aus Ihrem Namensbereich in IBM Cloud Container Registry.
apiVersion: apps/v1 kind: Deployment metadata: name: <deployment> spec: replicas: <number_of_replicas> selector: matchLabels: app: <app_name> template: metadata: labels: app: <app_name> spec: containers: - name: <app_name> image: <region>.icr.io/<namespace>/<image>:<tag><deployment>- Geben Sie Ihrer Bereitstellung einen Namen.
<number_of_replicas>- Geben Sie die Anzahl der Replikatpods an, die die Bereitstellung erstellt.
app: <app_name>- Verwenden Sie den Namen Ihrer App als Bezeichnung für den Container.
name: <app_name>- Geben Sie Ihrem Container einen Namen, z. B. den Namen Ihrer
app-Bezeichnung. image: <region>.icr.io/namespace>/image>:tag>-
- Ersetzen Sie die Image-URL-Variablen durch die Informationen für Ihr Image:
region>: Der regionale IBM Cloud Container Registry-API-Endpunkt für die Registry-Domäne. Zum Auflisten der Domäne für die Region, in der Sie angemeldet sind, führen Sieibmcloud cr apiaus.namespace>: Der Registry-Namensbereich. Zum Abrufen der Informationen zu Ihrem Namensbereich führen Sie den Befehlibmcloud cr namespace-listaus.image>:tag>: Das Image und des Tag, das Sie für Ihren Container verwenden wollen. Zum Auflisten der in Ihrem Registry-Namensbereich verfügbaren Images führen Sieibmcloud cr imagesaus.
-
Erstellen Sie die Bereitstellung in Ihrem Cluster.
kubectl apply -f <deployment>.yaml
Verweis auf den geheimen Schlüssel für Image-Pull-Operationen in Ihrer Pod-Bereitstellung
Wenn der Clusteradministrator nicht den geheimen Schlüssel für Image-Pull-Operation im Kubernetes-Servicekonto gespeichert hat, können alle Bereitstellungen, die kein Servicekonto angeben, den geheimen Schlüssel für Image-Pull-Operationen nicht zum Bereitstellen von Containern verwenden. In diesem Fall kann der geheime Schlüssel für Image-Pull-Operationen in der Podbereitstellung definiert werden. Wenn Sie auf den geheimen Schlüssel für Image-Pull-Operationen in einer Pod-Bereitstellung verweisen, ist der geheime Schlüssel für Image-Pull-Operationen nur für diesen Pod gültig und kann nicht von mehreren Pods im Kubernetes-Namensbereich gemeinsam genutzt werden.
Vorbereitende Schritte
- Erstellen Sie einen geheimen Schlüssel für Image-Pull-Operationen, um auf andere Images in anderen Registrys oder Kubernetes-Namensbereichen als
defaultzuzugreifen. - Melden Sie sich an Ihrem Konto an. If applicable, target the appropriate resource group. Legen Sie den Kontext für den Cluster fest.
Um auf den geheimen Schlüssel für Image-Pull-Operationen in Ihrer Pod-Bereitstellung zu verweisen,
-
Erstellen Sie eine Podkonfigurationsdatei mit dem Namen
mypod.yaml. -
Definieren Sie den Pod und den geheimen Schlüssel für Image-Pull-Operationen für den Zugriff auf Images in IBM Cloud Container Registry.
Um auf ein privates Image zuzugreifen,
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: <container_name> image: <region>.icr.io/<namespace_name>/<image_name>:<tag> imagePullSecrets: - name: <secret_name>Um auf ein öffentliches IBM Cloud-Image zuzugreifen,
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: <container_name> image: icr.io/<image_name>:<tag> imagePullSecrets: - name: <secret_name>container_name>- Der Name des Containers, den Sie in Ihrem Cluster bereitstellen möchten.
namespace_name>: Der Registry-Namensbereich, in dem das Image gespeichert ist. Führen Sie den Befehlibmcloud cr namespace-listaus, um die verfügbaren Namensbereiche aufzulisten.image_name>: Der Name des zu verwendenden Image. Führen Sie den Befehlibmcloud cr image-listaus, um die verfügbaren Images in einem IBM Cloud-Konto aufzulisten.tag>: Die Version des Image, die Sie verwenden möchten. Wenn kein Tag angegeben ist, wird standardmäßig das Image mit dem Tag Aktuellstes verwendet.<secret_name>: Der Name des geheimen Schlüssels für Image-Pull-Operationen, den Sie zuvor erstellt haben.
-
Speichern Sie Ihre Änderungen.
-
Erstellen Sie die Bereitstellung in Ihrem Cluster.
kubectl apply -f mypod.yaml
Images mit Push-Operation in IBM Cloud Container Registry übertragen
Nach dem Einrichten einer Image-Registry mit IBM Cloud Container Registry durch den Clusteradministrator können Sie Docker-Images sicher speichern und mit anderen Benutzern gemeinsam nutzen, indem Sie Images zu Ihrem Namensbereich hinzufügen.
Sie können beispielsweise ein Image mit einer Pull-Operation aus einer privaten oder öffentlichen Registryquelle extrahieren und es anschließend für die spätere Verwendung in IBM Cloud Container Registry mit einem entsprechenden Tag kennzeichnen. Sie können beispielsweise auch ein Docker-Image mit einer Push-Operation in Ihren Namensbereich übertragen, damit andere Benutzer auf das Image zugreifen können. Lesen Sie als Einstieg zu diesem Thema den Abschnitt Images zum Namensbereich hinzufügen.
Sicherheit von Images in IBM Cloud Container Registry mit Vulnerability Advisor verwalten
Vulnerability Advisor überprüft den Sicherheitsstatus von Container-Images, die von IBM oder anderen Anbietern bereitgestellt oder zum IBM Cloud Container Registry-Namensbereich Ihrer Organisation hinzugefügt werden.
Images, die zu einem Namensbereich hinzugefügt werden, werden automatisch von Vulnerability Advisor auf Sicherheitsprobleme und Sicherheitslücken überprüft. Werden Sicherheitsprobleme ermittelt, werden Anleitungen bereitgestellt, die das Beheben der gemeldeten Probleme erleichtern. Lesen Sie als Einstieg zu diesem Thema den Abschnitt Sicherheit von Images mit Vulnerability Advisor verwalten.
Vertrauenswürdige Inhalte für Container-Images konfigurieren
Sie können Container aus vertrauenswürdigen Images erstellen, die signiert und in IBM Cloud Container Registry gespeichert sind, und Bereitstellungen aus nicht signierten oder gefährdeten Images verhindern.
- Images für vertrauenswürdige Inhalte signieren. Nachdem Sie eine Vertrauensbeziehung für Ihre Images konfiguriert haben, können Sie vertrauenswürdige Inhalte und Unterzeichner, die Images per Push-Operation in Ihre Registry übertragen können, verwalten.
- Um eine Richtlinie umzusetzen, durch die nur signierte Images zum Erstellen von Containern in Ihrem Cluster verwendet werden können, installieren Sie das Open-Source-Projekt Portieris.
- Clusterbenutzer können Apps, die aus vertrauenswürdigen Images erstellt werden, bereitstellen.
Durchsetzung von Imagesicherheit in Ihrem Cluster aktivieren
Wenn Sie die Durchsetzung von Imagesicherheit in Ihrem Cluster aktivieren, installieren Sie das Open-Source-Kubernetes-Projekt Portieris. Anschließend können Sie Imagerichtlinien erstellen, um zu verhindern, dass Pods, die die Richtlinien nicht erfüllen, wie z. B. nicht signierte Images, in Ihrem Cluster ausgeführt werden.
Weitere Informationen finden Sie in der Dokumentation zu „ Portieris “.
Mutatierte Images: Standardmäßig verwendet Portieris den Zugangscontroller MutatingAdmissionWebhook, um Ihr Image so zu mutieren, dass es mithilfe eines Auszugs anstelle eines Tags auf das Image verweist. Möglicherweise
verfügen Sie jedoch über eine Bereitstellungstechnologie, die ein mutiertes Image ablehnt. In diesem Fall können Sie die Option „Image-Mutation“ und die entsprechende Richtlinie nutzen, um das Standardverhalten zu ändern.
Durchsetzung der Imagesicherheit aktivieren und inaktivieren
Sie können die Durchsetzung der Bildsicherheit für Ihren Cluster über die CLI oder die Konsole aktivieren oder deaktivieren. Informationen zu früheren Versionen finden Sie in der Dokumentation zu „ Portieris “.
Durchsetzung der Imagesicherheit über die Befehlszeilenschnittstelle aktivieren oder inaktivieren
Siehe die folgenden Befehle.
Durchsetzung der Imagesicherheit über die Konsole aktivieren oder inaktivieren
- Wählen Sie auf der Konsole Ihren Cluster aus.
- Suchen Sie das Feld "Bildsicherheitsdurchsetzung" und klicken Sie auf "Aktivieren " oder "Deaktivieren ".
Standard-Imagerichtlinien
Wenn Sie die Durchsetzung der Imagesicherheit aktivieren, erstellt IBM Cloud Kubernetes Service automatisch bestimmte Imagerichtlinien in Ihrem Cluster. Wenn Sie das Feature inaktivieren, wird die zugrunde liegende CRD ClusterImagePolicy entfernt. Dadurch werden alle Standardimagerichtlinien und alle angepassten Imagerichtlinien, die Sie erstellt haben, entfernt.
- Imagerichtlinien mit dem Namen
ibm-signed-image-enforcementbeschränken die Images, die im Namensbereich ausgeführt werden, auf IBM Cloud Kubernetes Service-Images. Diese Imagerichtlinien dürfen nicht geändert werden. Alle Änderungen, die Sie vornehmen, werden innerhalb weniger Minuten überschrieben. - Andere Imagerichtlinien, wie z. B.
defaultoderdefault-allow-all, lassen Images zu, die durch keine andere Imagedrichtlinie eingeschränkt sind. Sie können diese Imagerichtlinien ändern und Ihre Änderungen bleiben erhalten, aber benennen Sie die Imagerichtlinie nicht um. Wenn Sie die Richtlinie umbenennen, werden weitere Richtlinien mit dem Standardnamen und den Standardeinstellungen erstellt.
Um die Imagerichtlinien in Ihrem Cluster zu überprüfen,
Vorbereitende Schritte
-
Listen Sie die Imagerichtlinien auf, die global auf den Cluster angewendet werden. Ein Konfigurationsbeispiel finden Sie in der Dokumentation zur Richtlinie „ Portieris “.
kubectl get ClusterImagePolicy -
Listen Sie die Imagerichtlinien auf, die sich auf bestimmte Namensbereiche innerhalb des Clusters beziehen. Ein Konfigurationsbeispiel finden Sie in der Dokumentation zur Richtlinie „ Portieris “.
kubectl get ImagePolicy --all-namespaces