使用devspace进行云原生开发

目录

云原生开发的痛点:

devspace是什么?

安装(以mac为例)

使用devspace进行controller/operator开发

1、进入controller的开发文件夹下

2、初始化devspace配置

a)如何部署该项目:

b)如何编译镜像:​

c)选择镜像仓库:​

d)是否需要暴露端口:

e)配置完成后,这些配置会生成为devspace.yaml文件​

3、开发项目

设置ns

 进行开发

文件自动同步:

注意事项:


云原生开发的痛点:

开发controller/crd operator时,需要在集群中运行测试。部署一般是利用pipeline或者二进制进行。而出现问题需进行调试时,一般只能通过打印日志,然后重新运行pipeline,生成新的镜像,然后更新pod。

这样导致效率过低,简单的几行debug都需要走一遍全部流程。

devspace是什么?

DevSpace是Kubernetes的开源开发工具,可以让您更快地开发和部署云本地软件。

官网:https://devspace.sh/

安装(以mac为例)

DevSpace是一个仅限客户端的二进制文件。它是超轻量的,不需要任何服务器端组件,并且没有任何依赖性。

curl -s -L "https://github.com/loft-sh/devspace/releases/latest" | sed -nE 's!.*"([^"]*devspace-darwin-amd64)".*!https://github.com\1!p' | xargs -n 1 curl -L -o devspace && chmod +x devspace;
sudo install devspace /usr/local/bin;

使用devspace进行controller/operator开发

1、进入controller的开发文件夹下

比如~./go/src/sample-controller/

2、初始化devspace配置

devspace init

这一步会让我们进行一些配置:

a)如何部署该项目:

给出了几个选择:

用devspace自动生成的helm

用自己的helm

用kubectl,这个需要我们准备好对应的yaml

kustomize,这个也需要我们准备好对应的文件

这里我们选择第一个,devspace自动生成的helm

b)如何编译镜像:

 也给出了选择:

用当前目录下的Dockerfile

用其他目录下的dockerfile

使用第三方编译方法,比如jib,bazel

这里我们选择第一个

c)选择镜像仓库:

 这一步没什么说的

d)是否需要暴露端口:

 如果是web服务,则填入监听的端口就行。否则,则直接回车跳过。

e)配置完成后,这些配置会生成为devspace.yaml文件

接着就可以使用devspace use namespace和devspace dev来debug项目了。

3、开发项目

设置ns

部署项目的namespace,my-namespace,后续开发,部署deploy,都会在这个ns下。

devspace use namespace my-namespace

 进行开发

devspace dev

会通过helm部署deployment,然后会把文件夹下的所有文件同步到pod中,

最后自动进入到pod中。 进行go run main.go即可

文件自动同步:

在本地ide修改的文件,都会自动同步到pod中去。大大方便了debug。

注意事项:

1、在pod中,会自动生成rbac,但是权限很小。如果需要起informer拉取资源的。需要修改devspace.yaml,手动添加rbac:

devspace.yaml

deployments:
  - name: deploy-service-acccount
    kubectl:
      manifests:
      - folder/serviceaccount.yaml
  - name: <name>
    helm:
      componentChart: true
      values:
        serviceAccountName: my-service-account
        containers:
          ...

提前准备好sa和clusterrole、rolebinding等yaml文件。保存在folder/serviceaccount.yaml下。

起了一个叫deploy-service-account的deploy job。采用kubectl的方式,把folder/serviceaccount.yaml apply到集群中。

然后在需要这个sa的deploy中,配置下,values,添加serviceAccountName: my-service-account。这样就会在devspace dev时使用这个sa。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值