このトピックでは、アプリケーション管理に関するよくある質問について説明します。
Helm を手動でアップグレードするにはどうすればよいですか。
Kubernetes クラスターでプライベートイメージを使用するにはどうすればよいですか。
次のコマンドを実行します。
kubectl create secret docker-registry regsecret --docker-server=registry-internal.cn-hangzhou.aliyuncs.com --docker-username=abc@aliyun.com --docker-password=xxxxxx --docker-email=abc@aliyun.com
注
regsecret
: シークレットの名前。--docker-server
: Docker レジストリのアドレス。--docker-username
: Docker リポジトリのユーザー名。--docker-password
: Docker リポジトリのログインパスワード。--docker-email
: 任意。 メールアドレス。
次の操作を実行することもできます。
- プライベートイメージの手動設定
YAML 構成ファイルへのシークレットを追加します。
containers: - name: foo image: registry-internal.cn-hangzhou.aliyuncs.com/abc/test:1.0 imagePullSecrets: - name: regsecret
注imagePullSecrets
は、イメージをプルするときにシークレットの必須化を指定します。regsecret
は、以前に設定されたシークレット名と同じでなければなりません。image
の Docker レジストリアドレスは、--docker-server
で指定されたものと同じでなければなりません。
詳細については、「プライベートレジストリの使用」をご参照ください。
- シークレットなしでオーケストレーションを実装
注 アプリケーションのデプロイにプライベートイメージを使用するたびにシークレットを参照することを避けるために、名前空間のデフォルトサービスアカウントにシークレットを追加できます。 詳細については、「サービスアカウントに ImagePullSecrets を追加」をご参照ください。
- 次のコマンドを実行して、プライベートイメージをプルするために必要なシークレットを表示します。
この例では、名前空間のデフォルトサービスアカウントを手動で設定し、このシークレットを imagePullSecret として使用します。# kubectl get secret regsecret NAME TYPE DATA AGE regsecret kubernetes.io/dockerconfigjson 1 13m
- sa.yaml ファイルを作成し、このファイルにデフォルトサービスアカウントの設定を追加します。
kubectl get serviceaccounts default -o yaml > ./sa.yaml cat sa.yaml apiVersion: v1 kind: ServiceAccount metadata: creationTimestamp: 2015-08-07T22:02:39Z name: default namespace: default resourceVersion: "243024" ## このパラメーターに注目 selfLink: /api/v1/namespaces/default/serviceaccounts/default uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6 secrets: - name: default-token-uudgeoken-uudge
vim sa.yaml
コマンドを実行して、sa.yaml ファイルを開きます。resourceVersion パラメーターを削除し、imagePullSecrets パラメーターを追加して、イメージをプルするためのシークレットを指定します。 変更された設定は次のとおりです。apiVersion: v1 kind: ServiceAccount metadata: creationTimestamp: 2015-08-07T22:02:39Z name: default namespace: default selfLink: /api/v1/namespaces/default/serviceaccounts/default uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6 secrets: - name: default-token-uudge imagePullSecrets: ## 新しいパラメーター - name: regsecret
- sa.yaml ファイルの構成を使用して、デフォルトのサービスアカウント設定を置き換えます。
kubectl replace serviceaccount default -f ./sa.yaml serviceaccount "default" replaced
- kubectl create -f コマンドを実行し、Tomcat アプリケーションを作成します。
apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: tomcat-deployment labels: app: tomcat spec: replicas: 1 selector: matchLabels: app: tomcat template: metadata: labels: app: tomcat spec: containers: - name: tomcat image: registry-internal.cn-hangzhou.aliyuncs.com/abc/test:1.0 # 値を自分のプライベートイメージのアドレスに置き換え ports: - containerPort: 8080
- 構成が正しい場合、Pod が起動します。 kubectl get pod tomcat-xxx -o yaml コマンドを実行します。 コマンド出力で以下の設定を見つけることができます。
spec: imagePullSecrets: - nameregsecretey
- 次のコマンドを実行して、プライベートイメージをプルするために必要なシークレットを表示します。