在 GKE 上,我将有状态集资源设置为
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis
spec:
serviceName: "redis"
selector:
matchLabels:
app: redis
updateStrategy:
type: RollingUpdate
replicas: 3
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis
resources:
limits:
memory: 2Gi
ports:
- containerPort: 6379
volumeMounts:
- name: redis-data
mountPath: /usr/share/redis
volumes:
- name: redis-data
persistentVolumeClaim:
claimName: redis-data-pvc
Run Code Online (Sandbox Code Playgroud)
想要使用 PVC 所以创建了这个。(这一步是在statefulset部署之前完成的)
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-data-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
Run Code Online (Sandbox Code Playgroud)
当检查kubernetes中的资源时
kubectl get pvc
NAME …Run Code Online (Sandbox Code Playgroud) kubernetes google-kubernetes-engine persistent-volumes kubernetes-pvc kubernetes-statefulset
我正在使用swaggo根据godoc语法生成 API 文档。
源文件夹和文件
|-post
|--controller.go
|--response.go
Run Code Online (Sandbox Code Playgroud)
对于这个定义:
controller.go
package post
...
// Index godoc
// @Summary Index Post
// @Success 200 {array} []*Response
// @Router /v1/posts [get]
func Index(ctx *gin.Context) {
...
}
Run Code Online (Sandbox Code Playgroud)
它Response是在同一包的另一个文件中定义的。
response.go
package post
// Response is post response body
type Response struct {
ID int64 `json:"id"`
Name string `json:"name"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
Run Code Online (Sandbox Code Playgroud)
但是当运行swag init生成 swagger 文档时,它说:
2021/01/29 09:39:56 Generate swagger docs....
2021/01/29 09:39:56 …Run Code Online (Sandbox Code Playgroud) 使用Rails的路由,对于像这样的URL https://www.amazon.com/posts/1,可以使用这种方式来做
get \'posts/:url\', to: \'posts#search\', constraints: { url: /.*/ }\nRun Code Online (Sandbox Code Playgroud)\n使用go的gin框架,没有找到这样的路由的正则约束方法
\nr.GET("posts/search/:url", post.Search)\nRun Code Online (Sandbox Code Playgroud)\n在后置控制器中
\nfunc Search(c *gin.Context) {\n fmt.Println(c.Param("url"))\n}\nRun Code Online (Sandbox Code Playgroud)\n调用时http://localhost:8080/posts/search/https://www.amazon.com/posts/1,返回404代码。
就像https://play.golang.org/p/dsB-hv8Ugtn
\n\xe2\x9e\x9c ~ curl http://localhost:8080/site/www.google.com\nHello www.google.com%\n\xe2\x9e\x9c ~ curl http://localhost:8080/site/http://www.google.com/post/1\n404 page not found%\n\xe2\x9e\x9c ~ curl http://localhost:8080/site/https%3A%2F%2Fwww.google.com%2Fpost%2F1\n404 page not found%\n\xe2\x9e\x9c ~ curl http://localhost:8080/site/http:\\/\\/www.google.com\\/post\\/1\n404 page not found%\nRun Code Online (Sandbox Code Playgroud)\n 我有一个 go 项目文件夹
my_project
|- common
|- library
|- golang
|- my_app
|- Dockerfile
|- go.mod
|- go.sum
|- main.go
Run Code Online (Sandbox Code Playgroud)
Dockerfile 来自谷歌云官方示例:
FROM golang:1.15-buster as builder
WORKDIR /app
COPY go.* ./
RUN go mod download
COPY . ./
RUN go build -mod=readonly -v -o server
FROM debian:buster-slim
RUN set -x && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
ca-certificates && \
rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/server /server
CMD ["/server"]
Run Code Online (Sandbox Code Playgroud)
go.mod 在同一个项目中使用公共库但属于私有存储库:
module run
go 1.15
require (
github.com/my/private/my_project/common/library/golang …Run Code Online (Sandbox Code Playgroud) go ×3
docker ×1
frameworks ×1
godoc ×1
include ×1
kubernetes ×1
module ×1
package ×1
path ×1
regex ×1
routes ×1
swagger ×1
url-routing ×1