arm64适配系列文章-第六章-arm64环境上rabbitmq-management的部署,构建cluster-operator

ARM64适配系列文章

第一章 arm64环境上kubesphere和k8s的部署

第二章 arm64环境上nfs-subdir-external-provisioner的部署

第三章 arm64环境上mariadb的部署

第四章 arm64环境上nacos的部署

第五章 arm64环境上redis的部署

第六章 arm64环境上rabbitmq-management的部署

第七章 arm64环境上minio的部署

第八章 arm64环境上seata的部署

第九章 arm64环境上sentinel的部署


文章目录


前言

手里运维的业务平台要部署到用户环境,对方是华为910B的机器,单位目前没有,只有老的arm64架构的机器,反正先适配着,防止后续现抓麻爪了。

这一章记录rabbitmq-management的适配步骤

我这里使用的rabbtmq-management启动rabbitmq的方式。

一、机器信息获取

1.1 芯片信息

lscpu

shell 复制代码
Architecture:          aarch64
Byte Order:            Little Endian
CPU(s):                40
On-line CPU(s) list:   0-39
Thread(s) per core:    1
Core(s) per socket:    40
Socket(s):             1
NUMA node(s):          1
Model:                 1
CPU max MHz:           2500.0000
CPU min MHz:           600.0000
BogoMIPS:              40.00
L1d cache:             unknown size
L1i cache:             unknown size
L2 cache:              unknown size
L3 cache:              unknown size
NUMA node0 CPU(s):     0-39
Flags:                 fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid asimdrdm

1.2 操作系统版本信息

hostnamectl

shell 复制代码
   Static hostname: datax3
         Icon name: computer-server
           Chassis: server
        Machine ID: 570e6fdcda17439886d6364f7a3ba217
           Boot ID: c6b431eb288d4de4b62a823a7f383e7b
  Operating System: CentOS Linux 7 (AltArch)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 4.14.0-115.el7a.0.1.aarch64
      Architecture: arm64

二、版本获取

目前在x86上使用的nacos版本是rabbitmq:3.13.2-management版本

经过查询,在arm64v8找到了可用的,但是cluster-operator没有找到可用的,得自己打才行

shell 复制代码
# dockerpull.cn是国内加速源
docker pull dockerpull.cn/arm64v8/rabbitmq:3.13.2-management-alpine
# 查看架构支持信息
docker inspect  dockerpull.cn/arm64v8/rabbitmq:3.13.2-management-alpine |grep Arch
        "Architecture": "arm64",

三、准备自己构建cluster-operator镜像

3.1 代码下载

github地址:https://github.com/rabbitmq/cluster-operator

shell 复制代码
wget https://github.com/rabbitmq/cluster-operator/archive/refs/tags/v2.9.0.zip
unzip v2.9.0.zip

3.2 基础镜像下载

shell 复制代码
docker pull dockerpull.cn/arm64v8/golang:1.21
docker pull dockerpull.cn/arm64v8/alpine:latest
docker pull dockerpull.cn/scratch

3.3 进行构建

由于构建中遇到的问题,最终版本的Dockerfile放在文章末尾

shell 复制代码
docker build -t rabbitmqoperator/cluster-operator:arm64-2.9.0 .

四、测试使用

测试使用

建立pod正常,访问rabbitmq页面正常

五、遇到的问题:镜像构建中遇到的问题

5.1 dial tcp 142.250.217.81:443: i/o timeout

异常提示:

shell 复制代码
122.1 go: github.com/BurntSushi/[email protected]: Get "https://proxy.golang.org/github.com/%21burnt%21sushi/toml/@v/v1.2.1.mod": dial tcp 142.250.217.81:443: i/o timeout 

处理方法:改成国内代理

shell 复制代码
RUN ENV GOPROXY https://goproxy.io,direct

5.2 This download does NOT match an earlier download recorded in go.sum.

异常提示:

shell 复制代码
verifying github.com/emicklei/go-restful/[email protected]: checksum mismatch
This download does NOT match an earlier download recorded in go.sum.

处理方法:增加命令

shell 复制代码
RUN go clean -modcache
RUN go mod tidy

5.3 缺包问题的处理

异常提示:

shell 复制代码
2.200 /go/pkg/mod/k8s.io/[email protected]/apps/v1/generated.pb.go:27:2: missing go.sum entry for module providing package github.com/gogo/protobuf/proto (imported by k8s.io/api/apps/v1); to add:                                 
2.200   go get k8s.io/api/apps/[email protected]

