ページの先頭行へ戻る
Enterprise Service Development Platform V1.1.0 操作ガイド
FUJITSU Software

3.2 Podの作成(起動)

Podの作成(起動)は、Kubernetesにコンテナを配備することで行います。

●kubectlコマンドによる配備

  1. Ansibleサーバにログインします。詳細は、「第1章 共通の操作」を参照してください。

  2. 以下のマニフェストをdeployments.ymlに設定します。設定内容の詳細については、Deploymentのドキュメントを参照してください。
    • Deployment: 配備するコンテナの情報(Dockerイメージ、個数、スペックなど)

    ■deployments.ymlの設定例(Nginxのコンテナを3つ配備する場合)

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 80
  3. 以下のマニフェストをservice.ymlに設定します。設定内容の詳細については、Serviceのドキュメントを参照してください。
    • Service: 払い出したコンテナの公開設定(パスやポート)

    ■service.ymlの設定例(Kubernetesクラスタ外から30036でアクセスする場合)

    kind: Service
    apiVersion: v1
    metadata:
      name: my-service
    spec:
      type: NodePort
      ports:
      - name: http
        port: 80
        targetPort: 80
        nodePort: 30036
        protocol: TCP
      selector:
        app: nginx  
  4. 以下のコマンドを実行します。

    なお、"--namespace"オプションを指定することで配備する名前空間を指定することが可能です。名前空間"kube-system"と"stagehand"は、製品が予約している名前空間のため、この名前空間には配備しないでください。

    >kubectl apply -f deployments.yml
    >kubectl apply -f service.yml

●GitLab Container RegistryからDockerイメージをプルする方法による配備

  1. Ansibleサーバにログインします。詳細は、「第1章 共通の操作」を参照してください。

  2. 認証情報(Secrets)を作成します。 Kubernetesには、Secretsと呼ばれるパスワードや鍵など秘匿性の高いデータをPodからだけ利用できる仕組みがあります。 GitLab Container RegistryからDockerイメージをプルする際には、認証が必要であるため、Secretsを作成します。 Secretsについては、Kubernetes Secretsドキュメントを参照してください。
  3. 以下のコマンドを実行します。

    $ kubectl create secret docker-registry <secret名> \
    --docker-server=172.16.1.0:4567 \
    --docker-username=<製品利用者のGitLabのID> \
    --docker-password=<製品利用者のGitLabのパスワード> \
    --docker-email=<製品利用者のGitLabに登録されたE-mailアドレス>
  4. 作成したsecret名をKubernetesに配備するアプリケーションで指定します。

    ・Kubernetesのマニフェストを利用する場合

    1) Podを配備するマニフェストを記載します。 以下の例のようにspec.imagePullSecrets.nameに作成した<secret名>を記載します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: foo
    spec:
      containers:
        - name: foo
          image: stagehand/sampleapp:v1
      imagePullSecrets:
        - name: <secret名>

    2) kubectlコマンドによる配備を行い、Dockerイメージがプルされることを確認します。

    Podの状態が「ImagePullBackOff」の場合は、Dockerイメージのプルが失敗しています。対象Dockerイメージが存在するか、または認証情報に誤りがないかを確認してください。