codeup云效flow

制作Dockerfile

FROM golang:alpine AS builder
ADD ./ /data/app/
WORKDIR /data/app/

ENV GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64 \
    GOPROXY=https://goproxy.io,direct

EXPOSE 8888

RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o scheduler_linux_amd64 main.go

CMD ["./scheduler_linux_amd64"]

可以在本地跑一下,项目是否正常启动

docker build -t schedulersd:v1 .
docker run -it  -p 8888:8888 schedulersd:v1

代码提交codeup

在这里插入图片描述

创建flow ci/cd流程

在这里插入图片描述

1. 镜像创建

需要创建docker register,指定授权服务

在这里插入图片描述

2.kubectl构建

在这里插入图片描述
deployemnt.yaml可以参考这个, ${version} 就是指定的镜像version

apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-go
  namespace: dev
spec:
  replicas: 3
  selector:
    matchLabels:
      app: k8s-go
  revisionHistoryLimit: 10
  template:
    metadata:
      labels:
        app: k8s-go
    spec:
      containers:
        - name: k8s-go
          image: ${version}
          resources:
            requests:
              memory: '256Mi'
              cpu: '100m'
            limits:
              memory: '1024Mi'
              cpu: '500m'
          ports:
            - containerPort: 8080
          imagePullPolicy: Always
      imagePullSecrets:
        - name: registry-secret
---
apiVersion: v1
kind: Service
metadata:
  name: k8s-go
  namespace: dev
spec:
  selector:
    app: k8s-go
  type: ClusterIP
  ports:
    - port: 80
      targetPort: 8080

3.可以查看构建的记录 等信息,跟gitlab类似

在这里插入图片描述

tips:云效连接k8s用公网,将192...71:6443 apiserver内网端点替换为公网

[18:22:06] Unable to connect to the server: dial tcp 192.*.*.71:6443: i/o timeout
[18:22:06] [ERROR] 连接集群失败
[18:22:06] [ERROR] BUILD ERROR

在这里插入图片描述

项目有依赖的内部代码仓库,怎么办?

https://blog.huoding.com/2021/08/24/944

在这里插入图片描述

1.golang构建 下载所有的依赖到vendor中

在这里插入图片描述

export GOPRIVATE="*.aliyun.com"
export GOPROXY=https://goproxy.cn
git config --global url."https://${GIT_USERNAME}:${GIT_PASSWORD}@code.aliyun.com".insteadOf "https://code.aliyun.com"
go mod tidy && go mod vendor
cp deploy/* .

2.docker build

在这里插入图片描述

${CI_COMMIT_REF_NAME}-${CI_COMMIT_ID}-${DATETIME}

tips: 镜像仓库可以直接用 “+” 创建

在这里插入图片描述

在这里插入图片描述
Dockerfile

# 构建最小运行时镜像
FROM golang:alpine AS builder
WORKDIR /build
COPY . .
RUN go build -mod=vendor main.go


# 我们创建一个 /dist 目录, 仅包含运行时必须的文件
# 然后,他会被复制到输出镜像的 / (根目录)
WORKDIR /data
RUN cp /build/main /data && cp -r /build/config /data

# 构建最小运行时镜像
FROM alpine

ENV TZ=Asia/Shanghai
# 设置应用程序以 /data 文件夹中的非 root 用户身份运
# User ID 65534 通常是 'nobody' 用户.
# 映像的执行者仍应在安装过程中指定一个用户。
COPY  --from=builder /data /data
WORKDIR /data
EXPOSE 8080
ENV env=test
CMD ["./main"]

3.拉取镜像验证

docker run -it registry.cn-beijing.aliyuncs.com/***_dev/ad-distribution-srv:test-fe3f2fe4-2022-01-18-17-15-39

在这里插入图片描述

阿里云k8s 部署go项目

在工作负载 namespace == dev 中可以看见pod的信息,已经运行成功
在这里插入图片描述
在这里插入图片描述

配置service

在这里插入图片描述
在这里插入图片描述

配置ingress

在这里插入图片描述
注意,如果你的k8s有设置的路径,路由里一定要有,否则报503找不到

成功设置

在这里插入图片描述
中间遇到困难,记得提工单!

更换k8s集群

更改云效的集群地址,重新使用deployment.yaml生成pod
修改service,在容器中 开放端口即可,service只对应服务端口,一般用80:port

在这里插入图片描述

在这里插入图片描述

手动部署k8s

1.使用Dockerfile 打镜像、打tag
2.push 到私有仓库
3.本地使用deployment.yaml文件,或者阿里云控制台手动部署
在这里插入图片描述

知识点

如何使用子模块(gitsubmoudle)

在这里插入图片描述

如何在k8s集群中配置连接 Mysql 外网

内网连接:
需要把节点和pod 网段添加到RDS 的白名单中,

外网连接:
需要把NAT 网关的IP 添加到RDS 的白名单中

在这里插入图片描述

怎ram 么给serverless集群配置公网访问域名

开业通过slb暴露服务,然后给slbip配置解析到xxx.com呢 https://help.aliyun.com/document_detail/86384.html?spm=a2c4g.11186623.6.1066.53fb6da8TT8iu9

istio、knative功能

istio主要是服务网格的,参考文档介绍 https://istio.io/latest/docs/concepts/what-is-istio/

knative https://help.aliyun.com/knowledge_detail/184832.html?spm=a2c4g.11186631.2.2.7bd761f7XLHcAp

集群中指定了class,但是集群中并没有部署ingress-controller
在自己在ASK中部署ingress-controller

如果使用ASK默认的ingress,可以参考这个

通过Ingress提供7层服务访问

gitlab build 阿里镜像

webhook
钉钉
在这里插入图片描述

镜像,需要镜像服务的token

http://cr-callback.console.aliyun.com/sourceRepo/doGitLabCallBack.json?site=china

在这里插入图片描述

Logo

更多推荐