このトピックでは、アプリケーション管理に関するよくある質問について説明します。

Helm を手動でアップグレードするにはどうすればよいですか。

  1. Kubernetes クラスターのマスターノードにログインします。 詳細については、「kubectl を利用した Kubernetes クラスターへの接続」をご参照ください。
  2. 次のコマンドを実行します。
    イメージアドレスには、対象のリージョンの VPC ネットワークのイメージのアドレスを入力します。 たとえば、サーバーが中国 (杭州) リージョンに展開されている場合、イメージアドレスは registry-vpc.cn-hangzhou.aliyuncs.com/acs/tiller:v2.11.0 です。
    helm init --tiller-image registry.cn-hangzhou.aliyuncs.com/acs/tiller:v2.11.0 --upgrade
  3. tiller ヘルスチェックが成功すると、helm version コマンドを実行してアップグレード結果を表示できます。
    上記のコマンドは、Helm のサーバー側コンポーネントである Tiller のみをアップグレードします。 クライアント側コンポーネントをアップグレードするには、対応するクライアントバイナリをダウンロードします。
    Helm クライアント 2.11.0 は、こちらからダウンロードできます。 現在、Alibaba Cloud がサポートしている Helm の最新バージョンは 2.11.0 です。
  4. Helm のクライアント側とサーバー側の両方のコンポーネントがアップグレードされたら、helm version コマンドを実行します。次の情報が表示されます。
    $ helm version
    Client: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}
    Server: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}

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 を追加」をご参照ください。
    1. 次のコマンドを実行して、プライベートイメージをプルするために必要なシークレットを表示します。
      # kubectl get secret regsecret
      NAME        TYPE                             DATA      AGE
      regsecret   kubernetes.io/dockerconfigjson   1         13m
      この例では、名前空間のデフォルトサービスアカウントを手動で設定し、このシークレットを imagePullSecret として使用します。
    2. 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
    3. 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
      
      									
    4. sa.yaml ファイルの構成を使用して、デフォルトのサービスアカウント設定を置き換えます。
      kubectl replace serviceaccount default -f ./sa.yaml
      serviceaccount "default" replaced
    5. 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
    6. 構成が正しい場合、Pod が起動します。 kubectl get pod tomcat-xxx -o yaml コマンドを実行します。 コマンド出力で以下の設定を見つけることができます。
      spec:
        imagePullSecrets:
      - nameregsecretey