サポートページ
ダウンロード
以下のファイルをダウンロードできます。圧縮ファイルをダウンロードしていただき,適宜解凍してご利用ください。
収録内容にミスがありましたため,内容を更新しました。2020年12月14日以前にダウンロードされた方は,お手数ですが,再度ダウンロードし直してください。
(2021年6月9日更新)
- ダウンロード
- サンプルファイル(20210609版)
補足情報
(2021年6月9日更新)
「5.10 Ingress」のデプロイ手順(P.194)
Kubernetes1.16系以降を利用している場合は,次のようにデプロイします。
URLを変更します。
$ kubectl apply -f \
https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.46.0/deploy/static/provider/cloud/deploy.yaml
「5章のコラム freshpodでイメージの更新を検知し,Podを自動更新する」のkubectlの指定(P.197)
URLを変更します。
修正前 |
|
---|---|
修正後 |
|
「5章のコラム Kubernete API」のAPI名(P.200)
一部の表示がなくなります。diff形式で記します。
$ kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
- apps/v1beta1
- apps/v1beta2
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
...
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1
「5章のコラム Kubernete API」のAPI周りの解説(P.200)
extensions/v1beta1をnetworking.k8s.io/v1beta1に読み替えてください。
修正前 | Ingressのように`extensions/v1beta1`といったAPIに属しているリソースも存在します。Kubernetesでは新しい機能のリソースはアルファ版やベータ版として取り込まれることも多く、安定版に到達するまではAPIやマニフェストファイルのスキーマにも変更が入ります。`xxx/v1beta1`、`xxx/v1beta2`といった形式のAPIが存在するのはそのためです。Kubernetesのバージョンが上がるにつれて、サポートされるAPIは増えていきます。 |
---|---|
修正後 | Ingressのように`networking.k8s.io/v1beta1`といったAPIに属しているリソースも存在します。Kubernetesでは新しい機能のリソースはアルファ版やベータ版として取り込まれることも多く、安定版に到達するまではAPIやマニフェストファイルのスキーマにも変更が入ります。`xxx/v1beta1`、`xxx/v1beta2`といった形式のAPIが存在するのはそのためです。Kubernetesのバージョンが上がるにつれて、サポートされるAPIは増えていきます。 |
「7.3.6 独自のChartを作成する」の「Ingress」のシンプルな定義(P.258)
extensions/v1beta1をnetworking.k8s.io/v1beta1に読み替えてください。
diff形式で記します。
- apiVersion: extensions/v1beta1
+ apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: echo
spec:
rules:
- host: ch06-echo.gihyo.local
http:
paths:
- backend:
serviceName: echo
servicePort: 80
「7.3.6 独自のChartを作成する」の「Ingress」の生成されたひな形(P.258〜P.259)
extensions/v1beta1をnetworking.k8s.io/v1beta1に読み替えてください。
diff形式で記します。
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "echo.fullname" . -}}
{{- $servicePort := .Values.service.port -}}
{{- $ingressPath := .Values.ingress.path -}}
- apiVersion: extensions/v1beta1
+ apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
app: {{ template "echo.name" . }}
chart: {{ template "echo.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ . }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: http
{{- end }}
{{- end }}
Goのバージョンアップに伴う動作不良について
(2020年2月13日更新)
書籍中ではDockerfileの作成にgolang:1.9の指定を主に用いてきましたが,Go本体や関連ライブラリのアップデートでgolang:1.9だと動作しません。書籍中のgolang:1.9で解説をしていた箇所はいずれもgolang:1.13に変更した上でお試しください。サンプルファイルではバージョンを変更したものを配布しています。
P.204 # 6.1.3 Google Kubernetes Engineのバージョン指定
書籍中で指定していたKubernetes EngineのCluster Versionが古く動作しなくなっていました。下記のように適宜バージョンを書き換えて利用してください。
|
P.204 # 6.1.3の脚注6の内容
Google Kubernetes Engineのバージョン指定の変更に伴い,脚注6の内容を下記の通り改めます。
旧 | 詳細は割愛します。ドキュメントを参照してください。 https://cloud.google.com/kubernetes-engine/versioning-and-upgrades#specifyung_cluster_version |
---|---|
新 | gcloud container get-server-config --zone asia-northeast1 コマンドで出力されるvalidMasterVersionsの中で任意のバージョン。 |
P.245 # 7.3.1のHelmインストール
書籍ではHelm v2系の利用を想定していましたが,現在一部互換性のないHelm v3系が登場して書籍指示通りの操作だと動作しなくなっています。Helmのインストールについては下記の通り読み替えてください。
旧 | HelmのリリースページからHelm最新バージョンを取得してインストールしてください。 |
---|---|
新 | Helmのリリースページからv2系の最新バージョンを取得してインストールしてください。 |
P.158 # 4.5.4 todo-frontend.ymlが動作しない
(2019年10月4日更新)
todo-frontned.ymlのコードが動作しなくなっていました。
下記のとおり,修正したものを実行してください。
原因については現在調査中です。
|
P.290 # 8.1.5の連携が動作しない
(2019年2月4日更新)
イメージの更新に伴い,書籍中のコードでは動作しません。サンプルファイルを参照し,そのファイルで実行してください。
(以下2018年11月13日更新)
P.252 # 7.3.5の最後の実行例のheml install
Chartの更新に伴い,kubectl describeの適用ができなくなっていました。
下記のようにバージョンを固定して動作させてください。
|
(以下2018年10月2日更新)
Docker Toolboxを用いた際の2章などのlocalhostへのアクセス例について
Docker Toolboxでは書籍中に示したようなlocalhostへのアクセスが動作しません。
代わりに192.168.99.100などのIPアドレスを指定して動作させます。
このIPアドレスはdocker-machine default ipで取得します。
なお,本書ではDocker for Windows/Macを主な動作対象として検証しております。
ここでのDocker Toolboxの使い方に関する説明はあくまで補足的なもので,Docker Toolboxの操作方法等についてはご質問を受け付けておりません。
お詫びと訂正(正誤表)
下記の誤りがありました。ご迷惑をおかけいたしました。
(2021年2月3日最終更新)
P.94 Data Volumeの破棄とステートフルな実行の説明
誤 | また、Data Volumeをコンテナの破棄してもディスクに保持されるので、コンテナでステートフルなアプリケーションを実行する用途に向いています。 |
---|---|
正 | また、Data Volumeのコンテナを破棄してもディスクに保持されるので、コンテナでステートフルなアプリケーションを実行する用途に向いています。 |
(以下2020年12月15日更新)
P.61 # 2.3.2 docker container runのオプションに関する説明
誤 | 必然的に-dや-pプションの利用は多くなります |
---|---|
正 | 必然的に-dや-pオプションの利用は多くなります |
P.149 4.4.2 NginxのDockerfile
Dockerfileの記述が一部誤っていました。正しくは下記です。
|
P.156からP.157 # 4.5.3のDockerfile-nuxtの内容
本来\(バックスラッシュ)にすべき部分がvになっていました。またCMDの指示が正しくありませんでした。
正しくは下記です。
|
(以下2020年6月2日更新)
P.98 # 3.4.2の最後の実行例
不要なバッククォートが残っていました。
誤 |
|
---|---|
正 |
|
P.293 # 8.1.5のyamlを適用する部分の説明
誤 | 次のようにelasticsearch.yamlを反映します。KibanaのServiceは`kube-system`に配置されているので、`-n`オプションでNamespaceである`kube-system`を指定します。 |
---|---|
正 | 次のようにkibana.yamlを反映します。 |
(以下2020年2月13日更新)
P.147 # 4.4.1 「nginx.confを構築する」の「バックエンドサーバの振り分け―etc/nginx/conf.d/upstream.conf.tmpl」のupstreamディレクティブの説明をしている箇所
誤 | プロキシ先はNginxのproxy_passディレクティブに直接記述することも可能ですが、upstreamディレクトリを定義すると |
---|---|
正 | プロキシ先はNginxのproxy_passディレクティブに直接記述することも可能ですが、upstreamディレクティブを定義すると |
P.152 # 4.5.1 scriptタグに関する説明
誤 | HTMLテンプレートとAPIからデータを取得する処理を起こっているscriptタグで構成されますが |
---|---|
正 | HTMLテンプレートとAPIからデータを取得する処理を行っているscriptタグで構成されますが |
P.176 # 5.5 Namespaceに関する説明
誤 | Namespaceごとにに操作権限を設定できるので |
---|---|
正 | Namespaceごとに操作権限を設定できるので |
P.204 # 6.1.3のGKEのバージョンに関する説明
解説内の一部文書が抜けていました。
誤 | ここでは`--cluster-version`で作成するKubernetesクラスタのバージョン、 |
---|---|
正 | ここでは`--cluster-version`で作成するKubernetesクラスタのバージョンを指定します。GKEでは古いバージョンを利用できなくなることもあるので注意が必要です。 |
P.326 # 9.2.1の「ルート証明書」のコード実行例
本来ch09を指定すべき箇所が,ch08になっていました。
誤 | docker image build -t ch08/hello:latest . |
---|---|
正 | docker image build -t ch09/hello:latest . |
P.395 # C.2 Dockerfile表中のUSERに関する表記
誤 | USER定義後後のRUNもそのユーザー |
---|---|
正 | USER定義後のRUNはそのユーザー |
(以下2019年11月26日更新)
P.147 # 4.4.1 「nginx.confを構築する」の「バックエンドサーバの振り分け―etc/nginx/conf.d/upstream.conf.tmpl」のupstreamディレクティブの説明をしている箇所
誤 | プロキシ先はNginxのproxy_passディレクティブに直接記述することも可能ですが、upstreamディレクトリを定義すると |
---|---|
正 | プロキシ先はNginxのproxy_passディレクティブに直接記述することも可能ですが、upstreamディレクティブを定義すると |
P.152 # 4.5.1 scriptタグに関する説明
誤 | HTMLテンプレートとAPIからデータを取得する処理を起こっているscriptタグで構成されますが |
---|---|
正 | HTMLテンプレートとAPIからデータを取得する処理を行っているscriptタグで構成されますが |
P.176 # 5.5 Namespaceに関する説明
誤 | Namespaceごとにに操作権限を設定できるので |
---|---|
正 | Namespaceごとに操作権限を設定できるので |
(以下2019年8月28日更新)
なお,正誤表をページ順に並べ替えたPDFを用意しました。
P.156 # 4.5.3のDockerfile-nuxt
本来バックスラッシュを挿入すべき箇所がvになっていました。
またCMD以降の指定の記法がnginxのものと異なっていました。正しいコードは下記です。
コメントは実際には実行時にエラーになるので適宜外して実行してください。
|
(以下2019年6月11日更新)
P.86 # 3.1.1の脚注2
誤 | 外側からdocekr stopなどで |
---|---|
正 | 外側からdocker stopなどで |
P.213〜214 # 6.4 todo-api.yamlの内容
Deployment.spec.template.metadata.labelsの指定で本来appとすべき箇所がnameになっていました。
正しいのは下記のコードです。
|
P.235 # 7.2の節内での今後の作業の進め方を説明した箇所
本来はパブリッククラウドで検証する部分でしたが,誤ってローカルKubernetes環境としていました。
誤 | 以後、ローカルKubernetes環境を利用して実際にRBAC関連リソースを作成し、認証ユーザーで認証を行った上でのKubernetesの操作を行います。次に、ServiceAccountを利用したPodからのKubernetes API利用について解説します。 |
---|---|
正 | 以後、パブリッククラウドを想定して実際にRBAC関連リソースを作成し、認証ユーザーで認証を行った上でのKubernetesの操作を行います。次に、ServiceAccountを利用したPodからのKubernetes API利用について解説します。 |
P.235 # 7.2.1のリソースに関する表の上の説明文
本来はパブリッククラウドで検証する部分でしたが,誤ってローカルKubernetes環境としていました。
誤 | これらのリソースを使用して、ローカルKubernetes環境で認証ユーザーの権限制御を行ってみましょう。 |
---|---|
正 | これらのリソースを使用して、認証ユーザーの権限制御を行ってみましょう。 |
(以下2019年3月6日更新)
P.37 # 2.1.1のコンテナ停止のコマンド実行例
誤 |
|
---|---|
正 |
|
(以下2019年2月4日更新)
P.218 # 6.5のリスト
6.5の最下部のkubectl apply -f ingress.yamlは正しくは6.6のファイル表記の下に配置されます。
P.142 # 4.3.6のリスト
ファイル名が誤っていました。
誤 | todomysql_master |
---|---|
正 | todo_mysql_master |
誤 | todmysql_slave |
---|---|
正 | todo_mysql_slave |
正しいリストの全体像を以下に掲載します。
正 |
|
---|
(以下2018年10月2日更新)
P.46 # 2章の脚注21
誤 | exmaple/echo |
---|---|
正 | example/echo |
P.75 # 2.6.1の最初のリストのjenkinsのイメージ名
書籍中で指定したイメージ名,バージョンでは動作しなくなってしまいました。
jenkinsci/jenkins:2.142-slimを利用してください。
誤 |
|
---|---|
正 |
|
P.78 # 2.6.3の最初のリストのjenkinsのイメージ名
書籍中で指定したイメージ名,バージョンでは動作しなくなってしまいました。
下記の通り修正してください。
|
P.80 # 2.6.3の「最終調整」の実行例
プラグインのバージョンが上がったことで書籍の通りには動作しなくなりました。
誤 | 「秘密鍵」はJenkinsマスター上の~/.sshからを選択します。 |
---|---|
正 |
「秘密鍵」にはホストの./jenkins_home/.ssh/id_rsaの内容を貼り付けます。![]() |
画像をクリックすると大きく表示できます。
P.105 # 3.5.2の説明文
誤 | Dockerイメージはregistyコンテナにpushしてある |
---|---|
正 | Dockerイメージはregistryコンテナにpushしてある |
P.129 # 4.2.5のスクリプト名の誤り
誤 | dd-server-id.shをdocker-entrypoint.shの前に実行できます。 |
---|---|
正 | add-server-id.shをdocker-entrypoint.shの前に実行できます。 |
P.146 # 4.4.1の「バックエンドサーバの振り分けの設定値」コード部分と続く解説
動作はしますがfailsのつづりを誤っていました。
誤 | BACKEND_MAX_FAILES |
---|---|
正 | BACKEND_MAX_FAILS |
P.150 # 4.4.3のコード部分の設定値
動作はしますがfailsのつづりを誤っていました。
誤 | BACKEND_MAX_FAILES |
---|---|
正 | BACKEND_MAX_FAILS |
P.158 # 4.5.4のコード部分の設定値
動作はしますがfailsのつづりを誤っていました。
誤 | BACKEND_MAX_FAILES |
---|---|
正 | BACKEND_MAX_FAILS |
P.334 # 9.2.3の「パッケージマネージャapkを操作する」のapk delに関する解説
本来リスト外に出るべき解説箇所が,誤ってリスト内に入ってしまっていました。
下記部分はリスト外の解説分です。
|
P.398 # helm packageの書式
誤 | helm pacakge [options] Chartへのパス |
---|---|
正 | helm package [options] Chartへのパス |
(以下2018年9月18日更新)
P.194 # 5.10.1 の冒頭の実行例
誤 |
|
---|---|
正 |
|
(以下2018年9月11日更新)
P.131 # 4.2.6のtodo-mysql.ymlの表記
MYSQL_ROOT_PASSWORDを文中で二回設定していました。正しくは一回です。
誤 |
|
---|---|
正 |
|
P.156 # 4.5.3のnuxt.conf.tmplのerror_logの設定
誤 |
|
---|---|
正 |
|
P.160 # 4.5.4のdockerコマンド実行例の1行目
誤 |
|
---|---|
正 |
|
P.194 # 5.10の実行例
-fオプションの位置が誤っていました。
誤 |
|
---|---|
正 |
|
P.312 # 8.3.2の脚注13
誤 | Pod AntiAaffinity |
---|---|
正 | Pod AntiAffinity |
P.321 # 9.1.1のオートスケールの説明に関する文章
誤 | 新規のノードが追加されるます。 |
---|---|
正 | 新規のノードが追加されます。 |
(以下2018年9月5日更新)
P.86 # 3.1.1のDockerイメージビルド時の表示
誤 |
|
---|---|
正 |
|
(以下2018年9月4日更新)
P.109 # 3.5.3のStackのサブコマンドに関する表
rmとservicesで項目が逆になっていました。
誤 | rm Stack内のService一覧を表示する |
---|---|
正 | rm デプロイされているStackを削除する |
誤 | services デプロイされているStackを削除する |
---|---|
正 | services Stack内のService一覧を表示する |
P.227 # 7.1の脚注4
誤 | 失敗したiPod |
---|---|
正 | 失敗したPod |
P.310 # 8.3.2の下の見出し
誤 | Node障害の際にKubernetesの挙動 |
---|---|
正 | Node障害時のKubernetesの挙動 |
(以下2018年8月24日更新)
P.37 # 2.1のコンテナ停止の説明
誤 | コマンド停止させられます。 |
---|---|
正 | コマンドで停止させられます。 |
P.211 # 6.3.3のyamlの反映ファイル名
誤 | mysql-master.yamb |
---|---|
正 | mysql-master.yaml |
P.352 # 10.2.1のタグ付けのイメージ名
誤 | ch09/jq:latest |
---|---|
正 | ch10/jq:latest |
P.358 # 10.3.1の最後のコマンド実行例
誤 | ch09-locust.yml |
---|---|
正 | ch10-locust.yml |