GitHub - JasonkayZK/kubernetes-learn at go-hello-deploy-demo
source link: https://github.com/JasonkayZK/kubernetes-learn/tree/go-hello-deploy-demo
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Project Deploy Demo
A demo to show how to deploy project to k8s.
Project Info
Project is simple:
:8080/
: show<h1>Hello World</h1>
:8080/health_check
: show<h1>Health check</h1>
How to use
1.Test Your Application.
Run app local:
go run main.go
Open browser to:
- localhost:8080/
- localhost:8080/health_check
It’s ok to see:
And Health check
;
2.Build your onw image
Write Dockerfile
FROM golang:1.17.2-alpine3.14 MAINTAINER [email protected] RUN mkdir /app COPY . /app WORKDIR /app RUN go build -o main . CMD ["/app/main"]
You can change
FROM <image>
arbitrarily.
Build Image:
docker build -t jasonkay/go-hello-app:v0.0.1 .
You can change
image-name
arbitrarily.
Push Image:
docker push jasonkay/go-hello-app:v0.0.1
Local Check(Optional)
Use
docker run -d -p 8080:8080 --rm --name go-hello-app-container jasonkay/go-hello-app:v0.0.1
to test in docker container.
3.Deploy in K8S
Create file deployment.yaml
:
deploy/deployment.yaml
--- apiVersion: apps/v1 kind: Deployment metadata: name: go-hello-app namespace: my-workspace # 声明工作空间,默认为default spec: replicas: 2 selector: matchLabels: name: go-hello-app template: metadata: labels: name: go-hello-app spec: containers: - name: go-hello-container image: jasonkay/go-hello-app:v0.0.1 imagePullPolicy: IfNotPresent ports: - containerPort: 8080 # containerPort是声明容器内部的port --- apiVersion: v1 kind: Service metadata: name: go-hello-app-service namespace: my-workspace # 声明工作空间,默认为default spec: type: NodePort ports: - name: http port: 18080 # Service暴露在cluster-ip上的端口,通过<cluster-ip>:port访问服务,通过此端口集群内的服务可以相互访问 targetPort: 8080 # Pod的外部访问端口,port和nodePort的数据通过这个端口进入到Pod内部,Pod里面的containers的端口映射到这个端口,提供服务 nodePort: 31080 # Node节点的端口,<nodeIP>:nodePort 是提供给集群外部客户访问service的入口 selector: name: go-hello-app
Your may need to change some configs:
- metadata.namespace;
- spec.spec.containers.image;
then deploy to your k8s cluster:
kubectl create -f deploy/deployment.yaml
4.Check Deployment
First, use command to check:
kubectl get po -n my-workspace NAME READY STATUS RESTARTS AGE go-hello-app-555c69b994-zt9zf 2/2 Running 0 54m go-hello-app-555c69b994-zwdb7 2/2 Running 0 54m
Second, use dashboard to check:
Finally, Visit NodePort to check:
And you will see just as the same as:
5.Delete Deployment
Use command below to delete Deployment:
kubectl delete -f deploy/deployment.yaml
Linked Blog
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK