K 8 SにHelmを配備
13996 ワード
K 8 Sにおけるパッケージ管理ツール
1.クライアントHelm(つまりHelm)
スクリプトによるインストール:
注意:スクリプト実行時に発生する可能性があります
2.サービス側Tiller
直接
podが正常に確認されました.
tillerライセンス:
アンインストールtiller:
Helm chart(Helmのパッケージの形式をchartと呼びます):
生成されたchartスケルトンは次のとおりです.
testapi-chart ├── charts ├── Chart.yaml ├── templates │ ├── deployment.yaml │ ├── _helpers.tpl │ ├── ingress.yaml │ ├── NOTES.txt | ├── service.yaml │ └── tests └── values.yaml
ここでtemplatesディレクトリにはK 8 S配置ファイルのテンプレート、Chartが格納されている.yamlファイルは次のとおりです.
ここでvalues.yamlファイルは次のとおりです.
アクセス可能
全てOKなら梱包可能(
現在のディレクトリにパッケージ化され、ローカルのhelm倉庫に直接公開することもできます:
すでにK 8 Sに作成されている
Chartのパッケージバージョンを変更
2つ出てきましたが、現在は旧バージョンのdeploymentを削除するchart:
ただし、この場合は削除されたパッケージの名前を覚えておく必要があります.実際には
アップグレード、関連するChartを修正することができます.yamlファイル後、そのディレクトリで直接実行
【Helm倉庫の設置】
ますますこれがmvnに似ていると感じて、Helmの倉庫は1つのWEBサーバーで、例えば
そして待って、インストールが終わったら、
【Helm倉庫の使用】
HelmetをHelmウェアハウスとして使用し、K 8 Sクラスタに配備してChartを追加することができます.
1.クライアントHelm(つまりHelm)
スクリプトによるインストール:
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > helm.sh
、実行権限付与:chmod +x helm.sh
./helm.sh
#
Downloading https://kubernetes-helm.storage.googleapis.com/helm-v2.13.1-linux-amd64.tar.gz
Preparing to install helm and tiller into /usr/local/bin
helm installed into /usr/local/bin/helm
tiller installed into /usr/local/bin/tiller
Run 'helm init' to configure helm.
#
helm help
注意:スクリプト実行時に発生する可能性があります
curl: (7) Failed connect to kubernetes-helm.storage.googleapis.com:443;
異常情報は、複数回実行してください.2.サービス側Tiller
直接
helm init
、K 8 SクラスタにTiller(kube-systemネーミングスペースに)をインストールすることができますが、実行時にヒントが成功しましたが、K 8 Sはコンテナの状態を確認してFailed to pull image "gcr.io/kubernetes-helm/tiller:v2.13.1"....
の異常があり、確認tiller-deployment
のyamlファイルはコンテナのミラーがgcr.io/kubernetes-helm/tiller:v2.13.1
となっています.dockerhubに行ってGoogleのレプリケーションミラーの名前空間を確認するmirrorgooglecontainers
あるかどうか、またユーザーミラーがあるかどうかを確認しないdocker search tiller:v2.13.1
、ユーザーのミラーを引いてtagを修正し、古いものを削除する(ノードごとにやることをお勧めしますが、セレクタは指定されていない可能性があります):docker pull hekai/gcr.io_kubernetes-helm_tiller_v2.13.1
docker tag hekai/gcr.io_kubernetes-helm_tiller_v2.13.1 gcr.io/kubernetes-helm/tiller:v2.13.1
docker rmi hekai/gcr.io_kubernetes-helm_tiller_v2.13.1
podが正常に確認されました.
tillerライセンス:
#
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
# kubectl patch API
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
#
kubectl get deploy --namespace kube-system tiller-deploy --output yaml|grep serviceAccount
serviceAccount: tiller
serviceAccountName: tiller
helm version
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
アンインストールtiller:
helm reset
またはhelm reset --force
3.使用Helm chart(Helmのパッケージの形式をchartと呼びます):
#
git clone https://github.com/daemonza/testapi.git;
cd testapi
# chart
helm create testapi-chart
生成されたchartスケルトンは次のとおりです.
testapi-chart ├── charts ├── Chart.yaml ├── templates │ ├── deployment.yaml │ ├── _helpers.tpl │ ├── ingress.yaml │ ├── NOTES.txt | ├── service.yaml │ └── tests └── values.yaml
ここでtemplatesディレクトリにはK 8 S配置ファイルのテンプレート、Chartが格納されている.yamlファイルは次のとおりです.
# chartAPI , v1
apiVersion: v1
#
appVersion: "1.0"
#
description: A Helm chart for Kubernetes
# chart ,
name: testapi-chart
# chart , , SemVer
version: 0.1.0
ここでvalues.yamlファイルは次のとおりです.
# Default values for testapi-chart.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: nginx
tag: stable
pullPolicy: IfNotPresent
nameOverride: ""
fullnameOverride: ""
service:
type: ClusterIP
port: 80
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: chart-example.local
paths: []
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}
アクセス可能
Chart.yaml
所在ディレクトリ実行チャート:cd testapi-chart
# chart
helm lint
全てOKなら梱包可能(
Chart.yaml
の親目録外):# --debug , ,testapi-chart chart ,
helm package testapi-chart --debug
#
Successfully packaged chart and saved it to: /root/k8s/helm/testapi/testapi-chart-0.1.0.tgz
[debug] Successfully saved /root/k8s/helm/testapi/testapi-chart-0.1.0.tgz to /root/.helm/repository/local
現在のディレクトリにパッケージ化され、ローカルのhelm倉庫に直接公開することもできます:
helm install testapi-chart-0.1.0.tgz
、出力は以下の通りです.NAME: lumbering-zebu
LAST DEPLOYED: Fri Apr 26 18:54:26 2019
NAMESPACE: default
STATUS: DEPLOYED
RESOURCES:
==> v1/Deployment
NAME READY UP-TO-DATE AVAILABLE AGE
lumbering-zebu-testapi-chart 0/1 1 0 0s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
lumbering-zebu-testapi-chart-7fb48fc7b6-n6824 0/1 ContainerCreating 0 0s
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
lumbering-zebu-testapi-chart ClusterIP 10.97.1.55 80/TCP 0s
NOTES:
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=testapi-chart,app.kubernetes.io/instance=lumbering-zebu" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl port-forward $POD_NAME 8080:80
すでにK 8 Sに作成されている
deployment
デフォルトのネーミングスペースを見ると1つ増えているlumbering-zebu-testapi-chart
Deployment、deploymentのパッケージを見ることができます:helm ls
#
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
lumbering-zebu 1 Fri Apr 26 18:54:26 2019 DEPLOYED testapi-chart-0.1.0 1.0 default
Chartのパッケージバージョンを変更
0.1.0
->0.1.1
、パッケージ、リリースを再実行し、再度表示する:kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
lumbering-zebu-testapi-chart 1/1 1 1 13m
odd-chicken-testapi-chart 1/1 1 1 85s
2つ出てきましたが、現在は旧バージョンのdeploymentを削除するchart:
helm delete lumbering-zebu-testapi-chart
、helm ls
およびkubectl get pods
旧バージョンのdeploymentが削除されていることがわかります.削除後もロールバックできます.# testapi 1 , -testapi-chart
helm rollback lumbering-zebu 1
#
Rollback was a success! Happy Helming!
#
helm ls
ただし、この場合は削除されたパッケージの名前を覚えておく必要があります.実際には
helm ls --deleted
削除されたパッケージの名前を表示できます.アップグレード、関連するChartを修正することができます.yamlファイル後、そのディレクトリで直接実行
helm upgrade odd-chicken .
コマンドで更新できます.#
helm ls
#
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
odd-chicken 2 Fri Apr 26 19:26:21 2019 DEPLOYED testapi-chart2-2.1.1 2.0 default
【Helm倉庫の設置】
ますますこれがmvnに似ていると感じて、Helmの倉庫は1つのWEBサーバーで、例えば
charts
ディレクトリからhelmサービスを提供します:helm serve --repo-path ./charts
.また、Chartサービスの管理については、WEBページを提供するためにMonocularをインストールする必要がある場合があります.インストール手順は以下の通りです.#
docker pull registry.cn-shanghai.aliyuncs.com/hhu/defaultbackend:1.4
docker tag registry.cn-shanghai.aliyuncs.com/hhu/defaultbackend:1.4 k8s.gcr.io/defaultbackend:1.4
docker rmi registry.cn-shanghai.aliyuncs.com/hhu/defaultbackend:1.4
# Nginx Ingress controller
helm install stable/nginx-ingress --set controller.hostNetwork=true,rbac.create=true
# ( )
helm repo add monocular https://helm.github.io/monocular
# monocular
helm install monocular/monocular
そして待って、インストールが終わったら、
【Helm倉庫の使用】
HelmetをHelmウェアハウスとして使用し、K 8 Sクラスタに配備してChartを追加することができます.