Anthos 不公开模式安装快速入门

Anthos 不公开模式是一个 Anthos 版本,它可以在气隙隔离的环境中以与互联网完全隔离的方式运行。您可以使用 Anthos 不公开模式在本地运行严格监管的工作负载,同时仍可从为云端打造的基础架构的诸多优势中获益。

Anthos 不公开模式快速入门范围

本快速入门将引导您以负责裸机机器、网络、存储和操作系统等基础架构层的基础架构运维者身份完成 Anthos 不公开模式安装过程。在本快速入门中,您将学习如何执行以下操作:

  • 使用极简安装方法安装和配置 Anthos 不公开模式。
  • 部署管理员集群。
  • 创建用户集群并将应用部署到用户集群。

Anthos 不公开模式包含两种类型的集群:

  • 管理员集群用于创建和管理用户集群。
  • 用户集群则用于运行您的工作负载。

还有一个管理员工作站,该机器包含安装和管理 Anthos 不公开模式部署所需的工具。

准备工作

确保您已满足 Anthos 不公开模式的技术要求,并且您至少拥有五台可供使用的机器。此快速入门需要事先具备 Kubernetes 和系统的管理经验。

准备环境

获取 Anthos 不公开模式的访问权限

Google 必须授予您对 Anthos 不公开模式版本的访问权限。请向 Google 联系人提供每个测试人员的电子邮件地址,以便我们为他们授予下载代码库的权限。这些电子邮件地址必须是 Google 帐号。

当您的 Google 联系人确认您对 Anthos 不公开模式版本具有访问权限后,请运行以下命令来确认您是否拥有下载 Anthos 不公开模式版本的权限:

gsutil ls gs://anthos-private-mode-release/

如果您收到错误,请运行 gcloud auth list 命令,验证 gsutil 使用的帐号是否为您提供给 Google 联系人的同一 Google 帐号。

或者,您也可以通过访问最新版本存储桶,来验证您是否拥有适当的权限。您必须使用您之前提供的 Google 帐号登录。

如果您在访问 Anthos 不公开模式版本时遇到问题,请与您的 Google 联系人联系以获取帮助。

下载 Anthos 不公开模式

在本部分中,您将下载 Anthos 不公开模式版本,它包含在多个文件中,每个文件的大小都在 GB 级别。下载可能需要较长时间,具体取决于您的互联网连接。

下载 Anthos 不公开模式

在管理员工作站上运行以下命令:

# Login with the account granted access to Anthos private mode
gcloud auth login

# Download the script which helps download all the latest components
export VERSION=1.9.3-gke.0

# Please use official 'INSTALLER_DIGEST' value from https://cloud.google.com/anthos/private-mode/docs/1.9/installing/infrastructure#download
export INSTALLER_DIGEST=ad410b7450e8ecaaa94821592dd0f49a1ade75e460e9ab18205c3b1364c6e910
export INSTALLER=get-anthos-private-mode-$VERSION.sh
gsutil cp gs://anthos-private-mode-release/$VERSION/$INSTALLER .
if [[ -n "$INSTALLER_DIGEST" ]]; then echo "$INSTALLER_DIGEST $INSTALLER" | sha256sum -c; fi && chmod +x $INSTALLER && ./$INSTALLER

# If you are working on a workstation shared with other users,
# we recommend that you revoke your credentials after downloading the release.
gcloud auth revoke YOUR_EMAIL_ADDRESS

安装其余依赖项

Anthos 不公开模式下载完成后,请运行以下命令:

cd anthos-baremetal-private-mode

# Add actl command line tool and tools directory to the PATH
export PATH=$PWD/bin:$PATH

# Download Harbor offline installer
curl -SL \
  https://github.com/goharbor/harbor/releases/download/v2.2.0/harbor-offline-installer-v2.2.0.tgz \
  --output "local-registry/harbor-offline-installer.tgz"

# Install docker-compose
curl -SL \
  https://github.com/docker/compose/releases/download/1.28.5/docker-compose-Linux-x86_64 \
  --output "local-registry/docker-compose"

部署演示应用之前,您无需再次进行互联网连接。

设置本地容器注册表

Anthos 不公开模式的工作原理是将 Anthos 容器映像存储在本地容器注册表中。

导出以下环境变量:

export REGISTRY_HOST=REGISTRY_HOST
export REGISTRY_PASSWORD=REGISTRY_PASSWORD

# By default, a library public project is created,
# and you can also create other private projects via the container registry portal.
export PRIVATE_REGISTRY=${REGISTRY_HOST}/library

请替换以下内容:

  • REGISTRY_HOST 是注册表 IP 地址。如果要在管理员工作站上安装和使用 Anthos 不公开模式容器注册表,请在此处使用管理员工作站 IP 地址。

  • REGISTRY_PASSWORD 是您为注册表密码设置的值。

设置 Anthos 不公开模式容器注册表

在本部分中,您将在管理员工作站上设置私有容器注册表。在管理员工作站上运行以下所有命令。

  1. 如果您没有自己的私有容器注册表,请安装 Anthos 不公开模式容器注册表。

    cd ~/anthos-baremetal-private-mode
    
    # Move it to a path under $PATH
    chmod a+x local-registry/docker-compose
    sudo cp local-registry/docker-compose /usr/bin
    
    # Install local registry
    ./local-registry/install.sh
    
  2. 登录注册表以验证您是否具有访问权限。如果收到错误,您可能需要等待几秒钟。

    docker login ${REGISTRY_HOST} -u admin -p ${REGISTRY_PASSWORD}
    

服务启动后,您可以通过 https://REGISTRY_HOST/ 来访问容器注册表。登录凭据是用户名 admin 和密码 REGISTRY_PASSWORD

将映像上传到容器注册表

在本部分中,您将把 Anthos 不公开模式容器映像上传到容器注册表。

准备 Anthos 不公开模式容器映像,并将其上传到容器注册表。如果出现提示,请选择 Use that credential 选项,或输入新凭据。

actl images push --private-registry=${PRIVATE_REGISTRY} \
    --images ~/anthos-baremetal-private-mode

注意:如果您在工作站上使用 HTTP 代理,则可能需要取消设置以下环境变量才能使 actl images push 命令正常运行:

unset http_proxy
unset https_proxy
unset HTTP_PROXY
unset HTTPS_PROXY

安装管理中心

在本部分中,您将在裸机机器上安装 Anthos 管理员集群,然后在管理员集群的基础之上安装 Anthos Management Center。

准备管理员集群配置

使用与您的环境匹配的设置更新 ./actl-workspace/admin/admin.yaml 文件。

vi ./actl-workspace/admin/admin.yaml

填写以下字段:

  • sshPrivateKeyPath 是在安装过程中用于访问属于集群的其他节点的密钥。这是您分发给前提条件中的节点的公钥的私钥部分。

  • registryMirrors 标识存储 Docker 映像的所有注册表镜像的位置。

    • registryMirrors.endpoint 是镜像的端点。端点的格式为 URL_SCHEME://REGISTRY_HOST/v2/IMAGE_PREFIX 。例如,如果您在工作站上创建注册表,请将端点设置为 https://REGISTRY_HOST/v2/library。请注意,REGISTRY_HOSTIMAGE_PREFIX 之间的 /v2/ 是必需的。

    • registryMirrors.pullCredentialConfigPath 是凭据的路径。通常,这与 /home/USER/.docker/config.json 类似。

    • registryMirrors.caCertPath 是注册表将用于加密流量的证书授权机构的位置。在安装过程中,此证书会分发给节点,以允许它们从注册表中拉取映像。路径通常为 /etc/docker/certs.d/REGISTRY_HOST/ca.crt

  • controlPlane 规范定义了哪些节点属于控制层面。

    controlPlane:
      nodePoolSpec:
        nodes:
        # Control plane node pools. Typically, this is either a single machine
        # or 3 machines if using a high availability deployment.
        - address: 10.200.0.3
    
  • loadBalancer 规范定义了使用的负载平衡器类型。默认配置会将负载均衡器安装到正在运行的集群上。在这种情况下,您至少需要设置 controlPlaneVIP 以标识用于公开 Kubernetes API 服务器的虚拟 IP (VIP) 地址池,并设置 addressPools 以分配 VIP 按需提供。例如:

    loadBalancer:
      mode: bundled
      # There are two load balancer VIPs: one for the control plane and one for the
      # Layer 7 Ingress service.
      # The VIPs must be in the same subnet as the load balancer nodes.
      vips:
        # ControlPlaneVIP specifies the VIP to connect to the Kubernetes API server.
        # This address must not be in the address pools below.
        controlPlaneVIP: 10.200.0.50
      # AddressPools is a list of non-overlapping IP ranges for the data plane load
      # balancer.
      # All addresses must be in the same subnet as the load balancer nodes.
      # Address pool configuration is only valid for 'bundled' LB mode in non-admin
      # clusters.
      addressPools:
      - name: pool1
        addresses:
        # Each address must be either in the CIDR form (1.2.3.0/24)
        # or range form (1.2.3.1-1.2.3.5).
        - 10.200.0.51-10.200.0.59
    
  • 集群规范的最后一部分指定 loginUser。此登录必须能够访问下面指定的 SSH 密钥,并且是在前提条件中为其分配密钥的用户。

    nodeAccess:
      loginUser: LOGIN_USERNAME
    

    LOGIN_USERNAME 替换为用于登录用户集群的用户名。

  • nodePool 规范标识将在管理员集群上托管 Management Center Console、Prometheus、Grafana 和其他服务的节点。这些节点是管理员集群的工作器节点。例如:

    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: node-pool-1
      namespace: cluster-admin
    spec:
      # Cannot be changed, must be admin
      clusterName: admin
      nodes:
      - address: 10.200.0.6
    

创建管理员集群

运行以下命令以创建管理员集群。此过程大约需要 30 分钟。

cd ~/anthos-baremetal-private-mode
actl clusters baremetal create admin

创建管理员集群后,请检查您是否有权访问该集群。

export ADMIN_KUBECONFIG=$(pwd)/bmctl-workspace/admin/admin-kubeconfig
KUBECONFIG=${ADMIN_KUBECONFIG} kubectl get nodes

安装管理中心

  1. 使用默认配置将管理中心安装到管理员集群上。

    cd ~/anthos-baremetal-private-mode
    actl platform management-center create
    
  2. 在浏览器中访问 Anthos Management Center。

    actl platform management-center describe --kubeconfig=${ADMIN_KUBECONFIG}
    

系统会返回 Anthos Management Center 网址。

注册资源

注册库存机器

如需创建用户集群,Anthos 将需要一个空闲的机器池。在本部分中,您需要将库存机器注册到 Anthos 管理员集群,以使这些机器可用。

kubectl apply -f <path/to/example-machine.yaml> --kubeconfig=${ADMIN_KUBECONFIG}

例如:

apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: InventoryMachine
metadata:
  name: IP_ADDRESS
  labels:
    "KEY": "VALUE"
spec:
  address: IP_ADDRESS

请替换以下内容:

  • IP_ADDRESS:机器的 IP 地址,例如 10.200.0.10
  • KEY:VALUE:键值对,例如 "rack": "r1020",用于指示机架位置。

labels 是附加到资源的自由格式键值对。这些标签稍后可用于管理中心以过滤机器。例如,您可以使用标签来标识机架位置或特殊硬件配置。

创建用户集群

在管理中心的集群页面中,点击创建以创建新的 Anthos 用户集群。创建集群后,它会自动注册到管理中心,并立即显示在集群信息中心内。

创建集群

安装和准备工作最长可能需要 15 分钟。在等待期间,您可以使用以下命令检查用户集群的状态:

kubectl get Cluster -n USER_CLUSTER_NAME --kubeconfig=${ADMIN_KUBECONFIG}

USER_CLUSTER_NAME 替换为您创建的集群的名称。

状态显示准备就绪后,即表示已成功创建集群并将其注册到管理员集群。

访问用户集群

创建用户集群后,您便可以通过 Management Center 下载 kubeconfig。

部署演示应用

您可以试用 Online Boutique 示例应用,以探索 Anthos 不公开模式。

下载映像

本部分中的步骤需要互联网连接。

  1. 下载示例代码库:

    git clone https://github.com/GoogleCloudPlatform/microservices-demo.git/ online-boutique
    
  2. 下载映像:

    IMAGES=$(cat online-boutique/release/kubernetes-manifests.yaml | grep image | sed "s/ *image: //")
    actl images save --output online-boutique-images ${IMAGES}
    

部署示例

  1. 将映像推送到私有注册表:

    actl images push --images online-boutique-images --private-registry=PRIVATE_REGISTRY
    

    PRIVATE_REGISTRY 替换为您的私有注册表的名称。

  2. 为应用创建命名空间。

    kubectl create namespace demo --kubeconfig=USER_CLUSTER_KUBECONFIG
    

    USER_CLUSTER_KUBECONFIG 替换为用户集群 Kubeconfig 文件的路径。

  3. 将示例部署到集群:

    kubectl apply -n demo -f online-boutique/release/ --kubeconfig=USER_CLUSTER_KUBECONFIG
    

资源不足的 Online Boutique

清除数据

运行以下命令来删除您的用户集群:

kubectl -n cluster-USER_CLUSTER_NAME \
  delete Cluster USER_CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG

后续步骤