安装 Alauda DevOps

本指南提供了安装 Alauda DevOps 的详细操作步骤。

目录

前提条件

确保已上传 Alauda DevOps v3 operator 后再继续操作。

有关上传 operator 的更多信息,请参阅

命名空间安全策略要求

  • Katanomi 仅支持创建一个实例。该实例可以部署在任意命名空间,但必须满足以下条件:

    • 命名空间资源充足
    • 命名空间配置为特权安全策略
  • Katanomi Operator 需要命名空间使用特权安全策略配置才能正常运行。此要求基于组件对特权容器和 hostPath 卷挂载的依赖。

    根本原因:Katanomi Operator 组件需要特权容器访问和 hostPath 卷挂载(审计日志目录)以确保正常运行:

    • 特权容器:多个 Katanomi Operator 部署使用了 privileged: true 安全上下文:
      • apiserver deployment - API 服务器部署需要 privileged: true 以执行对审计日志目录的 chown
      • api deployment - API 部署使用 privileged: true 以执行对审计日志目录的 chown
      • devops-api deployment - DevOps API 部署需要 privileged: true 以执行对审计日志目录的 chown
      • build-image-buildkit-v1 任务 - 构建任务显式使用 privileged: true 以支持容器镜像构建功能

安装 Operator

进入平台的 Administrator -> Marketplace -> OperatorHub 页面,搜索 Alauda DevOps v3,然后点击 operator 卡片进入 operator 详情页。

点击 Install 进行安装。

部署位置

在 Global cluster 中部署 Katanomi 实例。Business Cluster 可根据需要部署实例以支持 CI/CD。

组件Global ClusterBusiness Cluster
Katanomi已安装可选

操作步骤

创建 Katanomi 实例

WARNING

仅支持创建一个 Katanomi 实例。

  • Global cluster:部署在 cpaas-system 命名空间。将 ExternalURL 设置为 global 集群的 Platform URL,并将 Service.Type 设置为 Ingress

  • Business cluster:可部署在除 cpaas-system 以外的任意命名空间。

  • 登录 Alauda Container Platform 平台。

  • 进入 Platform Management 下的 Clusters 标签页。

  • 选择已部署的集群,点击 CLI Tools

  • 创建 Katanomi 实例(根据需要调整参数)

global cluster

export NAMESPACE=cpaas-system
export EXTERNAL_URL=$(kubectl get prdb -n cpaas-system base -o jsonpath='{.spec.platformURL}')
cat <<EOF | kubectl apply -f -
apiVersion: operators.katanomi.dev/v1alpha1
kind: Katanomi
metadata:
  name: katanomi
  namespace: ${NAMESPACE}
spec:
  externalURL: ${EXTERNAL_URL}
  replicas: 1
  resources:
    limits:
      cpu: "2"
      memory: 4Gi
    requests:
      cpu: "1"
      memory: 2Gi
  service:
    ingress:
      protocol: HTTP
    type: Ingress
EOF

business cluster

export NAMESPACE=katanomi-operator
export NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}' | awk -F" " '{print $1}')
export EXTERNAL_URL=http://${NODE_IP}:32001
cat <<EOF | kubectl apply -f -
apiVersion: operators.katanomi.dev/v1alpha1
kind: Katanomi
metadata:
  name: katanomi
  namespace: ${NAMESPACE}
spec:
  externalURL: ${EXTERNAL_URL}
  replicas: 1
  resources:
    limits:
      cpu: "2"
      memory: 4Gi
    requests:
      cpu: "1"
      memory: 2Gi
  service:
    nodePort:
      apiPort:
        httpPort: 32000
      pluginPort:
        httpPort: 32001
    type: NodePort
EOF
  • 等待 DevOps 实例准备就绪
    kubectl wait --for='jsonpath={.status.conditions[?(@.type=="Running")].status}=true' katanomis/katanomi -n cpaas-system --timeout=5m

CI/CD 功能准备

在开始使用 Alauda DevOps 的构建和发布流水线功能之前,平台管理员需要完成一些准备工作。

部署 Alauda DevOps v3 后,请参考平台内的文档:<Platform URL>/console-devops-docs/en/devops-initialization/cicd/init/

Katanomi 参数说明

参数说明
Name

Katanomi 实例的名称。

Namespaces

对于 business clusters,Katanomi 实例可以部署在任意资源充足的命名空间。对于 global cluster,Katanomi 实例必须专属部署在 cpaas-system 命名空间。

External URL

访问地址,即 API 地址。根据 Service 类型配置进行规划。
当 Service 类型为 Node Port 时,请输入 http://<IP>:<Port>端口 必须与 Service 的 Node Port 保持一致,API 端口用于服务访问。
当 Service 类型为 Ingress 时,请输入对应的访问地址,例如:http://kubernetes.io

Replicas

Deployment 的副本数,默认值为 2。
当副本数为 1 时,采用单节点部署。

Resources
  • requests: 运行工具时可消耗的最小 CPU 和内存资源。
  • limits: 运行工具时需要占用的最大 CPU 和内存资源。
Service.Type

必填字段。提供两种类型:Node Port 和 Ingress。

  • Node Port: 通过静态端口暴露路由,访问格式为 <IP>:<port>
  • Ingress: 通过入口规则暴露路由,访问格式为域名。
Service.Ingress

当 Type 设置为 Ingress 时必填。

  • 域名: 用于访问工具的域名。
  • 协议: 通过 HTTP 或 HTTPS 访问工具。
  • Secret 名称: 通过 HTTPS 访问时使用的 SSL 证书名称。
Service.Node Port

Type 设置为 Node Port 时必填。用于访问工具的端口号,API 端口和插件端口不能重复,端口值范围为 30000-32767。

  • API 端口: 通过 HTTP 访问 Katanomi-api 组件的端口,用于执行工具集成绑定相关操作。
  • 插件端口: 通过 HTTP 访问 Katanomi-plugin 组件的端口,用于平台处理工具链集成绑定事件。

常见问题

Katanomi Pod 启动失败,提示只读根文件系统:/cpaas 目录不可写

Katanomi 需要对宿主机的 /cpaas 目录具有写权限以存储审计日志。如果 Pod 无法写入该目录,则会启动失败。

解决该问题的方法是配置替代的审计日志存储路径。例如:

spec:
  helmValues:
    api:
      auditHostPath: /tmp/audit
    devopsApiServer:
      auditHostPath: /tmp/audit
    devopsApi:
      auditHostPath: /tmp/audit

此配置指示 Katanomi 组件使用 /tmp/audit 作为审计日志存储路径,确保兼容强制只读根文件系统的环境。请根据您的安全和运行需求调整路径。

如何在部署 Katanomi 时配置自定义 ImagePullSecret

若需为 Katanomi 实例指定自定义的 ImagePullSecret,请添加以下配置:

spec:
  helmValues:
    global:
      registry:
        imagePullSecret:
          name: <imagePullSecretName>

此配置确保 Katanomi 使用指定的 ImagePullSecret 从私有镜像仓库拉取容器镜像。请将 imagePullSecretName 替换为您预先创建的包含所需仓库凭据的 Kubernetes Secret 名称。