1. スクリプトを作成する
Helm は、Kubernetes アプリケーションのデプロイメントと管理を簡素化および自動化するのに役立つ Kubernetes 用のパッケージ管理ツールです。Helm を使用すると、Kubernetes リソースと構成情報を含む Helm チャートと呼ばれるアプリケーション パッケージを作成および管理でき、さまざまな Kubernetes クラスターにアプリケーションをデプロイおよび管理できます。
Helm では、`helm create` コマンドを実行することで、新しい Helm チャートをすばやく作成できます。このコマンドは、初期 Helm Chart ディレクトリ構造を生成し、いくつかのサンプル ファイルを含むため、独自のアプリケーションの構築をすぐに開始できます。
以下は、`helm create` コマンドを使用して Helm チャート ファイルを最初に生成する手順です。
1. ターミナルまたはコマンドラインインターフェイスを開きます。
2. Helm チャートを作成するディレクトリを入力します (例: `cd /path/to/charts`)
3. `helm create` コマンドを実行し、チャートの名前を指定します (例: helm create Rabbitmq-)管理
上記のコマンドを実行すると、Helm は現在のディレクトリの下に「 rabbitmq-management」という名前のHelm Chart ディレクトリを作成し、次のファイルとディレクトリを生成します。
rabbitmq-management
├── Chart.yaml
├── charts
├── templates
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
生成されたファイルの「templates」ディレクトリには、いくつかのサンプル テンプレート ファイルが含まれており、デプロイする Kubernetes リソースを定義するために、必要に応じてテンプレート ファイルを変更または追加できます。「values.yaml」ファイルにはいくつかのデフォルト設定値が含まれており、チャートのデフォルト設定を定義し、テンプレートでこれらの設定を使用できます。
最初の Helm チャート ファイルが生成されたら、必要に応じてチャートを編集およびカスタマイズし、`helm install` コマンドを使用してアプリケーションを Kubernetes クラスターにデプロイできます。
2. 文法のテスト
ヘルメットの糸くず
helm lint ./rabbitmq-management
==> Linting ./rabbitmq-management
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, 0 chart(s) failed
3 番目に、スクリプトの内容を表示します
ヘルムテンプレート
helm template rabbitmq-management ./rabbitmq-management
---
# Source: rabbitmq-management/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: rabbitmq-management
labels:
dce.daocloud.io/app: rabbitmq-management
helm.sh/chart: rabbitmq-management-0.1.0
app.kubernetes.io/name: rabbitmq-management
app.kubernetes.io/instance: rabbitmq-management
app.kubernetes.io/version: "1.16.0"
app.kubernetes.io/managed-by: Helm
spec:
type: NodePort
ports:
- port: 5672
targetPort: 5672
protocol: TCP
name: connection
- port: 15672
targetPort: 15672
protocol: TCP
name: management
selector:
app.kubernetes.io/name: rabbitmq-management
app.kubernetes.io/instance: rabbitmq-management
---
# Source: rabbitmq-management/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: rabbitmq-management
labels:
dce.daocloud.io/app: rabbitmq-management
dce.daocloud.io/component: rabbitmq-management
helm.sh/chart: rabbitmq-management-0.1.0
app.kubernetes.io/name: rabbitmq-management
app.kubernetes.io/instance: rabbitmq-management
app.kubernetes.io/version: "1.16.0"
app.kubernetes.io/managed-by: Helm
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: rabbitmq-management
app.kubernetes.io/instance: rabbitmq-management
template:
metadata:
labels:
dce.daocloud.io/app: rabbitmq-management
dce.daocloud.io/component: rabbitmq-management
app.kubernetes.io/name: rabbitmq-management
app.kubernetes.io/instance: rabbitmq-management
spec:
securityContext:
{}
containers:
- name: rabbitmq-management
securityContext:
{}
image: "10.32.224.129/rabbitmq/rabbitmq:3.6.2-management"
imagePullPolicy: IfNotPresent
ports:
- name: connection
containerPort: 5672
protocol: TCP
- name: management
containerPort: 15672
protocol: TCP
livenessProbe:
tcpSocket:
port: 5672
initialDelaySeconds: 45
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 3
readinessProbe:
tcpSocket:
port: 5672
initialDelaySeconds: 30
timeoutSeconds: 1
periodSeconds: 10
successThreshold: 1
failureThreshold: 9
resources:
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 100m
memory: 1Gi
---
# Source: rabbitmq-management/templates/tests/test-connection.yaml
apiVersion: v1
kind: Pod
metadata:
name: "rabbitmq-management-test-connection"
labels:
helm.sh/chart: rabbitmq-management-0.1.0
app.kubernetes.io/name: rabbitmq-management
app.kubernetes.io/instance: rabbitmq-management
app.kubernetes.io/version: "1.16.0"
app.kubernetes.io/managed-by: Helm
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['rabbitmq-management:5672']
restartPolicy: Never