国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

在K8S上部署使用NATS消息傳遞的Go應(yīng)用程序

Kubernetes,NATS消息傳遞,部署Go應(yīng)用程序,Docker容器化

在K8S上部署使用NATS消息傳遞的Go應(yīng)用程序

前提條件

在開始之前,請(qǐng)確保您滿足以下:

  • 已在計(jì)算機(jī)上安裝Docker。

  • 已安裝Minikube和kubectl以設(shè)置本地Kubernetes集群。

步驟1:編寫部署YAML文件

首先,我們需要為Go應(yīng)用程序和NATS消息傳遞系統(tǒng)定義部署YAML文件。讓我們創(chuàng)建以下YAML文件:

app-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-go-img-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app-go
  template:
    metadata:
      labels:
        app: app-go
    spec:
      containers:
        - name: app-go-container
          image: app-go
          imagePullPolicy: Never
          ports:
            - containerPort: 8080

nats-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nats
spec:
  replicas: 1
  strategy: {}
  selector:
    matchLabels:
      app: nats
  template:
    metadata:
      labels:
        app: nats
    spec:
      containers:
        - name: nats
          image: nats:2.7.0-alpine
          ports:
            - containerPort: 4222
              targetPort: 4222

nats-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nats-service
spec:
  selector:
    app: nats
  ports:
    - name: client
      port: 4222
      targetPort: 4222
      protocol: TCP

步驟2:編寫Go應(yīng)用程序代碼

接下來,我們需要編寫Go應(yīng)用程序的代碼。創(chuàng)建一個(gè)名為`main.go`的文件,并添加以下代碼:

package main
import (
"fmt"
"log"
"os"
"time"
"github.com/nats-io/nats.go"
)
func main() {
url := os.Getenv("NATS_URL")
if url == "" {
url = nats.DefaultURL
// url = "nats://nats-service.default.svc.cluster.local:4222"
// works fine in case of interpod communication
// another way is to use the service-url directly
url = "nats-service:4222"
}
nc, err := nats.Connect(url)
if err != nil {
log.Fatalln(err)
}
defer nc.Drain()
nc.Publish("greet.joe", []byte("hello"))
sub, _ := nc.SubscribeSync("greet.*")
msg, _ := sub.NextMsg(10 * time.Millisecond)
fmt.Println("subscribed after a publish...")
fmt.Printf("msg is nil? %v\n", msg == nil)
nc.Publish("greet.joe", []byte("hello"))
nc.Publish("greet.pam", []byte("hello"))
msg, _ = sub.NextMsg(10 * time.Millisecond)
fmt.Printf("msg data: %q on subject %q\n", string(msg.Data), msg.Subject)
msg, _ = sub.NextMsg(10 * time.Millisecond)
fmt.Printf("msg data: %q on subject %q\n", string(msg.Data), msg.Subject)
nc.Publish("greet.bob", []byte("hello"))
msg, _ = sub.NextMsg(10 * time.Millisecond)
fmt.Printf("msg data: %q on subject %q\n", string(msg.Data), msg.Subject)
}

該代碼將連接到NATS消息傳遞系統(tǒng),發(fā)布和訂閱消息,并演示了基本功能。

步驟3:構(gòu)建Docker鏡像

現(xiàn)在,讓我們構(gòu)建Go應(yīng)用程序的Docker鏡像。我們將使用多階段的Dockerfile來確保獲得一個(gè)輕量且優(yōu)化的鏡像。創(chuàng)建一個(gè)名為`Dockerfile`的文件,并添加以下代碼:

### 階段1:構(gòu)建Go二進(jìn)制文件
FROM golang:1.17 AS builder
### 在容器內(nèi)設(shè)置工作目錄
WORKDIR /app
### 復(fù)制Go模塊文件并下載依賴項(xiàng)
COPY go.mod go.sum ./
RUN go mod download
### 將應(yīng)用程序源代碼復(fù)制到容器中
COPY . .
### 構(gòu)建Go應(yīng)用程序
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
# 階段2:創(chuàng)建最終鏡像
FROM alpine:latest
# 在容器內(nèi)設(shè)置工作目錄
WORKDIR /app
# 從構(gòu)建階段復(fù)制Go二進(jìn)制文件
COPY --from=builder /app/main .
# 暴露應(yīng)用程序監(jiān)聽的端口
EXPOSE 8080
# 定義容器啟動(dòng)時(shí)運(yùn)行應(yīng)用程序的命令
CMD ["./main"]

