Podの作成(起動)は、Kubernetesにコンテナを配備することで行います。
●kubectlコマンドによる配備
■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
■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
以下のコマンドを実行します。
なお、"--namespace"オプションを指定することで配備する名前空間を指定することが可能です。名前空間"kube-system"と"fj-esdp-system"は、製品が予約している名前空間のため、この名前空間には配備しないでください。
$ kubectl apply -f deployments.yml $ kubectl apply -f service.yml
●GitLab Container RegistryからDockerイメージをプルする方法による配備
以下のコマンドを実行します。
$ kubectl create secret docker-registry <secret名> \ --docker-server=<GitLab Container Registryの接続先:30020> \ --docker-username=<製品利用者のGitLabのID> \ --docker-password=<製品利用者のGitLabのパスワード> \ --docker-email=<製品利用者のGitLabに登録されたE-mailアドレス>
<GitLab Container Registryの接続先:30020>については「操作ガイド」-「CI Managementの各サービスへのアクセス先」を参照してください。
・Kubernetesのマニフェストを利用する場合
1) Podを配備するマニフェストを記載します。 以下の例のようにspec.imagePullSecrets.nameに作成した<secret名>を記載します。
apiVersion: v1
kind: Pod
metadata:
name: foo
spec:
containers:
- name: foo
image: <GitLab Container Registryの接続先:30020>sample/sampleapp:v1
imagePullSecrets:
- name: <secret名>
2) kubectlコマンドによる配備を行い、Dockerイメージがプルされることを確認します。
Podの状態が「ImagePullBackOff」の場合は、Dockerイメージのプルが失敗しています。対象Dockerイメージが存在するか、または認証情報に誤りがないかを確認してください。
imageに指定されているイメージ名は適宜、GitLab Container Registryに格納されているイメージの格納先に読み替えて実施してください。
また、GitLab Container Registryからイメージを取得するためには、コンテナが配備されるKubernetes masterサーバーまたはnodeサーバーでGitLab Container Registryの名前解決ができる必要があります。
●Podのデータを永続化する
Podのデータは、Podを削除すると消失します。Podのデータを永続化する場合は、コンテナ用永続ストレージを使用する必要があります。
コンテナ用永続ストレージの利用方法を参照してください。