我正在尝试使用在 Docker 容器中运行的 Halyard 将 Spinnaker 部署到 k8s 集群。问题是,我已经使用
hal
命令配置了所有内容,但官方文档说有一种方法可以使用自定义配置文件来完成此操作。
因此,我尝试创建自定义配置文件,将它们放入
.hal/${DEPLOYMENT}/profiles
中,但是当我使用 hal deploy apply --deployment ...
时 - 它只是复制我的配置文件而不应用它们。
这是第一个问题。
其次,我尝试在这些配置文件中配置所有内容,并运行
hal deploy apply --deployment ...
,期望 Halyard 会看到这些文件已经存在,并且他可以使用它们,但它总是失败告诉我 Persistant storage type is not configured!
。
我不明白如何只准备自定义文件,以及将它们放在哪里,所以我只能使用
hal deploy apply
,噗!配置的所有内容均已部署!
您能否描述一下将这些文件放在哪里,以及如何使用它们来运行部署?或者也许我做错了什么?
例如这个,我已经放入了
.hal/${DEPLOYMENT}/profiles/gate-local.yml
:
security:
basic:
enabled: true
apiSecurity:
overrideBaseUrl: https://<domain-api>
uiSecurity:
overrideBaseUrl: https://<domain-ui>
authn:
oauth2:
enabled: true
client:
clientId: XXXXXXXXXXXXXXXX
clientSecret: XXXXXXXXXXXXXXXX
accessTokenUri: https://XXXXXXXXXXXXXXXX/token
userAuthorizationUri: https://XXXXXXXXXXXXXXXX/auth
scope: openid,email,profile,groups
resource:
userInfoUri: https://XXXXXXXXXXXXXXXX/userinfo
userInfoMapping:
email: email
firstName: given_name
lastName: family_name
username: preferred_username
这是我的
front50-local.yml
总是失败的例子:
persistentStorage:
persistentStoreType: s3
s3:
bucket: XXXXXXXXXXXXXX
rootFolder: front50
pathStyleAccess: true
endpoint: https://XXXXXXXXXXXXXX
accessKeyId: XXXXXXXXXXXXXX
secretAccessKey: XXXXXXXXXXXXXX
enabled: true
等等。如果我使用 Hal 命令来配置,它就可以工作,但我想再次:
hal deploy apply
现在,我找到了解决我问题的办法。 我不使用
front50-local.yml
进行配置,它显然与主 config
文件中的配置一起使用。
但是,通过OpenId遇到了roles
的问题。
找到了一种用 gate-local.yml
覆盖它的方法,它对某人可能有用:
我已经在 main 中通过了这一部分
config
:
security:
apiSecurity:
overrideBaseUrl: https://domain-api.example
uiSecurity:
overrideBaseUrl: https://domain-deck.example
authn:
oauth2:
enabled: true
client:
clientId: XXXXXXXX
clientSecret: XXXXXXXX
accessTokenUri: XXXXXXXX
userAuthorizationUri: XXXXXXXX
resource:
userInfoUri: XXXXXXXX
userInfoMapping: {}
provider: OTHER
这部分在
gate-local.yml
:
security:
oauth2:
userInfoMapping:
email: email
firstName: given_name
lastName: family_name
username: username
roles: groups
client:
scope: openid,email,profile,groups,roles
请注意,该映射可能与上面描述的不同。 最后,这个配置成功通过了,现在我可以看到我的角色从Keycloak传递过来了
https://domain-api.example/auth/user
关于提供商。主要部分
config
:
providers:
kubernetes:
enabled: true
其余设置在
clouddriver-local.yml
:
kubernetes
accounts:
- name: XXXXX
context: XXXX
providerVersion: V2
kubeconfigContents: encrypted:k8s!n:secret_name!k:secret_value
namespaces: [] #Access to ALL namespaces
permissions:
READ:
- everyone
WRITE:
- group1
- group2
- group3
EXECUTE:
- the-same-way
CREATE:
- the-same-way
requiredGroupMembership: [] #Empty yet
configureImagePullSecrets: true
cacheThreads: 1
dockerRegistries: []
primaryAccount: XXXXXX
尽管如此,我确实使用 Spinnaker-operator 在 k8s 中进行部署。使用它进行部署会更容易一些,而不是面对
hal
命令本身。
似乎是我的问题的解决方案!希望它能帮助别人!