在Mac上構(gòu)建鏡像,請(qǐng)執(zhí)行以下命令:

docker buildx build --platform linux/amd64 -t app-go-container .

完成后,您的文件夾結(jié)構(gòu)應(yīng)如下所示:

- app-deployment.yaml
- nats-deployment.yaml
- nats-service.yaml
- main.go
- Dockerfile

步驟4:在Kubernetes上部署應(yīng)用程序

有了我們準(zhǔn)備好的Docker鏡像,讓我們使用Minikube在Kubernetes上部署應(yīng)用程序。

首先,執(zhí)行以下命令確保Minikube正在運(yùn)行:

minikube start

接下來,將Docker鏡像加載到Minikube的鏡像存儲(chǔ)庫中:

minikube image load app-go-container

最后,應(yīng)用部署和服務(wù)的YAML文件以在Kubernetes上創(chuàng)建所需的資源:

kubectl apply -f app-deployment.yaml
kubectl apply -f nats-deployment.yaml
kubectl apply -f nats-service.yaml

文章總結(jié)

本文介紹了如何在Kubernetes上部署使用NATS消息傳遞的Go應(yīng)用程序。

我們涵蓋了編寫部署YAML文件、編寫Go應(yīng)用程序代碼、構(gòu)建Docker鏡像以及使用Minikube在Kubernetes上部署應(yīng)用程序的過程。

通過按照這些步驟,您可以輕松地在Kubernetes集群上部署使用NATS消息傳遞的Go應(yīng)用程序,充分利用容器化和編排的強(qiáng)大功能。

請(qǐng)隨意根據(jù)您的特定需求自定義配置并擴(kuò)展本文介紹的概念。文章來源地址http://www.zghlxwxcb.cn/article/663.html

到此這篇關(guān)于在K8S上部署使用NATS消息傳遞的Go應(yīng)用程序的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

原文地址:http://www.zghlxwxcb.cn/article/663.html

