使用私有镜像源进行部署
拉取并推送镜像至私有镜像源
注意
以下脚本仅供参考
pull_and_push.sh
#!/bin/bash
set -e
if ! command -v docker &> /dev/null; then
echo "Error: docker command not found. Please install Docker first."
exit 1
fi
if ! docker manifest --help &> /dev/null; then
echo "Error: docker manifest command is not available."
exit 1
fi
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <source_image_uri> <target_image_uri>"
echo "ep: $0 docker.bonree.com/agent-test/smartagent-operator:1.1.1 <your private registry>/agent/smartagent-operator:1.1.1"
exit 1
fi
SOURCE_IMAGE=$1
TARGET_IMAGE=$2
echo "Pulling amd64 image from source..."
docker pull --platform linux/amd64 "${SOURCE_IMAGE}"
docker tag "${SOURCE_IMAGE}" "$TARGET_IMAGE-amd64"
docker rmi "${SOURCE_IMAGE}"
echo "Pulling arm64 image from source..."
docker pull --platform linux/arm64 "${SOURCE_IMAGE}"
docker tag "${SOURCE_IMAGE}" "$TARGET_IMAGE-arm64"
docker rmi "${SOURCE_IMAGE}"
echo "Deleting existing manifest if it exists..."
docker manifest rm "$TARGET_IMAGE" 2>/dev/null || true
docker push "$TARGET_IMAGE-arm64"
docker push "$TARGET_IMAGE-amd64"
echo "Creating manifest..."
docker manifest create "$TARGET_IMAGE" \
-a "$TARGET_IMAGE-amd64" \
-a "$TARGET_IMAGE-arm64"
echo "Pushing manifest to target registry..."
docker manifest push "$TARGET_IMAGE"
echo "Successfully pushed $SOURCE_IMAGE to $TARGET_IMAGE"
# 拉取 smartagent 镜像并 push 至私有仓库
bash pull_and_push.sh docker.bonree.com/agent/smartagent:<镜像版本号> <私有镜像源地址>/agent/smartagent:<镜像版本号>
# 拉取并推送 smartagent-operator 镜像 至 私有镜像源
bash pull_and_push.sh docker.bonree.com/agent/smartagent-operator:<镜像版本号> <私有镜像源地址>/agent/smartagent-operator:<镜像版本号>
# 拉取并推送 smartagent-serverless 镜像 至 私有镜像源
bash pull_and_push.sh docker.bonree.com/agent/smartagent-serverless:<探针版本号> <私有镜像源地址>/agent/smartagent-serverless:<探针版本号>
下载并修改 Smart Operator 资源定义文件
-
复制
kubernetes.yaml或kubernetes-webhook-only.yaml、kubernetes-csi.yaml文件内容。 -
修改
kubernetes.yaml或kubernetes-webhook-only.yaml、、kubernetes-csi.yaml文件,将<原镜像地址>替换为<私有镜像源地址>。
如果私有源需认证
-
需为
kubernetes-webhook-only.yaml、kubernetes.yaml、kubernetes-csi.yaml中的 所有 ServiceAccount 增加imagePullSecrets。详情见:为服务账户添加 ImagePullSecrets
示例kubectl create secret docker-registry mydockerhub \
--docker-server=https://index.docker.io/v1/ \
--docker-username=xxxxx \
--docker-password=xxxxx \
--docker-email=xxxxx
-
生效 Smart Operator 资源对象
kubectl create namespace bonree-agent
# 或 kubectl apply -f kubernetes-webhook-only.yaml
kubectl apply -f kubernetes.yaml
kubectl apply -f kubernetes-csi.yaml
kubectl patch serviceaccount bonree-smartkube-smartagent -p '{"imagePullSecrets": [{"name": "mydockerhub"}]}' -n bonree-agent
kubectl patch serviceaccount bonree-smartagent-csi-driver -p '{"imagePullSecrets": [{"name": "mydockerhub"}]}' -n bonree-agent
kubectl patch serviceaccount bonree-smartkube-smartagent-unprivileged -p '{"imagePullSecrets": [{"name": "mydockerhub"}]}' -n bonree-agent
kubectl patch serviceaccount bonree-webhook -p '{"imagePullSecrets": [{"name": "mydockerhub"}]}' -n bonree-agent
kubectl patch serviceaccount smartagent-operator -p '{"imagePullSecrets": [{"name": "mydockerhub"}]}' -n bonree-agent