mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-08-10 08:27:25 +00:00
docs(content): harden Kubernetes and supply-chain examples
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
Kubernetes 的最小调度单位是 `Pod`。一个 `Pod` 由一组紧密协作的容器构成,它们共享网络命名空间、IP 以及部分存储资源,也可以根据需要对 Pod 进行端口映射。
|
Kubernetes 的最小调度单位是 `Pod`。一个 `Pod` 由一组紧密协作的容器构成,它们共享网络命名空间、IP 以及部分存储资源,也可以根据需要对 Pod 进行端口映射。
|
||||||
|
|
||||||
如果你已经熟悉 Docker,可以用以下对照来理解 Kubernetes 的核心概念:Docker 中的"容器"对应 Kubernetes 的 `Pod`(一个或多个容器的组合);`docker-compose.yml` 的角色类似于 Kubernetes 的 `Deployment` + `Service` 声明;`docker run` 的端口映射和网络配置,在 Kubernetes 中由 `Service` 和 `Ingress` 接管。掌握这些映射关系,有助于从单机 Docker 平滑过渡到集群编排。
|
如果你已经熟悉 Docker,可以用以下对照来理解 Kubernetes 的核心概念:Docker 中的“容器”对应 Kubernetes 的 `Pod`(一个或多个容器的组合);`docker-compose.yml` 的角色类似于 Kubernetes 的 `Deployment` + `Service` 声明;`docker run` 的端口映射和网络配置,在 Kubernetes 中由 `Service` 和 `Ingress` 接管。掌握这些映射关系,有助于从单机 Docker 平滑过渡到集群编排。
|
||||||
|
|
||||||
本章将分为 5 节介绍 `Kubernetes`:
|
本章将分为 5 节介绍 `Kubernetes`:
|
||||||
|
|
||||||
|
|||||||
@@ -68,9 +68,11 @@ $ sudo apt-get install uidmap
|
|||||||
$ su - testuser
|
$ su - testuser
|
||||||
```
|
```
|
||||||
|
|
||||||
3. 运行 Docker 官方提供的 Rootless 安装脚本:
|
3. 下载并检查 Docker 官方提供的 Rootless 安装脚本,确认来源和内容后再执行:
|
||||||
```bash
|
```bash
|
||||||
$ curl -fsSL https://get.docker.com/rootless | sh
|
$ curl -fsSL https://get.docker.com/rootless -o install-rootless-docker.sh
|
||||||
|
$ less install-rootless-docker.sh
|
||||||
|
$ sh install-rootless-docker.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
4. 配置环境变量指向新创建的私有 socket:
|
4. 配置环境变量指向新创建的私有 socket:
|
||||||
|
|||||||
@@ -502,29 +502,29 @@ variables:
|
|||||||
|
|
||||||
build:
|
build:
|
||||||
stage: build
|
stage: build
|
||||||
image: docker:latest
|
image: docker:<version>-cli@sha256:<docker-cli-digest>
|
||||||
services:
|
services:
|
||||||
- docker:dind
|
- name: docker:<version>-dind@sha256:<docker-dind-digest>
|
||||||
script:
|
script:
|
||||||
- docker build -t $IMAGE_NAME:$CI_COMMIT_SHA .
|
- docker build -t $IMAGE_NAME:$CI_COMMIT_SHA .
|
||||||
- docker save $IMAGE_NAME:$CI_COMMIT_SHA > image.tar
|
- docker save $IMAGE_NAME:$CI_COMMIT_SHA > image.tar
|
||||||
|
|
||||||
scan:trivy:
|
scan:trivy:
|
||||||
stage: scan
|
stage: scan
|
||||||
image: aquasec/trivy:latest
|
image: aquasec/trivy:<version>@sha256:<trivy-digest>
|
||||||
script:
|
script:
|
||||||
- trivy image --severity HIGH,CRITICAL --exit-code 1 docker-archive://image.tar
|
- trivy image --severity HIGH,CRITICAL --exit-code 1 docker-archive://image.tar
|
||||||
allow_failure: false
|
allow_failure: false
|
||||||
|
|
||||||
scan:grype:
|
scan:grype:
|
||||||
stage: scan
|
stage: scan
|
||||||
image: anchore/grype:latest
|
image: anchore/grype:<version>@sha256:<grype-digest>
|
||||||
script:
|
script:
|
||||||
- grype docker-archive://image.tar
|
- grype docker-archive://image.tar
|
||||||
|
|
||||||
generate:sbom:
|
generate:sbom:
|
||||||
stage: scan
|
stage: scan
|
||||||
image: anchore/syft:latest
|
image: anchore/syft:<version>@sha256:<syft-digest>
|
||||||
script:
|
script:
|
||||||
- syft docker-archive://image.tar -o cyclonedx > sbom.xml
|
- syft docker-archive://image.tar -o cyclonedx > sbom.xml
|
||||||
artifacts:
|
artifacts:
|
||||||
@@ -533,9 +533,9 @@ generate:sbom:
|
|||||||
|
|
||||||
push:
|
push:
|
||||||
stage: push
|
stage: push
|
||||||
image: docker:latest
|
image: docker:<version>-cli@sha256:<docker-cli-digest>
|
||||||
services:
|
services:
|
||||||
- docker:dind
|
- name: docker:<version>-dind@sha256:<docker-dind-digest>
|
||||||
script:
|
script:
|
||||||
- docker load < image.tar
|
- docker load < image.tar
|
||||||
- echo "$REGISTRY_PASSWORD" | docker login --username "$REGISTRY_USER" --password-stdin "$REGISTRY"
|
- echo "$REGISTRY_PASSWORD" | docker login --username "$REGISTRY_USER" --password-stdin "$REGISTRY"
|
||||||
@@ -550,13 +550,11 @@ push:
|
|||||||
|
|
||||||
sign:
|
sign:
|
||||||
stage: sign
|
stage: sign
|
||||||
image: gcr.io/projectsigstore/cosign:latest
|
image: gcr.io/projectsigstore/cosign:<version>@sha256:<cosign-digest>
|
||||||
script:
|
script:
|
||||||
- cosign sign --key $COSIGN_KEY "$(cat image-digest.txt)"
|
- cosign sign --key $COSIGN_KEY "$(cat image-digest.txt)"
|
||||||
only:
|
only:
|
||||||
- main
|
- main
|
||||||
only:
|
|
||||||
- main
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 18.6.6 常见问题与最佳实践
|
### 18.6.6 常见问题与最佳实践
|
||||||
|
|||||||
@@ -66,7 +66,8 @@ deploy_staging:
|
|||||||
stage: deploy
|
stage: deploy
|
||||||
image: dtzar/helm-kubectl
|
image: dtzar/helm-kubectl
|
||||||
script:
|
script:
|
||||||
- kubectl config set-cluster k8s --server=$KUBE_URL --insecure-skip-tls-verify=true
|
- printf '%s' "$KUBE_CA_PEM" > kube-ca.crt
|
||||||
|
- kubectl config set-cluster k8s --server=$KUBE_URL --certificate-authority=kube-ca.crt --embed-certs=true
|
||||||
- kubectl config set-credentials admin --token=$KUBE_TOKEN
|
- kubectl config set-credentials admin --token=$KUBE_TOKEN
|
||||||
- kubectl config set-context default --cluster=k8s --user=admin
|
- kubectl config set-context default --cluster=k8s --user=admin
|
||||||
- kubectl config use-context default
|
- kubectl config use-context default
|
||||||
|
|||||||
Reference in New Issue
Block a user