处理方法:将需要的包手动get进去

shell 复制代码
RUN go get k8s.io/[email protected]

六、cluster-operator的dockerfile

yaml 复制代码
# Build the manager binary
FROM  dockerpull.cn/arm64v8/golang:1.21 as builder

WORKDIR /workspace

# Dependencies are cached unless we change go.mod or go.sum
COPY go.mod go.mod
#COPY go.sum go.sum
RUN go clean -modcache
RUN go mod tidy
ENV GOPROXY https://goproxy.io,direct
RUN go mod download
RUN go get k8s.io/[email protected]
RUN go get k8s.io/api/apps/[email protected]
RUN go get k8s.io/api/core/[email protected]
RUN go get k8s.io/apimachinery/pkg/util/[email protected]
RUN go get k8s.io/apimachinery/pkg/util/[email protected]
RUN go get k8s.io/apimachinery/pkg/util/[email protected]
RUN go get sigs.k8s.io/controller-runtime/pkg/[email protected]
RUN go get sigs.k8s.io/controller-runtime/pkg/[email protected]
RUN go get sigs.k8s.io/controller-runtime/pkg/metrics/[email protected]
RUN go get sigs.k8s.io/controller-runtime/pkg/[email protected]
RUN go get sigs.k8s.io/controller-runtime/pkg/webhook/[email protected]
RUN go get sigs.k8s.io/controller-runtime/pkg/webhook/[email protected]
RUN go get k8s.io/client-go/tools/[email protected]
RUN go get k8s.io/client-go/tools/[email protected]
RUN go get k8s.io/apimachinery/pkg/util/httpstream/[email protected]
RUN go get k8s.io/apimachinery/pkg/util/[email protected]
RUN go get sigs.k8s.io/controller-runtime/pkg/log/[email protected]
RUN go get sigs.k8s.io/controller-runtime/pkg/[email protected]
RUN go get k8s.io/client-go/tools/[email protected]
RUN go get k8s.io/client-go/tools/[email protected]
RUN go get sigs.k8s.io/controller-runtime/pkg/config/[email protected]
RUN go get gopkg.in/ini.v1


# Copy the go source
COPY main.go main.go
COPY api/ api/
COPY controllers/ controllers/
COPY internal/ internal/
COPY pkg/ pkg/

# Build
ARG TARGETOS
ARG TARGETARCH
ENV GOOS linux
ENV GOARCH arm64
RUN CGO_ENABLED=0 GO111MODULE=on go build -a -tags timetzdata -o manager main.go

# ---------------------------------------
FROM dockerpull.cn/arm64v8/alpine:latest as etc-builder

RUN echo "rabbitmq-cluster-operator:x:1000:" > /etc/group && \
    echo "rabbitmq-cluster-operator:x:1000:1000::/home/rabbitmq-cluster-operator:/usr/sbin/nologin" > /etc/passwd

RUN apk add -U --no-cache ca-certificates

# ---------------------------------------
FROM scratch

ARG GIT_COMMIT
LABEL GitCommit=$GIT_COMMIT

WORKDIR /
COPY --from=builder /workspace/manager .
COPY --from=etc-builder /etc/passwd /etc/group /etc/
COPY --from=etc-builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt

USER 1000:1000

ENTRYPOINT ["/manager"]
相关推荐
大新新大浩浩4 小时前
arm64适配系列文章-第九章-arm64环境上sentinel的部署
arm
大新新大浩浩7 小时前
arm64适配系列文章-第三章-arm64环境上mariadb的部署
数据库·arm·mariadb
电脑玩家粉色男孩9 小时前
2、Ubuntu 环境下安装RabbitMQ
linux·rabbitmq
龙仔72514 小时前
离线安装rabbitmq全流程
分布式·rabbitmq·ruby
我是苏苏1 天前
消息中间件RabbitMQ-01:简要介绍及其Windows安装流程
分布式·rabbitmq
码熔burning1 天前
【MQ篇】初识RabbitMQ保证消息可靠性
java·分布式·rabbitmq·可靠性
我爱布朗熊1 天前
4.RabbitMQ - 延迟消息
rabbitmq·springboot
mikey棒棒棒1 天前
使用RabbitMQ实现判题功能
分布式·消息队列·rabbitmq·oj
码熔burning2 天前
【MQ篇】RabbitMQ之工作队列模式!
java·分布式·rabbitmq·mq