Azure Workload Identity 项目教程
1. 项目的目录结构及介绍
Azure Workload Identity 项目的目录结构如下:
azure-workload-identity/
├── charts/
│ └── workload-identity-webhook/
├── cmd/
│ ├── azure-workload-identity/
│ └── workload-identity-webhook/
├── deploy/
│ ├── base/
│ ├── overlays/
│ └── README.md
├── docs/
│ ├── architecture.md
│ ├── developer-guide.md
│ ├── faq.md
│ ├── getting-started.md
│ ├── troubleshooting.md
│ └── use-cases.md
├── pkg/
│ ├── azure/
│ ├── k8s/
│ ├── mutatingwebhook/
│ ├── tokenexchange/
│ └── util/
├── scripts/
│ ├── ci-e2e-tests.sh
│ ├── ci-lint.sh
│ ├── ci-unit-tests.sh
│ └── generate-crds.sh
├── tests/
│ ├── e2e/
│ ├── integration/
│ └── unit/
├── .gitignore
├── .golangci.yml
├── .mergify.yml
├── .pre-commit-config.yaml
├── .travis.yml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── go.mod
├── go.sum
├── LICENSE
├── Makefile
├── README.md
└── SECURITY.md
目录结构介绍
- charts/: 包含 Helm chart 文件,用于部署 workload identity webhook。
- cmd/: 包含项目的入口文件,分为
azure-workload-identity
和workload-identity-webhook
两个子目录。 - deploy/: 包含部署所需的 YAML 文件和配置。
- docs/: 包含项目的文档,如架构、开发者指南、常见问题等。
- pkg/: 包含项目的核心代码,分为多个子包,如
azure
、k8s
、mutatingwebhook
等。 - scripts/: 包含 CI/CD 脚本,如测试、lint 等。
- tests/: 包含项目的测试代码,分为单元测试、集成测试和端到端测试。
- 根目录: 包含项目的配置文件、许可证、Makefile 等。
2. 项目的启动文件介绍
项目的启动文件主要位于 cmd/
目录下:
- cmd/azure-workload-identity/: 包含
main.go
文件,这是 Azure Workload Identity 的主要入口文件。 - cmd/workload-identity-webhook/: 包含
main.go
文件,这是 workload identity webhook 的主要入口文件。
启动文件介绍
- main.go: 这是项目的入口文件,负责初始化配置、启动服务等。
package main
import (
"os"
"k8s.io/klog/v2"
"github.com/Azure/azure-workload-identity/pkg/webhook"
)
func main() {
config := webhook.NewConfig()
if err := config.LoadFromEnv(); err != nil {
klog.Fatal(err)
}
server := webhook.NewServer(config)
if err := server.Run(); err != nil {
klog.Fatal(err)
}
}
3. 项目的配置文件介绍
项目的配置文件主要位于 deploy/
目录下:
- deploy/base/: 包含基础的 YAML 文件,用于部署 workload identity。
- deploy/overlays/: 包含不同环境的覆盖配置文件。
配置文件介绍
- deploy/base/deployment.yaml: 包含 workload identity 的部署配置。
- deploy/base/service.yaml: 包含 workload identity 的服务配置。
- deploy/base/mutatingwebhook.yaml: 包含 mutating webhook 的配置。
apiVersion: apps/v1
kind: Deployment
metadata:
name: workload-identity-webhook
spec:
replicas: 1
selector:
matchLabels:
app: workload-identity-webhook
template:
metadata: