Skip to content

Arm64在Kubernetes上运行KubeSphere DevOps

官方文档在 Kubernetes 上最小化安装 KubeSphere描述的安装方式在amd64平台安装是没有问题的,但是在arm64平台安装会出现拉取amd64架构镜像的问题。虽然macOS on Apple Silicon开启了Rosetta,但仍会出现devops无法运行的情况。

准备Kubernetes环境,确保kubectl可用,本文环境:

bash
% kubectl version

Client Version: v1.29.1
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.29.1

部署KubeSphere DevOps

下载部署文件

bash
curl -LJO https://github.com/kubesphere/ks-installer/releases/download/v3.4.1/kubesphere-installer.yaml

curl -LJO https://github.com/kubesphere/ks-installer/releases/download/v3.4.1/cluster-configuration.yaml

编辑cluster-configuration.yaml

yaml
# 第101行
	devops:
    enabled: true	# 改为true,开启devops


# 在spec:下 # FIXME: 实测不生效。
spec:	# 补充如下内容
  mc_repo: minio/mc
  mc_tag: RELEASE.2022-07-29T19-17-16Z
  minio_repo: minio/minio
  minio_tag: RELEASE.2022-07-29T19-40-48Z

启动:

kubectl apply -f kubesphere-installer.yaml
kubectl apply -f cluster-configuration.yaml

http://127.0.0.1:30880,默认帐户和密码 (admin/P@88w0rd) 访问 Web 控制台。

image-20240810021604766

编辑YAML:


kubesphere/ks-jenkins:v3.4.0-2.319.3-1
全部替换为
kubesphere/ks-jenkins:v3.5.0-2.346.3

此时Jenkins仍然无法启动,需要继续修改,前往应用负载-工作负载-devops-jenkins-容器组-devops-jenkins-xxxxxxxx-xxxx-jenkins-casc-configimage-20240810064031382

修改jenkins_user.yaml文件:

image-20240810064256072

注释掉如下内容(参考):

yaml
  securityRealm:
    ldap:
      configurations:
      - displayNameAttributeName: "uid"
        mailAddressAttributeName: "mail"
        inhibitInferRootDN: false
        managerDN: "cn=admin,dc=kubesphere,dc=io"
        managerPasswordSecret: "admin"
        rootDN: "dc=kubesphere,dc=io"
        userSearchBase: "ou=Users"
        userSearch: "(&(objectClass=inetOrgPerson)(|(uid={0})(mail={0})))"
        groupSearchBase: "ou=Groups"
        groupSearchFilter: "(&(objectClass=posixGroup)(cn={0}))"
        server: "ldap://openldap.kubesphere-system.svc:389"
      disableMailAddressResolver: false
      disableRolePrefixing: true

平滑重启devops-jenkins

bash
kubectl rollout restart deployment devops-jenkins -n kubesphere-devops-system

随后即可看到DevOps组件均为正常:

image-20240810064626256

DevOps创建资源

遵循创建企业空间、项目、用户和平台角色说明创建如下资源。

  1. admin 身份创建如下用户:
用户指定的平台角色用户权限
ws-adminplatform-regular被邀请到企业空间后,管理该企业空间中的所有资源(在此示例中,此用户用于邀请新成员加入该企业空间)。
project-adminplatform-regular创建和管理项目以及 DevOps 项目,并邀请新成员加入项目。
project-regularplatform-regularproject-regular 将由 project-admin 邀请至项目或 DevOps 项目。该用户将用于在指定项目中创建工作负载、流水线和其他资源。
  1. admin 身份创建企业空间demo-workspace,并将用户 ws-admin 设置为企业空间管理员。

  2. ws-admin 身份登陆,在企业空间设置中,选择企业空间成员,然后点击邀请。邀请如下三位用户:

用户分配的企业空间角色角色权限
project-admindemo-workspace-self-provisioner创建和管理项目以及 DevOps 项目,并邀请新成员加入项目。
project-regulardemo-workspace-viewerproject-regular 将由 project-admin 邀请至项目或 DevOps 项目。该用户将用于在指定项目中创建工作负载、流水线和其他资源。
  1. project-admin 身份登录控制台,在 DevOps 项目中,点击创建。输入 DevOps 项目名称(例如 demo-devops)。转到 DevOps 项目设置,然后选择 DevOps 项目成员。点击邀请授予 project-regular 用户 operator 的角色,允许其创建流水线和凭证。

DevOps使用

project-regular 身份登录控制台,即可在DevOps 项目中创建流水线。

创建凭证:

image-20240810070851438

如果是GitHub凭证,直接填写用户名密码即可。如果GitHub账户开启了2FA,在密码处填写PAT