如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系站長(zhǎng)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python應(yīng)用程序部署至K8s——循序漸進(jìn)版

    Python應(yīng)用程序部署至K8s——循序漸進(jìn)版

    (1)Pod處于一直Pending狀態(tài) 解決方法參考:0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn‘t-CSDN博客 (2)Pod處于CrashLoopBackOff狀態(tài) 原因:python不能夠常駐,只能運(yùn)行一次,且是后臺(tái)運(yùn)行情況,則會(huì)出錯(cuò)。 解決方法:將程序設(shè)置成能夠常駐的,并且

    2024年03月22日
    瀏覽(36)
  • 【Go】K8s 管理系統(tǒng)項(xiàng)目[Jenkins Pipeline K8s環(huán)境–應(yīng)用部署]

    【Go】K8s 管理系統(tǒng)項(xiàng)目[Jenkins Pipeline K8s環(huán)境–應(yīng)用部署]

    考慮到實(shí)際工作中前后端可能是不同的同學(xué)完成,一般Api部分完成后改動(dòng)會(huì)比較小,web部分改動(dòng)會(huì)比較頻繁.于是將api和web分了2個(gè)pipeline實(shí)現(xiàn) docker目錄存放鏡像構(gòu)建相關(guān)文件 k8s-plantform-api 存放api部分代碼 Jenkinsfile用作pipeline配置 yaml用作生成k8s下k8s-plantform-api相關(guān)資源 1.1.1 docker目

    2023年04月08日
    瀏覽(38)
  • 阿里云K8S部署Go+Vue項(xiàng)目

    阿里云K8S部署Go+Vue項(xiàng)目

    ????????Kubernetes是一個(gè)可以移植、可擴(kuò)展的開源平臺(tái),使用聲明式的配置并依據(jù)配置信息自動(dòng)地執(zhí)行容器化應(yīng)用程序的管理。在所有的容器編排工具中(類似的還有 docker swarm / mesos等),Kubernetes的生態(tài)系統(tǒng)更大、增長(zhǎng)更快,有更多的支持、服務(wù)和工具可供用戶選擇。 優(yōu)勢(shì)

    2024年01月16日
    瀏覽(31)
  • 將Go語言開發(fā)的Web程序部署到K8S

    將Go語言開發(fā)的Web程序部署到K8S

    如果已經(jīng)有K8S環(huán)境的同學(xué)可以跳過,如果沒有,推薦你看看我的《Ubuntu22加Minikue搭建K8S環(huán)境》,課程目錄如下: 下載:https://code.visualstudio.com/Download 安裝命令: 下載:https://studygolang.com/dl 將其上傳到Downloads目錄下。 解壓: 將其移動(dòng)到特定目錄: 配置環(huán)境變量: 激活環(huán)境變

    2024年02月03日
    瀏覽(63)
  • 使用kubekey部署k8s集群和kubesphere、在已有k8s集群上部署kubesphere

    環(huán)境: centos 7.6、k8s 1.22.17、kubesphere v3.3.0 本篇以kubesphere v3.3.0版本講解。 kubesphere 愿景是打造一個(gè)以 kubernetes 為內(nèi)核的云原生分布式操作系統(tǒng),它的架構(gòu)可以非常方便地使第三方應(yīng)用與云原生生態(tài)組件進(jìn)行即插即用(plug-and-play)的集成,支持云原生應(yīng)用在多云與多集群的統(tǒng)一

    2024年02月04日
    瀏覽(35)
  • 【k8s完整實(shí)戰(zhàn)教程4】使用kubesphere部署項(xiàng)目到k8s

    【k8s完整實(shí)戰(zhàn)教程4】使用kubesphere部署項(xiàng)目到k8s

    系列文章:這個(gè)系列已完結(jié),如對(duì)您有幫助,求點(diǎn)贊收藏評(píng)論。 讀者寄語: 再小的帆,也能遠(yuǎn)航! 【k8s完整實(shí)戰(zhàn)教程0】前言 【k8s完整實(shí)戰(zhàn)教程1】源碼管理-Coding 【k8s完整實(shí)戰(zhàn)教程2】騰訊云搭建k8s托管集群 【k8s完整實(shí)戰(zhàn)教程3】k8s集群部署kubesphere 【k8s完整實(shí)戰(zhàn)教程4】使用

    2023年04月18日
    瀏覽(63)
  • 使用docker 部署k8s集群

    使用docker 部署k8s集群

    目錄 一、環(huán)境準(zhǔn)備: 二、master節(jié)點(diǎn)修改hosts, 配置主機(jī)可達(dá) 三、將橋接的IPv4流量傳遞到iptables的鏈 四、配置 daemon.json,設(shè)置cgroup的管理方式為systemd及配置阿里云鏡像加速 五、添加yum源 六、安裝 kubeadm,kubelet 和 kubectl 七、master部署k8s 八、將kubeadm join 復(fù)制到兩個(gè)node節(jié)點(diǎn)執(zhí)

    2024年02月12日
    瀏覽(38)
  • 持續(xù)集成部署-K8s 簡(jiǎn)單使用

    這里將 HTTPD 服務(wù)映射到 Kubernetes 集群的 8080 端口上,直接在Master節(jié)點(diǎn)上操作即可。 創(chuàng)建一個(gè)名為 httpd-deployment.yaml 的 YAML 文件,內(nèi)容如下:

    2024年02月12日
    瀏覽(31)
  • Jenkins使用k8s部署應(yīng)用

    Jenkins使用k8s部署應(yīng)用

    1、jenkins在k8s內(nèi)部署(請(qǐng)參考其他人的文章) 2、jenkins安裝kubenents相關(guān)插件 3、配置k8s云 ????????非常重要,目的是實(shí)現(xiàn)jenkins可以遠(yuǎn)程調(diào)用k8s進(jìn)行部署,并可實(shí)現(xiàn)安裝jenkins-slave進(jìn)行構(gòu)建。使得不再依賴jenkins單機(jī)能力進(jìn)行構(gòu)建,比較適合一定規(guī)模的公司。 ?插件安裝后,打開

    2024年02月15日
    瀏覽(45)
  • Kubeadm 部署 k8s 使用國(guó)內(nèi)鏡像源

    Kubernetes官方文檔的安裝過程中,有些地方需要使用國(guó)內(nèi)的鏡像源才能完成 這篇文章整合了所有需要替換國(guó)內(nèi)鏡像的地方,供參考 操作系統(tǒng):Rocky 9(最小安裝) 容器運(yùn)行時(shí):containerd k8s阿里云源 docker-ce阿里云源 安裝containerd時(shí)需要,實(shí)測(cè)輸入這一行命令就可以了

    2024年02月11日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包