Skaffoldによる簡単なKubernetes発展


この記事では、我々はどのように我々はKubernetesネイティブアプリケーションをローカルに開発するskaffoldを使用することができます参照してください.
私は使用されますminikube ローカルKubernetesクラスタについて

何がskaffoldですか?
SkaffoldはあなたのローカルまたはリモートKubernetesクラスタに展開することによってKubernetesネイティブアプリケーションの開発を支援するコマンドラインツールです.
これは、ビルド、プッシュ、およびアプリケーションの展開のワークフローを処理することができます.Skaffoldもあなたのクラスタに必要なコンポーネントなしで、クライアント側で完全に動作します.そして、それを超軽量で高性能にします.
それは偉大な開発者の経験を持って、私はしばらくの間それを使用してきた.skaffoldについて詳しく知るhere


インストール
から足場をインストールできますhere

プロジェクト設定
私はかなり簡単なエクスプレスアプリを初期化しました.
├── src
│   └── index.js
├── package.json
└── yarn.lock
Minikubeクラスタを起動します
$ minikube start


Dockerfile
我々が我々のKubernetesクラスタでそれを走らせることができるように、我々のアプリをDockerizeしましょう
注:あなたのアプリケーションをDockerizingのベストプラクティスについてもっと学ぶために、チェックアウトマイ!
FROM node:14-alpine
# Declare a workdir
WORKDIR /app
# Cache and install dependencies
COPY package.json yarn.lock ./
RUN yarn install
# Copy app files
COPY . ./
# Expose port
EXPOSE 4000
CMD [ "yarn", "start" ]
また、すぐにAを加えましょう.dockerignore 除くnode_modules
**/node_modules

k 8 s展開の作成
を作成しましょうk8s フォルダと作成deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
  labels:
    app: app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
        - name: app
          image: node-app
          resources:
            limits:
              memory: 512Mi
              cpu: "1"
          ports:
            - containerPort: 4000

K 8 S展開のサービスの公開
では、Aを加えましょうk8s/service.yaml 活字NodePort 展開を公開するには
apiVersion: v1
kind: Service
metadata:
  name: app-svc
spec:
  type: NodePort
  selector:
    app: app
  ports:
  - port: 4000
    targetPort: 4000

足場設定
そして最後に、私たちはskaffold.yaml 我々のアプリの設定.
完全な設定オプションを見つけることができますhere
apiVersion: skaffold/v2beta18
kind: Config

profiles:
  - name: dev
    activation:
      - command: dev
    build:
      artifacts:
      - image: node-app
        context: .
        sync:
          manual:
          - src: 'src/**/*.js'
            dest: .
カスタムパスでKubernetes YAMLファイルを保存している場合は、skaffold.yaml
profile: ...
deploy:
  kubectl:
    manifests:
      - custom/path/file.yaml
スタート!スタート!スタート!
skaffold dev --port-forward

注:また、宣言することができます portForward あなたのskaffold.yaml
portForward:
  - resourceType: service
    resourceName: app-svc
    port: 4000
    localPort: 4000

ビルドパックの使用
ビルドパックでは、ソースコードからコンテナイメージを構築することができますDockerfile .
Skaffoldは、クラウド固有のビルドパックで構築をサポートします.これは私たちを簡素化するのに役立ちますskaffold.yaml
apiVersion: skaffold/v2beta18
kind: Config

profiles:
  - name: dev
    activation:
      - command: dev
    build:
      artifacts:
      - image: node-app
        buildpacks:
          builder: "gcr.io/buildpacks/builder:v1"
この記事は、skaffoldが可能であるものの表面をひっかきます!あなたは公式のトンの例を見つけることができますgithub repository
これが有用であることを願っていますrepository . いつものように、任意の問題に直面している場合はいつでも手を伸ばす自由.